diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml new file mode 100644 index 0000000000000..26dd1b4bcfc3c --- /dev/null +++ b/.buildkite/ftr_configs.yml @@ -0,0 +1,236 @@ +disabled: + # TODO: Enable once RBAC timeline search strategy test updated + - x-pack/test/timeline/security_and_spaces/config_basic.ts + + # Base config files, only necessary to inform config finding script + - test/functional/config.base.js + - x-pack/test/functional/config.base.js + - x-pack/test/detection_engine_api_integration/security_and_spaces/config.base.ts + - x-pack/test/functional_enterprise_search/base_config.ts + - test/server_integration/config.base.js + + # QA suites that are run out-of-band + - x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js + - x-pack/test/upgrade/config.ts + - test/functional/config.edge.js + - x-pack/test/functional/config.edge.js + + # Cypress configs, for now these are still run manually + - x-pack/test/fleet_cypress/cli_config.ts + - x-pack/test/fleet_cypress/config.ts + - x-pack/test/fleet_cypress/visual_config.ts + - x-pack/test/functional_enterprise_search/cypress.config.ts + - x-pack/test/osquery_cypress/cli_config.ts + - x-pack/test/osquery_cypress/config.ts + - x-pack/test/osquery_cypress/visual_config.ts + - x-pack/test/security_solution_cypress/cases_cli_config.ts + - x-pack/test/security_solution_cypress/ccs_config.ts + - x-pack/test/security_solution_cypress/cli_config.ts + - x-pack/test/security_solution_cypress/config.firefox.ts + - x-pack/test/security_solution_cypress/config.ts + - x-pack/test/security_solution_cypress/response_ops_cli_config.ts + - x-pack/test/security_solution_cypress/upgrade_config.ts + - x-pack/test/security_solution_cypress/visual_config.ts + - x-pack/test/functional_enterprise_search/with_host_configured.config.ts + - x-pack/plugins/apm/ftr_e2e/ftr_config_run.ts + - x-pack/plugins/apm/ftr_e2e/ftr_config.ts + - x-pack/plugins/synthetics/e2e/config.ts + + # Configs that exist but weren't running in CI when this file was introduced + - test/visual_regression/config.ts + - x-pack/test/visual_regression/config.ts + - x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/config.ts + - x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/config.ts + - x-pack/test/alerting_api_integration/spaces_only_legacy/config.ts + - x-pack/test/banners_functional/config.ts + - x-pack/test/cloud_integration/config.ts + - x-pack/test/performance/config.playwright.ts + - x-pack/test/load/config.ts + - x-pack/test/plugin_api_perf/config.js + - x-pack/test/screenshot_creation/config.ts + +enabled: + - test/accessibility/config.ts + - test/analytics/config.ts + - test/api_integration/config.js + - test/examples/config.js + - test/functional/apps/bundles/config.ts + - test/functional/apps/console/config.ts + - test/functional/apps/context/config.ts + - test/functional/apps/dashboard_elements/config.ts + - test/functional/apps/dashboard/group1/config.ts + - test/functional/apps/dashboard/group2/config.ts + - test/functional/apps/dashboard/group3/config.ts + - test/functional/apps/dashboard/group4/config.ts + - test/functional/apps/dashboard/group5/config.ts + - test/functional/apps/discover/config.ts + - test/functional/apps/getting_started/config.ts + - test/functional/apps/home/config.ts + - test/functional/apps/management/config.ts + - test/functional/apps/saved_objects_management/config.ts + - test/functional/apps/status_page/config.ts + - test/functional/apps/visualize/group1/config.ts + - test/functional/apps/visualize/group2/config.ts + - test/functional/apps/visualize/group3/config.ts + - test/functional/apps/visualize/group4/config.ts + - test/functional/apps/visualize/group5/config.ts + - test/functional/apps/visualize/group6/config.ts + - test/functional/apps/visualize/replaced_vislib_chart_types/config.ts + - test/functional/config.ccs.ts + - test/functional/config.firefox.js + - test/interactive_setup_api_integration/enrollment_flow.config.ts + - test/interactive_setup_api_integration/manual_configuration_flow_without_tls.config.ts + - test/interactive_setup_api_integration/manual_configuration_flow.config.ts + - test/interactive_setup_functional/enrollment_token.config.ts + - test/interactive_setup_functional/manual_configuration_without_security.config.ts + - test/interactive_setup_functional/manual_configuration_without_tls.config.ts + - test/interactive_setup_functional/manual_configuration.config.ts + - test/interpreter_functional/config.ts + - test/new_visualize_flow/config.ts + - test/plugin_functional/config.ts + - test/server_integration/http/platform/config.status.ts + - test/server_integration/http/platform/config.ts + - test/server_integration/http/ssl_redirect/config.js + - test/server_integration/http/ssl_with_p12_intermediate/config.js + - test/server_integration/http/ssl_with_p12/config.js + - test/server_integration/http/ssl/config.js + - test/ui_capabilities/newsfeed_err/config.ts + - x-pack/test/accessibility/config.ts + - x-pack/test/alerting_api_integration/basic/config.ts + - x-pack/test/alerting_api_integration/security_and_spaces/group1/config.ts + - x-pack/test/alerting_api_integration/security_and_spaces/group2/config.ts + - x-pack/test/alerting_api_integration/spaces_only/config.ts + - x-pack/test/api_integration_basic/config.ts + - x-pack/test/api_integration/config_security_basic.ts + - x-pack/test/api_integration/config_security_trial.ts + - x-pack/test/api_integration/config.ts + - x-pack/test/apm_api_integration/basic/config.ts + - x-pack/test/apm_api_integration/rules/config.ts + - x-pack/test/apm_api_integration/trial/config.ts + - x-pack/test/cases_api_integration/security_and_spaces/config_basic.ts + - x-pack/test/cases_api_integration/security_and_spaces/config_trial.ts + - x-pack/test/cases_api_integration/spaces_only/config.ts + - x-pack/test/detection_engine_api_integration/basic/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group1/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group2/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group3/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group4/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group5/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group6/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group7/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group8/config.ts + - x-pack/test/detection_engine_api_integration/security_and_spaces/group9/config.ts + - x-pack/test/encrypted_saved_objects_api_integration/config.ts + - x-pack/test/endpoint_api_integration_no_ingest/config.ts + - x-pack/test/examples/config.ts + - x-pack/test/fleet_api_integration/config.ts + - x-pack/test/fleet_functional/config.ts + - x-pack/test/functional_basic/config.ts + - x-pack/test/functional_cors/config.ts + - x-pack/test/functional_embedded/config.ts + - x-pack/test/functional_enterprise_search/without_host_configured.config.ts + - x-pack/test/functional_execution_context/config.ts + - x-pack/test/functional_synthetics/config.js + - x-pack/test/functional_with_es_ssl/config.ts + - x-pack/test/functional/apps/advanced_settings/config.ts + - x-pack/test/functional/apps/api_keys/config.ts + - x-pack/test/functional/apps/apm/config.ts + - x-pack/test/functional/apps/canvas/config.ts + - x-pack/test/functional/apps/cross_cluster_replication/config.ts + - x-pack/test/functional/apps/dashboard/group1/config.ts + - x-pack/test/functional/apps/dashboard/group2/config.ts + - x-pack/test/functional/apps/data_views/config.ts + - x-pack/test/functional/apps/dev_tools/config.ts + - x-pack/test/functional/apps/discover/config.ts + - x-pack/test/functional/apps/graph/config.ts + - x-pack/test/functional/apps/grok_debugger/config.ts + - x-pack/test/functional/apps/home/config.ts + - x-pack/test/functional/apps/index_lifecycle_management/config.ts + - x-pack/test/functional/apps/index_management/config.ts + - x-pack/test/functional/apps/infra/config.ts + - x-pack/test/functional/apps/ingest_pipelines/config.ts + - x-pack/test/functional/apps/lens/group1/config.ts + - x-pack/test/functional/apps/lens/group2/config.ts + - x-pack/test/functional/apps/lens/group3/config.ts + - x-pack/test/functional/apps/license_management/config.ts + - x-pack/test/functional/apps/logstash/config.ts + - x-pack/test/functional/apps/management/config.ts + - x-pack/test/functional/apps/maps/group1/config.ts + - x-pack/test/functional/apps/maps/group2/config.ts + - x-pack/test/functional/apps/maps/group3/config.ts + - x-pack/test/functional/apps/maps/group4/config.ts + - x-pack/test/functional/apps/ml/data_visualizer/config.ts + - x-pack/test/functional/apps/ml/group1/config.ts + - x-pack/test/functional/apps/ml/group2/config.ts + - x-pack/test/functional/apps/ml/group3/config.ts + - x-pack/test/functional/apps/monitoring/config.ts + - x-pack/test/functional/apps/remote_clusters/config.ts + - x-pack/test/functional/apps/reporting_management/config.ts + - x-pack/test/functional/apps/rollup_job/config.ts + - x-pack/test/functional/apps/saved_objects_management/config.ts + - x-pack/test/functional/apps/security/config.ts + - x-pack/test/functional/apps/snapshot_restore/config.ts + - x-pack/test/functional/apps/spaces/config.ts + - x-pack/test/functional/apps/status_page/config.ts + - x-pack/test/functional/apps/transform/config.ts + - x-pack/test/functional/apps/upgrade_assistant/config.ts + - x-pack/test/functional/apps/uptime/config.ts + - x-pack/test/functional/apps/visualize/config.ts + - x-pack/test/functional/apps/watcher/config.ts + - x-pack/test/functional/config_security_basic.ts + - x-pack/test/functional/config.ccs.ts + - x-pack/test/functional/config.firefox.js + - x-pack/test/licensing_plugin/config.public.ts + - x-pack/test/licensing_plugin/config.ts + - x-pack/test/lists_api_integration/security_and_spaces/config.ts + - x-pack/test/observability_api_integration/basic/config.ts + - x-pack/test/observability_api_integration/trial/config.ts + - x-pack/test/observability_functional/with_rac_write.config.ts + - x-pack/test/plugin_api_integration/config.ts + - x-pack/test/plugin_functional/config.ts + - x-pack/test/reporting_api_integration/reporting_and_security.config.ts + - x-pack/test/reporting_api_integration/reporting_without_security.config.ts + - x-pack/test/reporting_functional/reporting_and_deprecated_security.config.ts + - x-pack/test/reporting_functional/reporting_and_security.config.ts + - x-pack/test/reporting_functional/reporting_without_security.config.ts + - x-pack/test/rule_registry/security_and_spaces/config_basic.ts + - x-pack/test/rule_registry/security_and_spaces/config_trial.ts + - x-pack/test/rule_registry/spaces_only/config_basic.ts + - x-pack/test/rule_registry/spaces_only/config_trial.ts + - x-pack/test/saved_object_api_integration/security_and_spaces/config_basic.ts + - x-pack/test/saved_object_api_integration/security_and_spaces/config_trial.ts + - x-pack/test/saved_object_api_integration/spaces_only/config.ts + - x-pack/test/saved_object_tagging/api_integration/security_and_spaces/config.ts + - x-pack/test/saved_object_tagging/api_integration/tagging_api/config.ts + - x-pack/test/saved_object_tagging/functional/config.ts + - x-pack/test/saved_objects_field_count/config.ts + - x-pack/test/search_sessions_integration/config.ts + - x-pack/test/security_api_integration/anonymous_es_anonymous.config.ts + - x-pack/test/security_api_integration/anonymous.config.ts + - x-pack/test/security_api_integration/audit.config.ts + - x-pack/test/security_api_integration/http_bearer.config.ts + - x-pack/test/security_api_integration/http_no_auth_providers.config.ts + - x-pack/test/security_api_integration/kerberos_anonymous_access.config.ts + - x-pack/test/security_api_integration/kerberos.config.ts + - x-pack/test/security_api_integration/login_selector.config.ts + - x-pack/test/security_api_integration/oidc_implicit_flow.config.ts + - x-pack/test/security_api_integration/oidc.config.ts + - x-pack/test/security_api_integration/pki.config.ts + - x-pack/test/security_api_integration/saml.config.ts + - x-pack/test/security_api_integration/session_idle.config.ts + - x-pack/test/security_api_integration/session_invalidate.config.ts + - x-pack/test/security_api_integration/session_lifespan.config.ts + - x-pack/test/security_api_integration/token.config.ts + - x-pack/test/security_functional/login_selector.config.ts + - x-pack/test/security_functional/oidc.config.ts + - x-pack/test/security_functional/saml.config.ts + - x-pack/test/security_solution_endpoint_api_int/config.ts + - x-pack/test/security_solution_endpoint/config.ts + - x-pack/test/spaces_api_integration/security_and_spaces/config_basic.ts + - x-pack/test/spaces_api_integration/security_and_spaces/config_trial.ts + - x-pack/test/spaces_api_integration/spaces_only/config.ts + - x-pack/test/timeline/security_and_spaces/config_trial.ts + - x-pack/test/ui_capabilities/security_and_spaces/config.ts + - x-pack/test/ui_capabilities/spaces_only/config.ts + - x-pack/test/upgrade_assistant_integration/config.js + - x-pack/test/usage_collection/config.ts diff --git a/.buildkite/package-lock.json b/.buildkite/package-lock.json index cfbcb9ec1aae8..734db1a6ef234 100644 --- a/.buildkite/package-lock.json +++ b/.buildkite/package-lock.json @@ -8,7 +8,7 @@ "name": "kibana-buildkite", "version": "1.0.0", "dependencies": { - "kibana-buildkite-library": "git+https://git@github.com/elastic/kibana-buildkite-library#0f95579ace8100de9f1ad4cc16976b9ec6d5841e" + "kibana-buildkite-library": "git+https://git@github.com/elastic/kibana-buildkite-library#f5381bea52e0a71f50a6919cb6357ff3262cf2d6" } }, "node_modules/@nodelib/fs.scandir": { @@ -355,8 +355,8 @@ }, "node_modules/kibana-buildkite-library": { "version": "1.0.0", - "resolved": "git+https://git@github.com/elastic/kibana-buildkite-library.git#0f95579ace8100de9f1ad4cc16976b9ec6d5841e", - "integrity": "sha512-Ayiyy3rAE/jOWcR65vxiv4zacMlpxuRZ+WKvly6magfClWTWIUTcW1aiOH2/PYWP3faiCbIDHOyxLeGGajk5dQ==", + "resolved": "git+https://git@github.com/elastic/kibana-buildkite-library.git#f5381bea52e0a71f50a6919cb6357ff3262cf2d6", + "integrity": "sha512-L1JP2NvXR7mhKn9JBwROPgTEV4vDr5HWwZtkdvxtHjZ/MeOnJYFSDqB4JUY/gXTz6v3CO3eUm3GQ0BP/kewoqQ==", "license": "MIT", "dependencies": { "@octokit/rest": "^18.10.0", @@ -801,9 +801,9 @@ } }, "kibana-buildkite-library": { - "version": "git+https://git@github.com/elastic/kibana-buildkite-library.git#0f95579ace8100de9f1ad4cc16976b9ec6d5841e", - "integrity": "sha512-Ayiyy3rAE/jOWcR65vxiv4zacMlpxuRZ+WKvly6magfClWTWIUTcW1aiOH2/PYWP3faiCbIDHOyxLeGGajk5dQ==", - "from": "kibana-buildkite-library@git+https://git@github.com/elastic/kibana-buildkite-library#0f95579ace8100de9f1ad4cc16976b9ec6d5841e", + "version": "git+https://git@github.com/elastic/kibana-buildkite-library.git#f5381bea52e0a71f50a6919cb6357ff3262cf2d6", + "integrity": "sha512-L1JP2NvXR7mhKn9JBwROPgTEV4vDr5HWwZtkdvxtHjZ/MeOnJYFSDqB4JUY/gXTz6v3CO3eUm3GQ0BP/kewoqQ==", + "from": "kibana-buildkite-library@git+https://git@github.com/elastic/kibana-buildkite-library#f5381bea52e0a71f50a6919cb6357ff3262cf2d6", "requires": { "@octokit/rest": "^18.10.0", "axios": "^0.21.4", diff --git a/.buildkite/package.json b/.buildkite/package.json index 551def1fa1800..079f200a4cbc9 100644 --- a/.buildkite/package.json +++ b/.buildkite/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "private": true, "dependencies": { - "kibana-buildkite-library": "git+https://git@github.com/elastic/kibana-buildkite-library#0f95579ace8100de9f1ad4cc16976b9ec6d5841e" + "kibana-buildkite-library": "git+https://git@github.com/elastic/kibana-buildkite-library#f5381bea52e0a71f50a6919cb6357ff3262cf2d6" } } diff --git a/.buildkite/pipelines/es_snapshots/verify.yml b/.buildkite/pipelines/es_snapshots/verify.yml index 729d0d1b37b5f..0d8e11e1c8e8b 100755 --- a/.buildkite/pipelines/es_snapshots/verify.yml +++ b/.buildkite/pipelines/es_snapshots/verify.yml @@ -27,50 +27,17 @@ steps: if: "build.env('KIBANA_BUILD_ID') == null || build.env('KIBANA_BUILD_ID') == ''" timeout_in_minutes: 60 - - command: .buildkite/scripts/steps/functional/xpack_cigroup.sh - label: 'Default CI Group' - parallelism: 31 - agents: - queue: n2-4 - depends_on: build - timeout_in_minutes: 150 - key: default-cigroup - retry: - automatic: - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_cigroup.sh - label: 'OSS CI Group' - parallelism: 12 - agents: - queue: ci-group-4d - depends_on: build - timeout_in_minutes: 120 - key: oss-cigroup - retry: - automatic: - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/test/pick_jest_config_run_order.sh - label: 'Pick Jest Config Run Order' + - command: .buildkite/scripts/steps/test/pick_test_group_run_order.sh + label: 'Pick Test Group Run Order' agents: queue: kibana-default env: - FILTER_JEST_CONFIG_TYPE: integration + LIMIT_CONFIG_TYPE: integration,functional retry: automatic: - exit_status: '*' limit: 1 - - command: .buildkite/scripts/steps/test/api_integration.sh - label: 'API Integration Tests' - agents: - queue: n2-2 - timeout_in_minutes: 120 - key: api-integration - - command: .buildkite/scripts/steps/es_snapshots/trigger_promote.sh label: Trigger promotion timeout_in_minutes: 10 diff --git a/.buildkite/pipelines/flaky_tests/groups.json b/.buildkite/pipelines/flaky_tests/groups.json index e471d5c6a8679..78f8e6e56b904 100644 --- a/.buildkite/pipelines/flaky_tests/groups.json +++ b/.buildkite/pipelines/flaky_tests/groups.json @@ -1,46 +1,20 @@ { "groups": [ { - "key": "oss/cigroup", - "name": "OSS CI Group", - "ciGroups": 12 - }, - { - "key": "oss/firefox", - "name": "OSS Firefox" - }, - { - "key": "oss/accessibility", - "name": "OSS Accessibility" - }, - { - "key": "xpack/cypress/security_solution", + "key": "cypress/security_solution", "name": "Security Solution - Cypress" }, { - "key": "xpack/cypress/osquery_cypress", + "key": "cypress/osquery_cypress", "name": "Osquery - Cypress" }, { - "key": "xpack/cypress/fleet_cypress", + "key": "cypress/fleet_cypress", "name": "Fleet - Cypress" }, { - "key": "xpack/cypress/apm_cypress", + "key": "cypress/apm_cypress", "name": "APM - Cypress" - }, - { - "key": "xpack/cigroup", - "name": "Default CI Group", - "ciGroups": 30 - }, - { - "key": "xpack/firefox", - "name": "Default Firefox" - }, - { - "key": "xpack/accessibility", - "name": "Default Accessibility" } ] } diff --git a/.buildkite/pipelines/flaky_tests/pipeline.js b/.buildkite/pipelines/flaky_tests/pipeline.js index b7f93412edb37..d62156a08c55a 100644 --- a/.buildkite/pipelines/flaky_tests/pipeline.js +++ b/.buildkite/pipelines/flaky_tests/pipeline.js @@ -6,56 +6,179 @@ * Side Public License, v 1. */ +const configJson = process.env.KIBANA_FLAKY_TEST_RUNNER_CONFIG; +if (!configJson) { + console.error('+++ Triggering directly is not supported anymore'); + console.error( + `Please use the "Trigger Flaky Test Runner" UI to run the Flaky Test Runner. You can find the UI at the URL below:` + ); + console.error('\n https://ci-stats.kibana.dev/trigger_flaky_test_runner\n'); + process.exit(1); +} + const groups = /** @type {Array<{key: string, name: string, ciGroups: number }>} */ ( require('./groups.json').groups ); -const stepInput = (key, nameOfSuite) => { - return { - key: `ftsr-suite/${key}`, - text: nameOfSuite, - required: false, - default: '0', +const concurrency = process.env.KIBANA_FLAKY_TEST_CONCURRENCY + ? parseInt(process.env.KIBANA_FLAKY_TEST_CONCURRENCY, 10) + : 25; + +if (Number.isNaN(concurrency)) { + throw new Error( + `invalid KIBANA_FLAKY_TEST_CONCURRENCY: ${process.env.KIBANA_FLAKY_TEST_CONCURRENCY}` + ); +} + +const BASE_JOBS = 1; +const MAX_JOBS = 500; + +function getTestSuitesFromJson(json) { + const fail = (errorMsg) => { + console.error('+++ Invalid test config provided'); + console.error(`${errorMsg}: ${json}`); + process.exit(1); }; -}; -const inputs = [ - { - key: 'ftsr-override-count', - text: 'Override for all suites', - default: '0', - required: true, - }, -]; - -for (const group of groups) { - if (!group.ciGroups) { - inputs.push(stepInput(group.key, group.name)); - } else { - for (let i = 1; i <= group.ciGroups; i++) { - inputs.push(stepInput(`${group.key}/${i}`, `${group.name} ${i}`)); + let parsed; + try { + parsed = JSON.parse(json); + } catch (error) { + fail(`JSON test config did not parse correctly`); + } + + if (!Array.isArray(parsed)) { + fail(`JSON test config must be an array`); + } + + /** @type {Array<{ type: 'group', key: string; count: number } | { type: 'ftrConfig', ftrConfig: string; count: number }>} */ + const testSuites = []; + for (const item of parsed) { + if (typeof item !== 'object' || item === null) { + fail(`testSuites must be objects`); + } + + const count = item.count; + if (typeof count !== 'number') { + fail(`testSuite.count must be a number`); + } + + const type = item.type; + if (type !== 'ftrConfig' && type !== 'group') { + fail(`testSuite.type must be either "ftrConfig" or "group"`); } + + if (item.type === 'ftrConfig') { + const ftrConfig = item.ftrConfig; + if (typeof ftrConfig !== 'string') { + fail(`testSuite.ftrConfig must be a string`); + } + + testSuites.push({ + ftrConfig, + count, + }); + continue; + } + + const key = item.key; + if (typeof key !== 'string') { + fail(`testSuite.key must be a string`); + } + testSuites.push({ + key, + count, + }); } + + return testSuites; +} + +const testSuites = getTestSuitesFromJson(configJson); + +const totalJobs = testSuites.reduce((acc, t) => acc + t.count, BASE_JOBS); + +if (totalJobs > MAX_JOBS) { + console.error('+++ Too many tests'); + console.error( + `Buildkite builds can only contain ${MAX_JOBS} jobs in total. Found ${totalJobs} based on this config. Make sure your test runs are less than ${ + MAX_JOBS - BASE_JOBS + }` + ); + process.exit(1); } +const steps = []; const pipeline = { - steps: [ - { - input: 'Number of Runs - Click Me', - fields: inputs, - if: `build.env('KIBANA_FLAKY_TEST_RUNNER_CONFIG') == null`, - }, - { - wait: '~', - }, - { - command: '.buildkite/pipelines/flaky_tests/runner.sh', - label: 'Create pipeline', + env: { + IGNORE_SHIP_CI_STATS_ERROR: 'true', + }, + steps, +}; + +steps.push({ + command: '.buildkite/scripts/steps/build_kibana.sh', + label: 'Build Kibana Distribution and Plugins', + agents: { queue: 'c2-8' }, + key: 'build', + if: "build.env('KIBANA_BUILD_ID') == null || build.env('KIBANA_BUILD_ID') == ''", +}); + +for (const testSuite of testSuites) { + if (testSuite.count <= 0) { + continue; + } + + if (testSuite.ftrConfig) { + steps.push({ + command: `.buildkite/scripts/steps/test/ftr_configs.sh`, + env: { + FTR_CONFIG: testSuite.ftrConfig, + }, + label: `FTR Config: ${testSuite.ftrConfig}`, + parallelism: testSuite.count, + concurrency: concurrency, + concurrency_group: process.env.UUID, + concurrency_method: 'eager', agents: { - queue: 'kibana-default', + queue: 'n2-4-spot-2', }, - }, - ], -}; + depends_on: 'build', + timeout_in_minutes: 150, + retry: { + automatic: [ + { exit_status: '-1', limit: 3 }, + // { exit_status: '*', limit: 1 }, + ], + }, + }); + continue; + } + + const keyParts = testSuite.key.split('/'); + switch (keyParts[0]) { + case 'cypress': + const CYPRESS_SUITE = keyParts[1]; + const group = groups.find((group) => group.key.includes(CYPRESS_SUITE)); + if (!group) { + throw new Error( + `Group configuration was not found in groups.json for the following cypress suite: {${CYPRESS_SUITE}}.` + ); + } + steps.push({ + command: `.buildkite/scripts/steps/functional/${CYPRESS_SUITE}.sh`, + label: group.name, + agents: { queue: 'ci-group-6' }, + depends_on: 'build', + parallelism: testSuite.count, + concurrency: concurrency, + concurrency_group: process.env.UUID, + concurrency_method: 'eager', + }); + break; + default: + throw new Error(`unknown test suite: ${testSuite.key}`); + } +} console.log(JSON.stringify(pipeline, null, 2)); diff --git a/.buildkite/pipelines/flaky_tests/pipeline.sh b/.buildkite/pipelines/flaky_tests/pipeline.sh index 6335cd5490af0..17fa0152e8b34 100755 --- a/.buildkite/pipelines/flaky_tests/pipeline.sh +++ b/.buildkite/pipelines/flaky_tests/pipeline.sh @@ -2,4 +2,7 @@ set -euo pipefail +UUID="$(cat /proc/sys/kernel/random/uuid)" +export UUID + node .buildkite/pipelines/flaky_tests/pipeline.js | buildkite-agent pipeline upload diff --git a/.buildkite/pipelines/flaky_tests/runner.js b/.buildkite/pipelines/flaky_tests/runner.js deleted file mode 100644 index a5cc237a1814a..0000000000000 --- a/.buildkite/pipelines/flaky_tests/runner.js +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may 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 { execSync } = require('child_process'); -const groups = /** @type {Array<{key: string, name: string, ciGroups: number }>} */ ( - require('./groups.json').groups -); - -const concurrency = 25; -const defaultCount = concurrency * 2; -const initialJobs = 3; - -function getTestSuitesFromMetadata() { - const keys = execSync('buildkite-agent meta-data keys') - .toString() - .split('\n') - .filter((k) => k.startsWith('ftsr-suite/')); - - const overrideCount = execSync(`buildkite-agent meta-data get 'ftsr-override-count'`) - .toString() - .trim(); - - const testSuites = []; - for (const key of keys) { - if (!key) { - continue; - } - - const value = - overrideCount && overrideCount !== '0' - ? overrideCount - : execSync(`buildkite-agent meta-data get '${key}'`).toString().trim(); - - const count = value === '' ? defaultCount : parseInt(value); - testSuites.push({ - key: key.replace('ftsr-suite/', ''), - count: count, - }); - } - - return testSuites; -} - -function getTestSuitesFromJson(json) { - const fail = (errorMsg) => { - console.error('+++ Invalid test config provided'); - console.error(`${errorMsg}: ${json}`); - process.exit(1); - }; - - let parsed; - try { - parsed = JSON.parse(json); - } catch (error) { - fail(`JSON test config did not parse correctly`); - } - - if (!Array.isArray(parsed)) { - fail(`JSON test config must be an array`); - } - - /** @type {Array<{ key: string, count: number }>} */ - const testSuites = []; - for (const item of parsed) { - if (typeof item !== 'object' || item === null) { - fail(`testSuites must be objects`); - } - const key = item.key; - if (typeof key !== 'string') { - fail(`testSuite.key must be a string`); - } - const count = item.count; - if (typeof count !== 'number') { - fail(`testSuite.count must be a number`); - } - testSuites.push({ - key, - count, - }); - } - - return testSuites; -} - -const testSuites = process.env.KIBANA_FLAKY_TEST_RUNNER_CONFIG - ? getTestSuitesFromJson(process.env.KIBANA_FLAKY_TEST_RUNNER_CONFIG) - : getTestSuitesFromMetadata(); - -const totalJobs = testSuites.reduce((acc, t) => acc + t.count, initialJobs); - -if (totalJobs > 500) { - console.error('+++ Too many tests'); - console.error( - `Buildkite builds can only contain 500 steps in total. Found ${totalJobs} in total. Make sure your test runs are less than ${ - 500 - initialJobs - }` - ); - process.exit(1); -} - -const steps = []; -const pipeline = { - env: { - IGNORE_SHIP_CI_STATS_ERROR: 'true', - }, - steps: steps, -}; - -steps.push({ - command: '.buildkite/scripts/steps/build_kibana.sh', - label: 'Build Kibana Distribution and Plugins', - agents: { queue: 'c2-8' }, - key: 'build', - if: "build.env('KIBANA_BUILD_ID') == null || build.env('KIBANA_BUILD_ID') == ''", -}); - -for (const testSuite of testSuites) { - const TEST_SUITE = testSuite.key; - const RUN_COUNT = testSuite.count; - const UUID = process.env.UUID; - - const JOB_PARTS = TEST_SUITE.split('/'); - const IS_XPACK = JOB_PARTS[0] === 'xpack'; - const TASK = JOB_PARTS[1]; - const CI_GROUP = JOB_PARTS.length > 2 ? JOB_PARTS[2] : ''; - - if (RUN_COUNT < 1) { - continue; - } - - switch (TASK) { - case 'cigroup': - if (IS_XPACK) { - steps.push({ - command: `CI_GROUP=${CI_GROUP} .buildkite/scripts/steps/functional/xpack_cigroup.sh`, - label: `Default CI Group ${CI_GROUP}`, - agents: { queue: 'n2-4' }, - depends_on: 'build', - parallelism: RUN_COUNT, - concurrency: concurrency, - concurrency_group: UUID, - concurrency_method: 'eager', - }); - } else { - steps.push({ - command: `CI_GROUP=${CI_GROUP} .buildkite/scripts/steps/functional/oss_cigroup.sh`, - label: `OSS CI Group ${CI_GROUP}`, - agents: { queue: 'ci-group-4d' }, - depends_on: 'build', - parallelism: RUN_COUNT, - concurrency: concurrency, - concurrency_group: UUID, - concurrency_method: 'eager', - }); - } - break; - - case 'firefox': - steps.push({ - command: `.buildkite/scripts/steps/functional/${IS_XPACK ? 'xpack' : 'oss'}_firefox.sh`, - label: `${IS_XPACK ? 'Default' : 'OSS'} Firefox`, - agents: { queue: IS_XPACK ? 'n2-4' : 'ci-group-4d' }, - depends_on: 'build', - parallelism: RUN_COUNT, - concurrency: concurrency, - concurrency_group: UUID, - concurrency_method: 'eager', - }); - break; - - case 'accessibility': - steps.push({ - command: `.buildkite/scripts/steps/functional/${ - IS_XPACK ? 'xpack' : 'oss' - }_accessibility.sh`, - label: `${IS_XPACK ? 'Default' : 'OSS'} Accessibility`, - agents: { queue: IS_XPACK ? 'n2-4' : 'ci-group-4d' }, - depends_on: 'build', - parallelism: RUN_COUNT, - concurrency: concurrency, - concurrency_group: UUID, - concurrency_method: 'eager', - }); - break; - - case 'cypress': - const CYPRESS_SUITE = CI_GROUP; - const group = groups.find((group) => group.key.includes(CYPRESS_SUITE)); - if (!group) { - throw new Error( - `Group configuration was not found in groups.json for the following cypress suite: {${CYPRESS_SUITE}}.` - ); - } - steps.push({ - command: `.buildkite/scripts/steps/functional/${CYPRESS_SUITE}.sh`, - label: group.name, - agents: { queue: 'ci-group-6' }, - depends_on: 'build', - parallelism: RUN_COUNT, - concurrency: concurrency, - concurrency_group: UUID, - concurrency_method: 'eager', - }); - break; - } -} - -console.log(JSON.stringify(pipeline, null, 2)); diff --git a/.buildkite/pipelines/flaky_tests/runner.sh b/.buildkite/pipelines/flaky_tests/runner.sh deleted file mode 100755 index b541af88a408a..0000000000000 --- a/.buildkite/pipelines/flaky_tests/runner.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -UUID="$(cat /proc/sys/kernel/random/uuid)" -export UUID - -node .buildkite/pipelines/flaky_tests/runner.js | buildkite-agent pipeline upload diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml index 1c89c4e90893b..26b3afbf081a2 100644 --- a/.buildkite/pipelines/on_merge.yml +++ b/.buildkite/pipelines/on_merge.yml @@ -49,116 +49,8 @@ steps: - exit_status: '*' limit: 1 - - command: .buildkite/scripts/steps/functional/xpack_cigroup.sh - label: 'Default CI Group' - parallelism: 31 - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 250 - key: default-cigroup - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_cigroup.sh - label: 'OSS CI Group' - parallelism: 12 - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - key: oss-cigroup - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_accessibility.sh - label: 'OSS Accessibility Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/xpack_accessibility.sh - label: 'Default Accessibility Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_firefox.sh - label: 'OSS Firefox Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/xpack_firefox.sh - label: 'Default Firefox Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_misc.sh - label: 'OSS Misc Functional Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/xpack_saved_object_field_metrics.sh - label: 'Saved Object Field Metrics' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/test/pick_jest_config_run_order.sh - label: 'Pick Jest Config Run Order' + - command: .buildkite/scripts/steps/test/pick_test_group_run_order.sh + label: 'Pick Test Group Run Order' agents: queue: kibana-default retry: @@ -166,17 +58,6 @@ steps: - exit_status: '*' limit: 1 - - command: .buildkite/scripts/steps/test/api_integration.sh - label: 'API Integration Tests' - agents: - queue: n2-2-spot - timeout_in_minutes: 120 - key: api-integration - retry: - automatic: - - exit_status: '-1' - limit: 3 - - command: .buildkite/scripts/steps/lint.sh label: 'Linting' agents: diff --git a/.buildkite/pipelines/performance/daily.yml b/.buildkite/pipelines/performance/daily.yml index 658ab3a72f186..07e73c27508a6 100644 --- a/.buildkite/pipelines/performance/daily.yml +++ b/.buildkite/pipelines/performance/daily.yml @@ -17,6 +17,13 @@ steps: agents: queue: kb-static-ubuntu depends_on: build + key: tests + + - label: ':shipit: Performance Tests dataset extraction for scalability benchmarking' + command: .buildkite/scripts/steps/functional/scalability_dataset_extraction.sh + agents: + queue: n2-2 + depends_on: tests - wait: ~ continue_on_failure: true diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml index 4b4104f18c627..dc771e53d9d75 100644 --- a/.buildkite/pipelines/pull_request/base.yml +++ b/.buildkite/pipelines/pull_request/base.yml @@ -15,116 +15,8 @@ steps: if: "build.env('KIBANA_BUILD_ID') == null || build.env('KIBANA_BUILD_ID') == ''" timeout_in_minutes: 60 - - command: .buildkite/scripts/steps/functional/xpack_cigroup.sh - label: 'Default CI Group' - parallelism: 31 - agents: - queue: n2-4-spot-2 - depends_on: build - timeout_in_minutes: 150 - key: default-cigroup - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_cigroup.sh - label: 'OSS CI Group' - parallelism: 12 - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - key: oss-cigroup - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_accessibility.sh - label: 'OSS Accessibility Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/xpack_accessibility.sh - label: 'Default Accessibility Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_firefox.sh - label: 'OSS Firefox Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/xpack_firefox.sh - label: 'Default Firefox Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/oss_misc.sh - label: 'OSS Misc Functional Tests' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/functional/xpack_saved_object_field_metrics.sh - label: 'Saved Object Field Metrics' - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - exit_status: '*' - limit: 1 - - - command: .buildkite/scripts/steps/test/pick_jest_config_run_order.sh - label: 'Pick Jest Config Run Order' + - command: .buildkite/scripts/steps/test/pick_test_group_run_order.sh + label: 'Pick Test Group Run Order' agents: queue: kibana-default retry: @@ -132,17 +24,6 @@ steps: - exit_status: '*' limit: 1 - - command: .buildkite/scripts/steps/test/api_integration.sh - label: 'API Integration Tests' - agents: - queue: n2-2-spot - timeout_in_minutes: 120 - key: api-integration - retry: - automatic: - - exit_status: '-1' - limit: 3 - - command: .buildkite/scripts/steps/lint.sh label: 'Linting' agents: diff --git a/.buildkite/scripts/common/env.sh b/.buildkite/scripts/common/env.sh index 5d2ccda66285b..0efcbb7dbcda3 100755 --- a/.buildkite/scripts/common/env.sh +++ b/.buildkite/scripts/common/env.sh @@ -98,3 +98,6 @@ fi export BUILD_TS_REFS_DISABLE=true export DISABLE_BOOTSTRAP_VALIDATION=true + +# Prevent Browserlist from logging on CI about outdated database versions +export BROWSERSLIST_IGNORE_OLD_DATA=true diff --git a/.buildkite/scripts/common/setup_bazel.sh b/.buildkite/scripts/common/setup_bazel.sh index 96cd04fa612fd..e3791dfa393c7 100755 --- a/.buildkite/scripts/common/setup_bazel.sh +++ b/.buildkite/scripts/common/setup_bazel.sh @@ -11,8 +11,29 @@ cat < $KIBANA_DIR/.bazelrc build --build_metadata=ROLE=CI EOF -if [[ "${BAZEL_CACHE_MODE:-none}" == read* ]]; then - echo "[bazel] enabling caching" +BAZEL_CACHE_MODE=${BAZEL_CACHE_MODE:-gcs} + +if [[ "$BAZEL_CACHE_MODE" == "gcs" ]]; then + echo "[bazel] enabling caching with GCS buckets" + + BAZEL_REGION="us-central1" + if [[ "$(curl -is metadata.google.internal || true)" ]]; then + # projects/1003139005402/zones/us-central1-a -> us-central1-a -> us-central1 + BAZEL_REGION=$(curl -sH Metadata-Flavor:Google http://metadata.google.internal/computeMetadata/v1/instance/zone | rev | cut -d'/' -f1 | cut -c3- | rev) + fi + + BAZEL_BUCKET="kibana-ci-bazel_$BAZEL_REGION" + + echo "[bazel] using GCS bucket: $BAZEL_BUCKET" + +cat <> $KIBANA_DIR/.bazelrc + build --remote_cache=https://storage.googleapis.com/$BAZEL_BUCKET + build --google_default_credentials +EOF +fi + +if [[ "$BAZEL_CACHE_MODE" == "buildbuddy" ]]; then + echo "[bazel] enabling caching with Buildbuddy" cat <> $KIBANA_DIR/.bazelrc build --bes_results_url=https://app.buildbuddy.io/invocation/ build --bes_backend=grpcs://remote.buildbuddy.io @@ -22,14 +43,7 @@ cat <> $KIBANA_DIR/.bazelrc EOF fi -if [[ "${BAZEL_CACHE_MODE:-none}" == "read" ]]; then - echo "[bazel] cache set to read-only" -cat <> $KIBANA_DIR/.bazelrc - build --noremote_upload_local_results -EOF -fi - -if [[ "${BAZEL_CACHE_MODE:-none}" != @(read|read-write|none|) ]]; then - echo "invalid value for BAZEL_CACHE_MODE received ($BAZEL_CACHE_MODE), expected one of [read,read-write,none]" +if [[ "$BAZEL_CACHE_MODE" != @(gcs|buildbuddy|none|) ]]; then + echo "invalid value for BAZEL_CACHE_MODE received ($BAZEL_CACHE_MODE), expected one of [gcs,buildbuddy,none]" exit 1 fi diff --git a/.buildkite/scripts/pipelines/pull_request/pipeline.js b/.buildkite/scripts/pipelines/pull_request/pipeline.js index 0f8e46842fd39..35ea19c78cd93 100644 --- a/.buildkite/scripts/pipelines/pull_request/pipeline.js +++ b/.buildkite/scripts/pipelines/pull_request/pipeline.js @@ -20,6 +20,7 @@ const SKIPPABLE_PATHS = [ /^\.github\//, /\.md$/, /^\.backportrc\.json$/, + /^nav-kibana-dev\.docnav\.json$/, ]; const REQUIRED_PATHS = [ diff --git a/.buildkite/scripts/saved_object_field_metrics.sh b/.buildkite/scripts/saved_object_field_metrics.sh index 3b6c63eeff3b0..4cc249db20edc 100755 --- a/.buildkite/scripts/saved_object_field_metrics.sh +++ b/.buildkite/scripts/saved_object_field_metrics.sh @@ -5,9 +5,8 @@ set -euo pipefail source .buildkite/scripts/common/util.sh echo '--- Default Saved Object Field Metrics' -cd "$XPACK_DIR" checks-reporter-with-killswitch "Capture Kibana Saved Objects field count metrics" \ node scripts/functional_tests \ --debug --bail \ --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --config test/saved_objects_field_count/config.ts + --config x-pack/test/saved_objects_field_count/config.ts diff --git a/.buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh b/.buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh index 1417137f0b6f0..62aabf496fd8a 100755 --- a/.buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh +++ b/.buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh @@ -2,7 +2,7 @@ set -euo pipefail -export BAZEL_CACHE_MODE=read-write +export BAZEL_CACHE_MODE=buildbuddy export DISABLE_BOOTSTRAP_VALIDATION=true # Since our Mac agents are currently static, diff --git a/.buildkite/scripts/steps/checks.sh b/.buildkite/scripts/steps/checks.sh index 42de0f2cf2393..cae019150b626 100755 --- a/.buildkite/scripts/steps/checks.sh +++ b/.buildkite/scripts/steps/checks.sh @@ -8,7 +8,6 @@ export DISABLE_BOOTSTRAP_VALIDATION=false .buildkite/scripts/steps/checks/commit/commit.sh .buildkite/scripts/steps/checks/bazel_packages.sh .buildkite/scripts/steps/checks/telemetry.sh -.buildkite/scripts/steps/checks/validate_ci_groups.sh .buildkite/scripts/steps/checks/ts_projects.sh .buildkite/scripts/steps/checks/jest_configs.sh .buildkite/scripts/steps/checks/doc_api_changes.sh diff --git a/.buildkite/scripts/steps/checks/validate_ci_groups.sh b/.buildkite/scripts/steps/checks/validate_ci_groups.sh deleted file mode 100755 index 1216ff0a55e10..0000000000000 --- a/.buildkite/scripts/steps/checks/validate_ci_groups.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/common/util.sh - -echo --- Ensure that all tests are in a CI Group -checks-reporter-with-killswitch "Ensure that all tests are in a CI Group" \ - node scripts/ensure_all_tests_in_ci_group diff --git a/.buildkite/scripts/steps/functional/fleet_cypress.sh b/.buildkite/scripts/steps/functional/fleet_cypress.sh index 3847ffda08822..7207a2adf454a 100755 --- a/.buildkite/scripts/steps/functional/fleet_cypress.sh +++ b/.buildkite/scripts/steps/functional/fleet_cypress.sh @@ -11,10 +11,8 @@ export JOB=kibana-fleet-cypress echo "--- Fleet Cypress tests" -cd "$XPACK_DIR" - checks-reporter-with-killswitch "Fleet Cypress Tests" \ node scripts/functional_tests \ --debug --bail \ --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --config test/fleet_cypress/cli_config.ts + --config x-pack/test/fleet_cypress/cli_config.ts diff --git a/.buildkite/scripts/steps/functional/osquery_cypress.sh b/.buildkite/scripts/steps/functional/osquery_cypress.sh index a0d98713aa379..02766e0530bfb 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress.sh @@ -12,10 +12,8 @@ export JOB=kibana-osquery-cypress echo "--- Osquery Cypress tests" -cd "$XPACK_DIR" - checks-reporter-with-killswitch "Osquery Cypress Tests" \ node scripts/functional_tests \ --debug --bail \ - --config test/osquery_cypress/cli_config.ts + --config x-pack/test/osquery_cypress/cli_config.ts diff --git a/.buildkite/scripts/steps/functional/oss_accessibility.sh b/.buildkite/scripts/steps/functional/oss_accessibility.sh deleted file mode 100755 index e8c65cfa760b2..0000000000000 --- a/.buildkite/scripts/steps/functional/oss_accessibility.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/steps/functional/common.sh - -echo --- OSS Accessibility Tests - -checks-reporter-with-killswitch "Kibana accessibility tests" \ - node scripts/functional_tests \ - --debug --bail \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --config test/accessibility/config.ts diff --git a/.buildkite/scripts/steps/functional/oss_cigroup.sh b/.buildkite/scripts/steps/functional/oss_cigroup.sh deleted file mode 100755 index a7a5960a41afe..0000000000000 --- a/.buildkite/scripts/steps/functional/oss_cigroup.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/steps/functional/common.sh - -export CI_GROUP=${CI_GROUP:-$((BUILDKITE_PARALLEL_JOB+1))} -export JOB=kibana-oss-ciGroup${CI_GROUP} - -echo "--- OSS CI Group $CI_GROUP" - -checks-reporter-with-killswitch "Functional tests / Group ${CI_GROUP}" \ - node scripts/functional_tests \ - --bail \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --include-tag "ciGroup$CI_GROUP" diff --git a/.buildkite/scripts/steps/functional/oss_firefox.sh b/.buildkite/scripts/steps/functional/oss_firefox.sh deleted file mode 100755 index e953973da62d6..0000000000000 --- a/.buildkite/scripts/steps/functional/oss_firefox.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/steps/functional/common.sh - -echo --- OSS Firefox Smoke Tests - -checks-reporter-with-killswitch "Firefox smoke test" \ - node scripts/functional_tests \ - --bail --debug \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --include-tag "includeFirefox" \ - --config test/functional/config.firefox.js diff --git a/.buildkite/scripts/steps/functional/oss_misc.sh b/.buildkite/scripts/steps/functional/oss_misc.sh deleted file mode 100755 index 22d4eda608cc2..0000000000000 --- a/.buildkite/scripts/steps/functional/oss_misc.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/steps/functional/common.sh - -# Required, at least for plugin_functional tests -.buildkite/scripts/build_kibana_plugins.sh - -echo --- Plugin Functional Tests -checks-reporter-with-killswitch "Plugin Functional Tests" \ - node scripts/functional_tests \ - --config test/plugin_functional/config.ts \ - --bail \ - --debug - -echo --- Interpreter Functional Tests -checks-reporter-with-killswitch "Interpreter Functional Tests" \ - node scripts/functional_tests \ - --config test/interpreter_functional/config.ts \ - --bail \ - --debug \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" - -echo --- Server Integration Tests -checks-reporter-with-killswitch "Server Integration Tests" \ - node scripts/functional_tests \ - --config test/server_integration/http/ssl/config.js \ - --config test/server_integration/http/ssl_redirect/config.js \ - --config test/server_integration/http/platform/config.ts \ - --config test/server_integration/http/ssl_with_p12/config.js \ - --config test/server_integration/http/ssl_with_p12_intermediate/config.js \ - --bail \ - --debug \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" - -# Tests that must be run against source in order to build test plugins -echo --- Status Integration Tests -checks-reporter-with-killswitch "Status Integration Tests" \ - node scripts/functional_tests \ - --config test/server_integration/http/platform/config.status.ts \ - --bail \ - --debug - -# Tests that must be run against source in order to build test plugins -echo --- Analytics Integration Tests -checks-reporter-with-killswitch "Analytics Integration Tests" \ - node scripts/functional_tests \ - --config test/analytics/config.ts \ - --bail \ - --debug diff --git a/.buildkite/scripts/steps/functional/performance_playwright.sh b/.buildkite/scripts/steps/functional/performance_playwright.sh index dad75c9f66a98..a1c3f23ced51e 100644 --- a/.buildkite/scripts/steps/functional/performance_playwright.sh +++ b/.buildkite/scripts/steps/functional/performance_playwright.sh @@ -18,8 +18,6 @@ export TEST_ES_DISABLE_STARTUP=true sleep 120 -cd "$XPACK_DIR" - journeys=("login" "ecommerce_dashboard" "flight_dashboard" "web_logs_dashboard" "promotion_tracking_dashboard" "many_fields_discover") for i in "${journeys[@]}"; do @@ -31,8 +29,8 @@ for i in "${journeys[@]}"; do checks-reporter-with-killswitch "Run Performance Tests with Playwright Config (Journey:${i},Phase: WARMUP)" \ node scripts/functional_tests \ - --config test/performance/config.playwright.ts \ - --include "test/performance/tests/playwright/${i}.ts" \ + --config x-pack/test/performance/config.playwright.ts \ + --include "x-pack/test/performance/tests/playwright/${i}.ts" \ --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ --debug \ --bail @@ -42,8 +40,8 @@ for i in "${journeys[@]}"; do checks-reporter-with-killswitch "Run Performance Tests with Playwright Config (Journey:${i},Phase: TEST)" \ node scripts/functional_tests \ - --config test/performance/config.playwright.ts \ - --include "test/performance/tests/playwright/${i}.ts" \ + --config x-pack/test/performance/config.playwright.ts \ + --include "x-pack/test/performance/tests/playwright/${i}.ts" \ --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ --debug \ --bail diff --git a/.buildkite/scripts/steps/functional/response_ops.sh b/.buildkite/scripts/steps/functional/response_ops.sh index d8484854ed29e..9828884e6d6a2 100755 --- a/.buildkite/scripts/steps/functional/response_ops.sh +++ b/.buildkite/scripts/steps/functional/response_ops.sh @@ -8,10 +8,8 @@ export JOB=kibana-security-solution-chrome echo "--- Response Ops Cypress Tests on Security Solution" -cd "$XPACK_DIR" - checks-reporter-with-killswitch "Response Ops Cypress Tests on Security Solution" \ node scripts/functional_tests \ --debug --bail \ --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --config test/security_solution_cypress/response_ops_cli_config.ts + --config x-pack/test/security_solution_cypress/response_ops_cli_config.ts diff --git a/.buildkite/scripts/steps/functional/response_ops_cases.sh b/.buildkite/scripts/steps/functional/response_ops_cases.sh index 13d0ef52130a3..2485e025833ed 100755 --- a/.buildkite/scripts/steps/functional/response_ops_cases.sh +++ b/.buildkite/scripts/steps/functional/response_ops_cases.sh @@ -8,10 +8,8 @@ export JOB=kibana-security-solution-chrome echo "--- Response Ops Cases Cypress Tests on Security Solution" -cd "$XPACK_DIR" - checks-reporter-with-killswitch "Response Ops Cases Cypress Tests on Security Solution" \ node scripts/functional_tests \ --debug --bail \ --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --config test/security_solution_cypress/cases_cli_config.ts + --config x-pack/test/security_solution_cypress/cases_cli_config.ts diff --git a/.buildkite/scripts/steps/functional/scalability_dataset_extraction.sh b/.buildkite/scripts/steps/functional/scalability_dataset_extraction.sh new file mode 100755 index 0000000000000..b2ce23db38fdb --- /dev/null +++ b/.buildkite/scripts/steps/functional/scalability_dataset_extraction.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/scripts/common/util.sh + +USER_FROM_VAULT="$(retry 5 5 vault read -field=username secret/kibana-issues/dev/apm_parser_performance)" +PASS_FROM_VAULT="$(retry 5 5 vault read -field=password secret/kibana-issues/dev/apm_parser_performance)" +ES_SERVER_URL="https://kibana-ops-e2e-perf.es.us-central1.gcp.cloud.es.io:9243" +BUILD_ID=${BUILDKITE_BUILD_ID} +GCS_BUCKET="gs://kibana-performance/scalability-tests" + +.buildkite/scripts/bootstrap.sh + +echo "--- Extract APM metrics" +journeys=("login" "ecommerce_dashboard" "flight_dashboard" "web_logs_dashboard" "promotion_tracking_dashboard" "many_fields_discover") + +for i in "${journeys[@]}"; do + JOURNEY_NAME="${i}" + echo "Looking for JOURNEY=${JOURNEY_NAME} and BUILD_ID=${BUILD_ID} in APM traces" + + ./node_modules/.bin/performance-testing-dataset-extractor -u "${USER_FROM_VAULT}" -p "${PASS_FROM_VAULT}" -c "${ES_SERVER_URL}" -b "${BUILD_ID}" -n "${JOURNEY_NAME}" +done + +# archive json files with traces and upload as build artifacts +echo "--- Upload Kibana build, plugins and scalability traces to the public bucket" +mkdir "${BUILD_ID}" +tar -czf "${BUILD_ID}/scalability_traces.tar.gz" output +buildkite-agent artifact upload "${BUILD_ID}/scalability_traces.tar.gz" +buildkite-agent artifact download kibana-default.tar.gz ./"${BUILD_ID}" +buildkite-agent artifact download kibana-default-plugins.tar.gz ./"${BUILD_ID}" +echo "${BUILDKITE_COMMIT}" > "${BUILD_ID}/KIBANA_COMMIT_HASH" +gsutil -m cp -r "${BUILD_ID}" "${GCS_BUCKET}" +echo "--- Update reference to the latest CI build" +echo "${BUILD_ID}" > LATEST +gsutil cp LATEST "${GCS_BUCKET}" \ No newline at end of file diff --git a/.buildkite/scripts/steps/functional/security_solution.sh b/.buildkite/scripts/steps/functional/security_solution.sh index 9b2bfc7207a95..ae81eaa4f48e2 100755 --- a/.buildkite/scripts/steps/functional/security_solution.sh +++ b/.buildkite/scripts/steps/functional/security_solution.sh @@ -8,10 +8,8 @@ export JOB=kibana-security-solution-chrome echo "--- Security Solution tests (Chrome)" -cd "$XPACK_DIR" - checks-reporter-with-killswitch "Security Solution Cypress Tests (Chrome)" \ node scripts/functional_tests \ --debug --bail \ --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --config test/security_solution_cypress/cli_config.ts + --config x-pack/test/security_solution_cypress/cli_config.ts diff --git a/.buildkite/scripts/steps/functional/xpack_accessibility.sh b/.buildkite/scripts/steps/functional/xpack_accessibility.sh deleted file mode 100755 index 5b098da858c96..0000000000000 --- a/.buildkite/scripts/steps/functional/xpack_accessibility.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/steps/functional/common.sh - -cd "$XPACK_DIR" - -echo --- Default Accessibility Tests - -checks-reporter-with-killswitch "X-Pack accessibility tests" \ - node scripts/functional_tests \ - --debug --bail \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --config test/accessibility/config.ts diff --git a/.buildkite/scripts/steps/functional/xpack_cigroup.sh b/.buildkite/scripts/steps/functional/xpack_cigroup.sh deleted file mode 100755 index 6877e88cff8b3..0000000000000 --- a/.buildkite/scripts/steps/functional/xpack_cigroup.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/steps/functional/common.sh - -export CI_GROUP=${CI_GROUP:-$((BUILDKITE_PARALLEL_JOB+1))} -export JOB=kibana-default-ciGroup${CI_GROUP} - -echo "--- Default CI Group $CI_GROUP" - -cd "$XPACK_DIR" - -checks-reporter-with-killswitch "X-Pack Chrome Functional tests / Group ${CI_GROUP}" \ - node scripts/functional_tests \ - --bail \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --include-tag "ciGroup$CI_GROUP" - -cd "$KIBANA_DIR" diff --git a/.buildkite/scripts/steps/functional/xpack_firefox.sh b/.buildkite/scripts/steps/functional/xpack_firefox.sh deleted file mode 100755 index a9a9704ea78de..0000000000000 --- a/.buildkite/scripts/steps/functional/xpack_firefox.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/steps/functional/common.sh - -cd "$XPACK_DIR" - -echo --- Default Firefox Smoke Tests - -checks-reporter-with-killswitch "X-Pack firefox smoke test" \ - node scripts/functional_tests \ - --debug --bail \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --include-tag "includeFirefox" \ - --config test/functional/config.firefox.js \ - --config test/functional_embedded/config.firefox.ts diff --git a/.buildkite/scripts/steps/functional/xpack_saved_object_field_metrics.sh b/.buildkite/scripts/steps/functional/xpack_saved_object_field_metrics.sh deleted file mode 100755 index 5e00d2446bf7a..0000000000000 --- a/.buildkite/scripts/steps/functional/xpack_saved_object_field_metrics.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/common/util.sh - -.buildkite/scripts/bootstrap.sh -.buildkite/scripts/download_build_artifacts.sh - -cd "$XPACK_DIR" - -echo --- Capture Kibana Saved Objects field count metrics -checks-reporter-with-killswitch "Capture Kibana Saved Objects field count metrics" \ - node scripts/functional_tests \ - --debug --bail \ - --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ - --config test/saved_objects_field_count/config.ts; diff --git a/.buildkite/scripts/steps/on_merge_build_and_metrics.sh b/.buildkite/scripts/steps/on_merge_build_and_metrics.sh index fb05bb99b0c54..de46ba58e9d52 100755 --- a/.buildkite/scripts/steps/on_merge_build_and_metrics.sh +++ b/.buildkite/scripts/steps/on_merge_build_and_metrics.sh @@ -7,4 +7,6 @@ set -euo pipefail .buildkite/scripts/build_kibana_plugins.sh .buildkite/scripts/post_build_kibana_plugins.sh .buildkite/scripts/post_build_kibana.sh + +source ".buildkite/scripts/steps/test/test_group_env.sh" .buildkite/scripts/saved_object_field_metrics.sh diff --git a/.buildkite/scripts/steps/on_merge_ts_refs_api_docs.sh b/.buildkite/scripts/steps/on_merge_ts_refs_api_docs.sh index 6d08fbb2c6835..5659db50e1404 100755 --- a/.buildkite/scripts/steps/on_merge_ts_refs_api_docs.sh +++ b/.buildkite/scripts/steps/on_merge_ts_refs_api_docs.sh @@ -2,7 +2,7 @@ set -euo pipefail -export BAZEL_CACHE_MODE=read-write # Populate bazel remote cache for linux +export BAZEL_CACHE_MODE=buildbuddy # Populate Buildbuddy bazel remote cache for linux export BUILD_TS_REFS_CACHE_ENABLE=true export BUILD_TS_REFS_CACHE_CAPTURE=true export DISABLE_BOOTSTRAP_VALIDATION=true diff --git a/.buildkite/scripts/steps/test/api_integration.sh b/.buildkite/scripts/steps/test/api_integration.sh deleted file mode 100755 index f56e98903d226..0000000000000 --- a/.buildkite/scripts/steps/test/api_integration.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/common/util.sh - -is_test_execution_step - -.buildkite/scripts/bootstrap.sh - -echo --- API Integration Tests -checks-reporter-with-killswitch "API Integration Tests" \ - node scripts/functional_tests \ - --config test/api_integration/config.js \ - --bail \ - --debug diff --git a/.buildkite/scripts/steps/test/ftr_configs.sh b/.buildkite/scripts/steps/test/ftr_configs.sh new file mode 100755 index 0000000000000..52a4b9572f5b6 --- /dev/null +++ b/.buildkite/scripts/steps/test/ftr_configs.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/scripts/steps/functional/common.sh +source .buildkite/scripts/steps/test/test_group_env.sh + +export JOB_NUM=$BUILDKITE_PARALLEL_JOB +export JOB=ftr-configs-${JOB_NUM} + +FAILED_CONFIGS_KEY="${BUILDKITE_STEP_ID}${BUILDKITE_PARALLEL_JOB:-0}" + +# a FTR failure will result in the script returning an exit code of 10 +exitCode=0 + +configs="${FTR_CONFIG:-}" + +# The first retry should only run the configs that failed in the previous attempt +# Any subsequent retries, which would generally only happen by someone clicking the button in the UI, will run everything +if [[ ! "$configs" && "${BUILDKITE_RETRY_COUNT:-0}" == "1" ]]; then + configs=$(buildkite-agent meta-data get "$FAILED_CONFIGS_KEY" --default '') + if [[ "$configs" ]]; then + echo "--- Retrying only failed configs" + echo "$configs" + fi +fi + +if [[ "$configs" == "" ]]; then + echo "--- downloading ftr test run order" + buildkite-agent artifact download ftr_run_order.json . + configs=$(jq -r '.groups[env.JOB_NUM | tonumber].names | .[]' ftr_run_order.json) +fi + +failedConfigs="" +results=() + +while read -r config; do + if [[ ! "$config" ]]; then + continue; + fi + + echo "--- $ node scripts/functional_tests --bail --config $config" + start=$(date +%s) + + # prevent non-zero exit code from breaking the loop + set +e; + node ./scripts/functional_tests \ + --bail \ + --kibana-install-dir "$KIBANA_BUILD_LOCATION" \ + --config="$config" + lastCode=$? + set -e; + + timeSec=$(($(date +%s)-start)) + if [[ $timeSec -gt 60 ]]; then + min=$((timeSec/60)) + sec=$((timeSec-(min*60))) + duration="${min}m ${sec}s" + else + duration="${timeSec}s" + fi + + results+=("- $config + duration: ${duration} + result: ${lastCode}") + + if [ $lastCode -ne 0 ]; then + exitCode=10 + echo "FTR exited with code $lastCode" + echo "^^^ +++" + + if [[ "$failedConfigs" ]]; then + failedConfigs="${failedConfigs}"$'\n'"$config" + else + failedConfigs="$config" + fi + fi +done <<< "$configs" + +if [[ "$failedConfigs" ]]; then + buildkite-agent meta-data set "$FAILED_CONFIGS_KEY" "$failedConfigs" +fi + +echo "--- FTR configs complete" +printf "%s\n" "${results[@]}" +echo "" + +exit $exitCode diff --git a/.buildkite/scripts/steps/test/jest_parallel.sh b/.buildkite/scripts/steps/test/jest_parallel.sh index 86c685d82c7e7..f7efc13b501bd 100755 --- a/.buildkite/scripts/steps/test/jest_parallel.sh +++ b/.buildkite/scripts/steps/test/jest_parallel.sh @@ -1,13 +1,14 @@ #!/bin/bash -set -uo pipefail +set -euo pipefail -source .buildkite/scripts/steps/test/jest_env.sh +source .buildkite/scripts/steps/test/test_group_env.sh export JOB=$BUILDKITE_PARALLEL_JOB # a jest failure will result in the script returning an exit code of 10 exitCode=0 +results=() if [[ "$1" == 'jest.config.js' ]]; then # run unit tests in parallel @@ -20,14 +21,32 @@ else fi export TEST_TYPE -echo "--- downloading integration test run order" +echo "--- downloading jest test run order" buildkite-agent artifact download jest_run_order.json . configs=$(jq -r 'getpath([env.TEST_TYPE]) | .groups[env.JOB | tonumber].names | .[]' jest_run_order.json) while read -r config; do echo "--- $ node scripts/jest --config $config" + start=$(date +%s) + + # prevent non-zero exit code from breaking the loop + set +e; NODE_OPTIONS="--max-old-space-size=14336" node ./scripts/jest --config="$config" "$parallelism" --coverage=false --passWithNoTests lastCode=$? + set -e; + + timeSec=$(($(date +%s)-start)) + if [[ $timeSec -gt 60 ]]; then + min=$((timeSec/60)) + sec=$((timeSec-(min*60))) + duration="${min}m ${sec}s" + else + duration="${timeSec}s" + fi + + results+=("- $config + duration: ${duration} + result: ${lastCode}") if [ $lastCode -ne 0 ]; then exitCode=10 @@ -36,4 +55,8 @@ while read -r config; do fi done <<< "$configs" +echo "--- Jest configs complete" +printf "%s\n" "${results[@]}" +echo "" + exit $exitCode diff --git a/.buildkite/scripts/steps/test/pick_jest_config_run_order.sh b/.buildkite/scripts/steps/test/pick_jest_config_run_order.sh deleted file mode 100644 index 37d4e629c90b0..0000000000000 --- a/.buildkite/scripts/steps/test/pick_jest_config_run_order.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/common/util.sh -source .buildkite/scripts/steps/test/jest_env.sh - -echo '--- Pick Jest Config Run Order' -node "$(dirname "${0}")/pick_jest_config_run_order.js" diff --git a/.buildkite/scripts/steps/test/pick_jest_config_run_order.js b/.buildkite/scripts/steps/test/pick_test_group_run_order.js similarity index 100% rename from .buildkite/scripts/steps/test/pick_jest_config_run_order.js rename to .buildkite/scripts/steps/test/pick_test_group_run_order.js diff --git a/.buildkite/scripts/steps/test/pick_test_group_run_order.sh b/.buildkite/scripts/steps/test/pick_test_group_run_order.sh new file mode 100644 index 0000000000000..3bb09282efb41 --- /dev/null +++ b/.buildkite/scripts/steps/test/pick_test_group_run_order.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/scripts/common/util.sh +source .buildkite/scripts/steps/test/test_group_env.sh + +echo '--- Pick Test Group Run Order' +node "$(dirname "${0}")/pick_test_group_run_order.js" diff --git a/.buildkite/scripts/steps/test/jest_env.sh b/.buildkite/scripts/steps/test/test_group_env.sh similarity index 80% rename from .buildkite/scripts/steps/test/jest_env.sh rename to .buildkite/scripts/steps/test/test_group_env.sh index 80e88bebba184..3a8c12fdb4a52 100644 --- a/.buildkite/scripts/steps/test/jest_env.sh +++ b/.buildkite/scripts/steps/test/test_group_env.sh @@ -5,3 +5,4 @@ set -euo pipefail # keys used to associate test group data in ci-stats with Jest execution order export TEST_GROUP_TYPE_UNIT="Jest Unit Tests" export TEST_GROUP_TYPE_INTEGRATION="Jest Integration Tests" +export TEST_GROUP_TYPE_FUNCTIONAL="Functional Tests" diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7f7c048717f02..156a306b12e89 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -128,6 +128,7 @@ /src/apm.js @elastic/kibana-core @vigneshshanmugam /packages/kbn-apm-config-loader/ @elastic/kibana-core @vigneshshanmugam /src/core/types/elasticsearch @elastic/apm-ui +/packages/elastic-apm-synthtrace/ @elastic/apm-ui #CC# /src/plugins/apm_oss/ @elastic/apm-ui #CC# /x-pack/plugins/observability/ @elastic/apm-ui diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index 227bba7d93599..b5fd8147b8a2e 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -1,12 +1,209 @@ { "id": "actions", "client": { - "classes": [], + "classes": [ + { + "parentPluginId": "actions", + "id": "def-public.Plugin", + "type": "Class", + "tags": [], + "label": "Plugin", + "description": [], + "signature": [ + { + "pluginId": "actions", + "scope": "public", + "docId": "kibActionsPluginApi", + "section": "def-public.Plugin", + "text": "Plugin" + }, + " implements ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.Plugin", + "text": "Plugin" + }, + "<", + { + "pluginId": "actions", + "scope": "public", + "docId": "kibActionsPluginApi", + "section": "def-public.ActionsPublicPluginSetup", + "text": "ActionsPublicPluginSetup" + }, + ", void, object, object>" + ], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-public.Plugin.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-public.Plugin.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "ctx", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCorePluginApi", + "section": "def-public.PluginInitializerContext", + "text": "PluginInitializerContext" + }, + "<", + "Config", + ">" + ], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "actions", + "id": "def-public.Plugin.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "actions", + "scope": "public", + "docId": "kibActionsPluginApi", + "section": "def-public.ActionsPublicPluginSetup", + "text": "ActionsPublicPluginSetup" + } + ], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "actions", + "id": "def-public.Plugin.start", + "type": "Function", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "() => void" + ], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "functions": [], "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "setup": { + "parentPluginId": "actions", + "id": "def-public.ActionsPublicPluginSetup", + "type": "Interface", + "tags": [], + "label": "ActionsPublicPluginSetup", + "description": [], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-public.ActionsPublicPluginSetup.validateEmailAddresses", + "type": "Function", + "tags": [], + "label": "validateEmailAddresses", + "description": [], + "signature": [ + "(emails: string[], options?: ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidateEmailAddressesOptions", + "text": "ValidateEmailAddressesOptions" + }, + " | undefined) => ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidatedEmail", + "text": "ValidatedEmail" + }, + "[]" + ], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-public.ActionsPublicPluginSetup.validateEmailAddresses.$1", + "type": "Array", + "tags": [], + "label": "emails", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "actions", + "id": "def-public.ActionsPublicPluginSetup.validateEmailAddresses.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidateEmailAddressesOptions", + "text": "ValidateEmailAddressesOptions" + }, + " | undefined" + ], + "path": "x-pack/plugins/actions/public/plugin.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "lifecycle": "setup", + "initialIsOpen": true + } }, "server": { "classes": [], @@ -181,6 +378,16 @@ "description": [], "path": "x-pack/plugins/actions/server/types.ts", "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-server.ActionResult.isDeprecated", + "type": "boolean", + "tags": [], + "label": "isDeprecated", + "description": [], + "path": "x-pack/plugins/actions/server/types.ts", + "deprecated": false } ], "initialIsOpen": false @@ -738,7 +945,7 @@ "label": "ActionParamsType", "description": [], "signature": [ - "{ readonly source?: string | undefined; readonly summary?: string | undefined; readonly group?: string | undefined; readonly timestamp?: string | undefined; readonly eventAction?: \"resolve\" | \"trigger\" | \"acknowledge\" | undefined; readonly dedupKey?: string | undefined; readonly severity?: \"error\" | \"info\" | \"warning\" | \"critical\" | undefined; readonly component?: string | undefined; readonly class?: string | undefined; }" + "{ readonly source?: string | undefined; readonly summary?: string | undefined; readonly group?: string | undefined; readonly timestamp?: string | undefined; readonly eventAction?: \"resolve\" | \"trigger\" | \"acknowledge\" | undefined; readonly dedupKey?: string | undefined; readonly severity?: \"error\" | \"warning\" | \"info\" | \"critical\" | undefined; readonly component?: string | undefined; readonly class?: string | undefined; }" ], "path": "x-pack/plugins/actions/server/builtin_action_types/pagerduty.ts", "deprecated": false, @@ -1586,6 +1793,85 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "actions", + "id": "def-common.hasMustacheTemplate", + "type": "Function", + "tags": [], + "label": "hasMustacheTemplate", + "description": [ + "does the string contain `{{.*}}`?" + ], + "signature": [ + "(string: string) => boolean" + ], + "path": "x-pack/plugins/actions/common/mustache_template.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.hasMustacheTemplate.$1", + "type": "string", + "tags": [], + "label": "string", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/actions/common/mustache_template.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.invalidEmailsAsMessage", + "type": "Function", + "tags": [], + "label": "invalidEmailsAsMessage", + "description": [], + "signature": [ + "(validatedEmails: ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidatedEmail", + "text": "ValidatedEmail" + }, + "[]) => string | undefined" + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.invalidEmailsAsMessage.$1", + "type": "Array", + "tags": [], + "label": "validatedEmails", + "description": [], + "signature": [ + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidatedEmail", + "text": "ValidatedEmail" + }, + "[]" + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "actions", "id": "def-common.isActionTypeExecutorResult", @@ -1616,70 +1902,249 @@ ], "returnComment": [], "initialIsOpen": false - } - ], - "interfaces": [ + }, { "parentPluginId": "actions", - "id": "def-common.ActionResult", - "type": "Interface", + "id": "def-common.validateEmailAddresses", + "type": "Function", "tags": [], - "label": "ActionResult", + "label": "validateEmailAddresses", "description": [], - "path": "x-pack/plugins/actions/common/types.ts", - "deprecated": false, - "children": [ + "signature": [ + "(allowedDomains: string[] | null, addresses: string[], options: ", { - "parentPluginId": "actions", - "id": "def-common.ActionResult.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "x-pack/plugins/actions/common/types.ts", - "deprecated": false + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidateEmailAddressesOptions", + "text": "ValidateEmailAddressesOptions" }, + ") => ", { - "parentPluginId": "actions", - "id": "def-common.ActionResult.actionTypeId", - "type": "string", - "tags": [], - "label": "actionTypeId", - "description": [], - "path": "x-pack/plugins/actions/common/types.ts", - "deprecated": false + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidatedEmail", + "text": "ValidatedEmail" }, + "[]" + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "children": [ { "parentPluginId": "actions", - "id": "def-common.ActionResult.name", - "type": "string", + "id": "def-common.validateEmailAddresses.$1", + "type": "CompoundType", "tags": [], - "label": "name", + "label": "allowedDomains", "description": [], - "path": "x-pack/plugins/actions/common/types.ts", - "deprecated": false + "signature": [ + "string[] | null" + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "isRequired": false }, { "parentPluginId": "actions", - "id": "def-common.ActionResult.config", - "type": "Object", + "id": "def-common.validateEmailAddresses.$2", + "type": "Array", "tags": [], - "label": "config", + "label": "addresses", "description": [], "signature": [ - "{ [x: string]: any; }" + "string[]" ], - "path": "x-pack/plugins/actions/common/types.ts", - "deprecated": false + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "isRequired": true }, { "parentPluginId": "actions", - "id": "def-common.ActionResult.isPreconfigured", - "type": "boolean", + "id": "def-common.validateEmailAddresses.$3", + "type": "Object", "tags": [], - "label": "isPreconfigured", + "label": "options", "description": [], - "path": "x-pack/plugins/actions/common/types.ts", + "signature": [ + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidateEmailAddressesOptions", + "text": "ValidateEmailAddressesOptions" + } + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.validateEmailAddressesAsAlwaysValid", + "type": "Function", + "tags": [], + "label": "validateEmailAddressesAsAlwaysValid", + "description": [], + "signature": [ + "(addresses: string[]) => ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ValidatedEmail", + "text": "ValidatedEmail" + }, + "[]" + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.validateEmailAddressesAsAlwaysValid.$1", + "type": "Array", + "tags": [], + "label": "addresses", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.withoutMustacheTemplate", + "type": "Function", + "tags": [], + "label": "withoutMustacheTemplate", + "description": [ + "filter strings that do not contain `{{.*}}`" + ], + "signature": [ + "(strings: string[]) => string[]" + ], + "path": "x-pack/plugins/actions/common/mustache_template.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.withoutMustacheTemplate.$1", + "type": "Array", + "tags": [], + "label": "strings", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/actions/common/mustache_template.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "actions", + "id": "def-common.ActionResult", + "type": "Interface", + "tags": [], + "label": "ActionResult", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.ActionResult.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ActionResult.actionTypeId", + "type": "string", + "tags": [], + "label": "actionTypeId", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ActionResult.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ActionResult.config", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ActionResult.isPreconfigured", + "type": "boolean", + "tags": [], + "label": "isPreconfigured", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ActionsPublicConfigType", + "type": "Interface", + "tags": [], + "label": "ActionsPublicConfigType", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.ActionsPublicConfigType.allowedEmailDomains", + "type": "Array", + "tags": [], + "label": "allowedEmailDomains", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/actions/common/types.ts", "deprecated": false } ], @@ -1858,6 +2323,165 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.SNProductsConfigValue", + "type": "Interface", + "tags": [], + "label": "SNProductsConfigValue", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.SNProductsConfigValue.table", + "type": "string", + "tags": [], + "label": "table", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.SNProductsConfigValue.appScope", + "type": "string", + "tags": [], + "label": "appScope", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.SNProductsConfigValue.useImportAPI", + "type": "boolean", + "tags": [], + "label": "useImportAPI", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.SNProductsConfigValue.importSetTable", + "type": "string", + "tags": [], + "label": "importSetTable", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.SNProductsConfigValue.commentFieldKey", + "type": "string", + "tags": [], + "label": "commentFieldKey", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.SNProductsConfigValue.appId", + "type": "string", + "tags": [], + "label": "appId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ValidatedEmail", + "type": "Interface", + "tags": [], + "label": "ValidatedEmail", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.ValidatedEmail.address", + "type": "string", + "tags": [], + "label": "address", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ValidatedEmail.valid", + "type": "boolean", + "tags": [], + "label": "valid", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ValidatedEmail.reason", + "type": "CompoundType", + "tags": [], + "label": "reason", + "description": [], + "signature": [ + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.InvalidEmailReason", + "text": "InvalidEmailReason" + }, + " | undefined" + ], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ValidateEmailAddressesOptions", + "type": "Interface", + "tags": [], + "label": "ValidateEmailAddressesOptions", + "description": [ + "Options that can be used when validating email addresses" + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.ValidateEmailAddressesOptions.treatMustacheTemplatesAsValid", + "type": "CompoundType", + "tags": [], + "label": "treatMustacheTemplatesAsValid", + "description": [ + "treat any address which contains a mustache template as valid" + ], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/actions/common/validate_email_addresses.ts", + "deprecated": false + } + ], + "initialIsOpen": false } ], "enums": [ @@ -1871,6 +2495,17 @@ "path": "x-pack/plugins/actions/common/index.ts", "deprecated": false, "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.InvalidEmailReason", + "type": "Enum", + "tags": [], + "label": "InvalidEmailReason", + "description": [], + "path": "x-pack/plugins/actions/common/types.ts", + "deprecated": false, + "initialIsOpen": false } ], "misc": [ @@ -1969,6 +2604,34 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "actions", + "id": "def-common.DEFAULT_ALERTS_GROUPING_KEY", + "type": "string", + "tags": [], + "label": "DEFAULT_ALERTS_GROUPING_KEY", + "description": [], + "signature": [ + "\"{{rule.id}}:{{alert.id}}\"" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.FIELD_PREFIX", + "type": "string", + "tags": [], + "label": "FIELD_PREFIX", + "description": [], + "signature": [ + "\"u_\"" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "actions", "id": "def-common.INTERNAL_BASE_ACTION_API_PATH", @@ -2066,8 +2729,343 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ServiceNowITOMActionTypeId", + "type": "string", + "tags": [], + "label": "ServiceNowITOMActionTypeId", + "description": [], + "signature": [ + "\".servicenow-itom\"" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ServiceNowITSMActionTypeId", + "type": "string", + "tags": [], + "label": "ServiceNowITSMActionTypeId", + "description": [], + "signature": [ + "\".servicenow\"" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.serviceNowITSMTable", + "type": "string", + "tags": [], + "label": "serviceNowITSMTable", + "description": [], + "signature": [ + "\"incident\"" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.ServiceNowSIRActionTypeId", + "type": "string", + "tags": [], + "label": "ServiceNowSIRActionTypeId", + "description": [], + "signature": [ + "\".servicenow-sir\"" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.serviceNowSIRTable", + "type": "string", + "tags": [], + "label": "serviceNowSIRTable", + "description": [], + "signature": [ + "\"sn_si_incident\"" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.SNProductsConfig", + "type": "Type", + "tags": [], + "label": "SNProductsConfig", + "description": [], + "signature": [ + "{ [x: string]: ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.SNProductsConfigValue", + "text": "SNProductsConfigValue" + }, + "; }" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "initialIsOpen": false } ], - "objects": [] + "objects": [ + { + "parentPluginId": "actions", + "id": "def-common.MustacheInEmailRegExp", + "type": "Object", + "tags": [], + "label": "MustacheInEmailRegExp", + "description": [], + "signature": [ + "RegExp" + ], + "path": "x-pack/plugins/actions/common/mustache_template.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig", + "type": "Object", + "tags": [], + "label": "snExternalServiceConfig", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenow", + "type": "Object", + "tags": [], + "label": "'.servicenow'", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenow.importSetTable", + "type": "string", + "tags": [], + "label": "importSetTable", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenow.appScope", + "type": "string", + "tags": [], + "label": "appScope", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenow.table", + "type": "string", + "tags": [], + "label": "table", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenow.useImportAPI", + "type": "boolean", + "tags": [], + "label": "useImportAPI", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenow.commentFieldKey", + "type": "string", + "tags": [], + "label": "commentFieldKey", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenow.appId", + "type": "string", + "tags": [], + "label": "appId", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowsir", + "type": "Object", + "tags": [], + "label": "'.servicenow-sir'", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowsir.importSetTable", + "type": "string", + "tags": [], + "label": "importSetTable", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowsir.appScope", + "type": "string", + "tags": [], + "label": "appScope", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowsir.table", + "type": "string", + "tags": [], + "label": "table", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowsir.useImportAPI", + "type": "boolean", + "tags": [], + "label": "useImportAPI", + "description": [], + "signature": [ + "true" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowsir.commentFieldKey", + "type": "string", + "tags": [], + "label": "commentFieldKey", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowsir.appId", + "type": "string", + "tags": [], + "label": "appId", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowitom", + "type": "Object", + "tags": [], + "label": "'.servicenow-itom'", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowitom.importSetTable", + "type": "string", + "tags": [], + "label": "importSetTable", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowitom.appScope", + "type": "string", + "tags": [], + "label": "appScope", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowitom.table", + "type": "string", + "tags": [], + "label": "table", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowitom.useImportAPI", + "type": "boolean", + "tags": [], + "label": "useImportAPI", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.snExternalServiceConfig..servicenowitom.commentFieldKey", + "type": "string", + "tags": [], + "label": "commentFieldKey", + "description": [], + "path": "x-pack/plugins/actions/common/servicenow_config.ts", + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 72bb9168e149d..267f24e44374c 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github summary: API docs for the actions plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] 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. --- @@ -18,7 +18,15 @@ Contact [Response Ops](https://github.com/orgs/elastic/teams/response-ops) for q | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 127 | 0 | 127 | 10 | +| 195 | 0 | 191 | 11 | + +## Client + +### Setup + + +### Classes + ## Server @@ -39,6 +47,9 @@ Contact [Response Ops](https://github.com/orgs/elastic/teams/response-ops) for q ## Common +### Objects + + ### Functions diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index ae965957eacb7..4403e9604c11a 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github summary: API docs for the advancedSettings plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] 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. --- diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index dcaed350c4882..a7c437fda9dbf 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -2456,20 +2456,6 @@ ], "path": "x-pack/plugins/alerting/server/types.ts", "deprecated": false - }, - { - "parentPluginId": "alerting", - "id": "def-server.RuleType.config", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "RuleTypeConfig", - " | undefined" - ], - "path": "x-pack/plugins/alerting/server/types.ts", - "deprecated": false } ], "initialIsOpen": false @@ -3889,10 +3875,10 @@ }, { "parentPluginId": "alerting", - "id": "def-common.IExecutionLog.num_scheduled_actions", + "id": "def-common.IExecutionLog.num_generated_actions", "type": "number", "tags": [], - "label": "num_scheduled_actions", + "label": "num_generated_actions", "description": [], "path": "x-pack/plugins/alerting/common/execution_log_types.ts", "deprecated": false @@ -4547,72 +4533,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionRunResult", - "type": "Interface", - "tags": [], - "label": "RuleExecutionRunResult", - "description": [], - "path": "x-pack/plugins/alerting/common/rule_task_instance.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionRunResult.state", - "type": "CompoundType", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "{ alertTypeState?: { [x: string]: unknown; } | undefined; alertInstances?: { [x: string]: { state?: { [x: string]: unknown; } | undefined; meta?: { lastScheduledActions?: ({ subgroup?: string | undefined; } & { group: string; date: Date; }) | undefined; } | undefined; }; } | undefined; previousStartedAt?: Date | null | undefined; } & { metrics: { numSearches?: number | undefined; totalSearchDurationMs?: number | undefined; esSearchDurationMs?: number | undefined; }; alertExecutionStore: { numberOfTriggeredActions?: number | undefined; numberOfScheduledActions?: number | undefined; triggeredActionsStatus?: string | undefined; }; }" - ], - "path": "x-pack/plugins/alerting/common/rule_task_instance.ts", - "deprecated": false - }, - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionRunResult.monitoring", - "type": "Object", - "tags": [], - "label": "monitoring", - "description": [], - "signature": [ - { - "pluginId": "alerting", - "scope": "common", - "docId": "kibAlertingPluginApi", - "section": "def-common.RuleMonitoring", - "text": "RuleMonitoring" - }, - " | undefined" - ], - "path": "x-pack/plugins/alerting/common/rule_task_instance.ts", - "deprecated": false - }, - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionRunResult.schedule", - "type": "Object", - "tags": [], - "label": "schedule", - "description": [], - "signature": [ - { - "pluginId": "alerting", - "scope": "common", - "docId": "kibAlertingPluginApi", - "section": "def-common.IntervalSchedule", - "text": "IntervalSchedule" - }, - " | undefined" - ], - "path": "x-pack/plugins/alerting/common/rule_task_instance.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "alerting", "id": "def-common.RuleExecutionStatus", @@ -4631,46 +4551,7 @@ "label": "status", "description": [], "signature": [ - "\"error\" | \"unknown\" | \"warning\" | \"pending\" | \"ok\" | \"active\"" - ], - "path": "x-pack/plugins/alerting/common/rule.ts", - "deprecated": false - }, - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionStatus.numberOfTriggeredActions", - "type": "number", - "tags": [], - "label": "numberOfTriggeredActions", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "x-pack/plugins/alerting/common/rule.ts", - "deprecated": false - }, - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionStatus.numberOfScheduledActions", - "type": "number", - "tags": [], - "label": "numberOfScheduledActions", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "x-pack/plugins/alerting/common/rule.ts", - "deprecated": false - }, - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionStatus.metrics", - "type": "Object", - "tags": [], - "label": "metrics", - "description": [], - "signature": [ - "{ numSearches?: number | undefined; totalSearchDurationMs?: number | undefined; esSearchDurationMs?: number | undefined; } | undefined" + "\"error\" | \"warning\" | \"unknown\" | \"pending\" | \"ok\" | \"active\"" ], "path": "x-pack/plugins/alerting/common/rule.ts", "deprecated": false @@ -5103,6 +4984,17 @@ } ], "enums": [ + { + "parentPluginId": "alerting", + "id": "def-common.ActionsCompletion", + "type": "Enum", + "tags": [], + "label": "ActionsCompletion", + "description": [], + "path": "x-pack/plugins/alerting/common/rule_task_instance.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "alerting", "id": "def-common.HealthStatus", @@ -5263,7 +5155,7 @@ "label": "ExecutionLogSortFields", "description": [], "signature": [ - "\"timestamp\" | \"execution_duration\" | \"total_search_duration\" | \"es_search_duration\" | \"schedule_delay\" | \"num_triggered_actions\" | \"num_scheduled_actions\"" + "\"timestamp\" | \"execution_duration\" | \"total_search_duration\" | \"es_search_duration\" | \"schedule_delay\" | \"num_triggered_actions\" | \"num_generated_actions\"" ], "path": "x-pack/plugins/alerting/common/execution_log_types.ts", "deprecated": false, @@ -5463,34 +5355,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionMetrics", - "type": "Type", - "tags": [], - "label": "RuleExecutionMetrics", - "description": [], - "signature": [ - "{ numSearches?: number | undefined; totalSearchDurationMs?: number | undefined; esSearchDurationMs?: number | undefined; }" - ], - "path": "x-pack/plugins/alerting/common/rule_task_instance.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "alerting", - "id": "def-common.RuleExecutionState", - "type": "Type", - "tags": [], - "label": "RuleExecutionState", - "description": [], - "signature": [ - "{ alertTypeState?: { [x: string]: unknown; } | undefined; alertInstances?: { [x: string]: { state?: { [x: string]: unknown; } | undefined; meta?: { lastScheduledActions?: ({ subgroup?: string | undefined; } & { group: string; date: Date; }) | undefined; } | undefined; }; } | undefined; previousStartedAt?: Date | null | undefined; } & { metrics: { numSearches?: number | undefined; totalSearchDurationMs?: number | undefined; esSearchDurationMs?: number | undefined; }; alertExecutionStore: { numberOfTriggeredActions?: number | undefined; numberOfScheduledActions?: number | undefined; triggeredActionsStatus?: string | undefined; }; }" - ], - "path": "x-pack/plugins/alerting/common/rule_task_instance.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "alerting", "id": "def-common.RuleExecutionStatuses", @@ -5499,7 +5363,7 @@ "label": "RuleExecutionStatuses", "description": [], "signature": [ - "\"error\" | \"unknown\" | \"warning\" | \"pending\" | \"ok\" | \"active\"" + "\"error\" | \"warning\" | \"unknown\" | \"pending\" | \"ok\" | \"active\"" ], "path": "x-pack/plugins/alerting/common/rule.ts", "deprecated": false, @@ -5750,7 +5614,7 @@ "label": "executionLogSortableColumns", "description": [], "signature": [ - "readonly [\"timestamp\", \"execution_duration\", \"total_search_duration\", \"es_search_duration\", \"schedule_delay\", \"num_triggered_actions\", \"num_scheduled_actions\"]" + "readonly [\"timestamp\", \"execution_duration\", \"total_search_duration\", \"es_search_duration\", \"schedule_delay\", \"num_triggered_actions\", \"num_generated_actions\"]" ], "path": "x-pack/plugins/alerting/common/execution_log_types.ts", "deprecated": false, diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 8ed04bc845f1a..cc9c60a87987e 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github summary: API docs for the alerting plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] 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. --- @@ -18,7 +18,7 @@ Contact [Response Ops](https://github.com/orgs/elastic/teams/response-ops) for q | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 334 | 0 | 325 | 20 | +| 325 | 0 | 316 | 19 | ## Client diff --git a/api_docs/apm.devdocs.json b/api_docs/apm.devdocs.json index bd88217f34fc3..302f8c93bdea9 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -345,12 +345,43 @@ { "parentPluginId": "apm", "id": "def-server.APMRouteHandlerResources.context", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "context", "description": [], "signature": [ - "ApmPluginRequestHandlerContext" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + " & { licensing: Promise<", + { + "pluginId": "licensing", + "scope": "server", + "docId": "kibLicensingPluginApi", + "section": "def-server.LicensingApiRequestHandlerContext", + "text": "LicensingApiRequestHandlerContext" + }, + ">; alerting: Promise<", + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.AlertingApiRequestHandlerContext", + "text": "AlertingApiRequestHandlerContext" + }, + ">; rac: Promise<", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.RacApiRequestHandlerContext", + "text": "RacApiRequestHandlerContext" + }, + ">; }" ], "path": "x-pack/plugins/apm/server/routes/typings.ts", "deprecated": false @@ -491,7 +522,7 @@ "section": "def-server.RequestHandlerContext", "text": "RequestHandlerContext" }, - " & { licensing: ", + " & { licensing: Promise<", { "pluginId": "licensing", "scope": "server", @@ -499,7 +530,7 @@ "section": "def-server.LicensingApiRequestHandlerContext", "text": "LicensingApiRequestHandlerContext" }, - "; }, request: ", + ">; }, request: ", { "pluginId": "core", "scope": "server", @@ -2979,7 +3010,11 @@ "Type", "; end: ", "Type", - "; }>]>; }>, ", + "; }>, ", + "TypeC", + "<{ probability: ", + "Type", + "; }>]>; }>, ", { "pluginId": "apm", "scope": "server", @@ -4010,6 +4045,8 @@ "<{ query: ", "IntersectionC", "<[", + "IntersectionC", + "<[", "TypeC", "<{ environment: ", "UnionC", @@ -4039,6 +4076,10 @@ "StringC", "; }>, ", "TypeC", + "<{ probability: ", + "Type", + "; }>]>, ", + "TypeC", "<{ serviceNames: ", "Type", "; }>]>; }>, ", @@ -4085,7 +4126,11 @@ "PartialC", "<{ serviceGroup: ", "StringC", - "; }>]>; }>, ", + "; }>, ", + "TypeC", + "<{ probability: ", + "Type", + "; }>]>; }>, ", { "pluginId": "apm", "scope": "server", @@ -5219,12 +5264,43 @@ { "parentPluginId": "apm", "id": "def-server.APMPluginSetup.createApmEventClient.$1.context", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "context", "description": [], "signature": [ - "ApmPluginRequestHandlerContext" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + " & { licensing: Promise<", + { + "pluginId": "licensing", + "scope": "server", + "docId": "kibLicensingPluginApi", + "section": "def-server.LicensingApiRequestHandlerContext", + "text": "LicensingApiRequestHandlerContext" + }, + ">; alerting: Promise<", + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.AlertingApiRequestHandlerContext", + "text": "AlertingApiRequestHandlerContext" + }, + ">; rac: Promise<", + { + "pluginId": "ruleRegistry", + "scope": "server", + "docId": "kibRuleRegistryPluginApi", + "section": "def-server.RacApiRequestHandlerContext", + "text": "RacApiRequestHandlerContext" + }, + ">; }" ], "path": "x-pack/plugins/apm/server/types.ts", "deprecated": false diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 2337384644551..9dd3c0c89fdf4 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github summary: API docs for the apm plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] 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. --- diff --git a/api_docs/banners.devdocs.json b/api_docs/banners.devdocs.json index eae41491a43d2..d370967767d93 100644 --- a/api_docs/banners.devdocs.json +++ b/api_docs/banners.devdocs.json @@ -38,7 +38,7 @@ "label": "placement", "description": [], "signature": [ - "\"top\" | \"disabled\"" + "\"disabled\" | \"top\"" ], "path": "x-pack/plugins/banners/common/types.ts", "deprecated": false @@ -129,7 +129,7 @@ "label": "BannerPlacement", "description": [], "signature": [ - "\"top\" | \"disabled\"" + "\"disabled\" | \"top\"" ], "path": "x-pack/plugins/banners/common/types.ts", "deprecated": false, diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 732a3f841f0c3..e22924610e9ae 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github summary: API docs for the banners plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] 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. --- diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index c19e0fecea759..2b2f9e84817e5 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github summary: API docs for the bfetch plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] 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. --- diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 623e6529ac3f4..cc1fdd45c597c 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github summary: API docs for the canvas plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] 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. --- diff --git a/api_docs/cases.devdocs.json b/api_docs/cases.devdocs.json index 76d0d7ae642cc..a78b058751b23 100644 --- a/api_docs/cases.devdocs.json +++ b/api_docs/cases.devdocs.json @@ -1348,7 +1348,9 @@ "type": "string", "tags": [], "label": "SECURITY_SOLUTION_OWNER", - "description": [], + "description": [ + "\nOwner" + ], "signature": [ "\"securitySolution\"" ], diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 9ec7594d975cd..3b1c2a5e78c50 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github summary: API docs for the cases plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] 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. --- @@ -18,7 +18,7 @@ Contact [ResponseOps](https://github.com/orgs/elastic/teams/response-ops) for qu | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 71 | 0 | 58 | 19 | +| 71 | 0 | 57 | 19 | ## Client diff --git a/api_docs/charts.devdocs.json b/api_docs/charts.devdocs.json index d65c1a3de92dc..584443f5b46dc 100644 --- a/api_docs/charts.devdocs.json +++ b/api_docs/charts.devdocs.json @@ -9,29 +9,68 @@ "type": "Function", "tags": [], "label": "ColorPicker", - "description": [], + "description": [ + "\nA `ColorPicker` component that is wrapped by the `withSuspense` HOC. This component can\nbe used directly by consumers and will load the `ColorPickerLazy` component lazily with\na predefined fallback and error boundary." + ], "signature": [ - "({ onChange, color: selectedColor, label, useLegacyColors, colorIsOverwritten, onKeyDown, maxDepth, layerIndex, }: ColorPickerProps) => JSX.Element" + "React.ForwardRefExoticComponent<", + "ColorPickerProps", + " & React.RefAttributes<{}>>" ], - "path": "src/plugins/charts/public/static/components/color_picker.tsx", + "path": "src/plugins/charts/public/static/components/index.ts", "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "charts", "id": "def-public.ColorPicker.$1", - "type": "Object", + "type": "Uncategorized", "tags": [], - "label": "{\n onChange,\n color: selectedColor,\n label,\n useLegacyColors = true,\n colorIsOverwritten = true,\n onKeyDown,\n maxDepth,\n layerIndex,\n}", + "label": "props", "description": [], "signature": [ - "ColorPickerProps" + "P" ], - "path": "src/plugins/charts/public/static/components/color_picker.tsx", - "deprecated": false, - "isRequired": true + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false } ], + "initialIsOpen": false + }, + { + "parentPluginId": "charts", + "id": "def-public.ColorPickerLazy", + "type": "Function", + "tags": [], + "label": "ColorPickerLazy", + "description": [ + "\nThe Lazily-loaded `ColorPicker` component. Consumers should use `React.Suspense` or\nthe withSuspense` HOC to load this component." + ], + "signature": [ + "React.ExoticComponent<", + "ColorPickerProps", + "> & { readonly _result: ({ onChange, color: selectedColor, label, useLegacyColors, colorIsOverwritten, onKeyDown, maxDepth, layerIndex, }: ", + "ColorPickerProps", + ") => JSX.Element; }" + ], + "path": "src/plugins/charts/public/static/components/index.ts", + "deprecated": false, "returnComment": [], + "children": [ + { + "parentPluginId": "charts", + "id": "def-public.ColorPickerLazy.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], "initialIsOpen": false }, { @@ -108,9 +147,9 @@ "label": "EmptyPlaceholder", "description": [], "signature": [ - "({ icon, iconColor, message, dataTestSubj, className, }: { icon: ", - "IconType", - "; iconColor?: string | undefined; message?: JSX.Element | undefined; dataTestSubj?: string | undefined; className?: string | undefined; }) => JSX.Element" + "({ icon, iconColor, message, dataTestSubj, className, }: ", + "EmptyPlaceholderProps", + ") => JSX.Element" ], "path": "src/plugins/charts/public/static/components/empty_placeholder.tsx", "deprecated": false, @@ -122,75 +161,12 @@ "tags": [], "label": "{\n icon,\n iconColor = 'subdued',\n message = ,\n dataTestSubj = 'emptyPlaceholder',\n className,\n}", "description": [], + "signature": [ + "EmptyPlaceholderProps" + ], "path": "src/plugins/charts/public/static/components/empty_placeholder.tsx", "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.EmptyPlaceholder.$1.icon", - "type": "CompoundType", - "tags": [], - "label": "icon", - "description": [], - "signature": [ - "string | React.ComponentType<{}>" - ], - "path": "src/plugins/charts/public/static/components/empty_placeholder.tsx", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.EmptyPlaceholder.$1.iconColor", - "type": "string", - "tags": [], - "label": "iconColor", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/charts/public/static/components/empty_placeholder.tsx", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.EmptyPlaceholder.$1.message", - "type": "Object", - "tags": [], - "label": "message", - "description": [], - "signature": [ - "JSX.Element | undefined" - ], - "path": "src/plugins/charts/public/static/components/empty_placeholder.tsx", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.EmptyPlaceholder.$1.dataTestSubj", - "type": "string", - "tags": [], - "label": "dataTestSubj", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/charts/public/static/components/empty_placeholder.tsx", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.EmptyPlaceholder.$1.className", - "type": "string", - "tags": [], - "label": "className", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/charts/public/static/components/empty_placeholder.tsx", - "deprecated": false - } - ] + "isRequired": true } ], "returnComment": [], @@ -628,11 +604,15 @@ "type": "Function", "tags": [], "label": "LegendToggle", - "description": [], + "description": [ + "\nA `LegendToggle` component that is wrapped by the `withSuspense` HOC. This component can\nbe used directly by consumers and will load the `LegendToggleLazy` component lazily with\na predefined fallback and error boundary." + ], "signature": [ - "React.NamedExoticComponent & { readonly type: ({ onClick, showLegend, legendPosition }: LegendToggleProps) => JSX.Element; }" + "React.ForwardRefExoticComponent<", + "LegendToggleProps", + " & React.RefAttributes<{}>>" ], - "path": "src/plugins/charts/public/static/components/legend_toggle.tsx", + "path": "src/plugins/charts/public/static/components/index.ts", "deprecated": false, "returnComment": [], "children": [ @@ -652,6 +632,42 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "charts", + "id": "def-public.LegendToggleLazy", + "type": "Function", + "tags": [], + "label": "LegendToggleLazy", + "description": [ + "\nThe Lazily-loaded `LegendToggle` component. Consumers should use `React.Suspense` or\nthe withSuspense` HOC to load this component." + ], + "signature": [ + "React.ExoticComponent<", + "LegendToggleProps", + "> & { readonly _result: React.MemoExoticComponent<({ onClick, showLegend, legendPosition }: ", + "LegendToggleProps", + ") => JSX.Element>; }" + ], + "path": "src/plugins/charts/public/static/components/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "charts", + "id": "def-public.LegendToggleLazy.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "charts", "id": "def-public.lightenColor", @@ -866,6 +882,26 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "charts", + "id": "def-public.useCommonChartStyles", + "type": "Function", + "tags": [], + "label": "useCommonChartStyles", + "description": [], + "signature": [ + "() => { chartIcon: { subdued: ", + "SerializedStyles", + "; accent: ", + "SerializedStyles", + "; }; }" + ], + "path": "src/plugins/charts/public/static/components/common_chart_styles.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ @@ -916,81 +952,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "charts", - "id": "def-public.ChartColorConfiguration", - "type": "Interface", - "tags": [], - "label": "ChartColorConfiguration", - "description": [ - "\nInformation about the structure of a chart to determine the color of a series within it." - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.ChartColorConfiguration.totalSeries", - "type": "number", - "tags": [], - "label": "totalSeries", - "description": [ - "\nOverall number of series in the current chart" - ], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.ChartColorConfiguration.maxDepth", - "type": "number", - "tags": [], - "label": "maxDepth", - "description": [ - "\nMax nesting depth of the series tree" - ], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.ChartColorConfiguration.behindText", - "type": "CompoundType", - "tags": [], - "label": "behindText", - "description": [ - "\nFlag whether the color will be used behind text. The palette can use this information to\nadjust colors for better a11y. Might be ignored depending on the palette." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.ChartColorConfiguration.syncColors", - "type": "CompoundType", - "tags": [], - "label": "syncColors", - "description": [ - "\nFlag whether a color assignment to a given key should be remembered and re-used the next time the key shows up.\nThis setting might be ignored based on the palette." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "charts", "id": "def-public.ClickTriggerEvent", @@ -1162,7 +1123,7 @@ "tags": [], "label": "CustomPaletteArguments", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false, "children": [ { @@ -1175,7 +1136,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1185,7 +1146,7 @@ "tags": [], "label": "gradient", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1198,7 +1159,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1211,7 +1172,7 @@ "signature": [ "number[] | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1224,7 +1185,7 @@ "signature": [ "\"number\" | \"percent\" | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1237,7 +1198,7 @@ "signature": [ "number | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1250,7 +1211,7 @@ "signature": [ "number | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1261,16 +1222,10 @@ "label": "continuity", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, + "PaletteContinuity", " | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false } ], @@ -1283,7 +1238,7 @@ "tags": [], "label": "CustomPaletteState", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false, "children": [ { @@ -1296,7 +1251,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1306,7 +1261,7 @@ "tags": [], "label": "gradient", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1319,7 +1274,7 @@ "signature": [ "number[]" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1332,7 +1287,7 @@ "signature": [ "\"number\" | \"percent\"" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1342,7 +1297,7 @@ "tags": [], "label": "rangeMin", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1352,7 +1307,7 @@ "tags": [], "label": "rangeMax", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -1363,16 +1318,10 @@ "label": "continuity", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, + "PaletteContinuity", " | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false } ], @@ -1471,576 +1420,54 @@ }, { "parentPluginId": "charts", - "id": "def-public.PaletteDefinition", + "id": "def-public.RawColorSchema", "type": "Interface", "tags": [], - "label": "PaletteDefinition", - "description": [ - "\nDefinition of a global palette.\n\nA palette controls the appearance of Lens charts on an editor level.\nThe palette wont get reset when switching charts.\n\nA palette can hold internal state (e.g. for customizations) and also includes\nan editor component to edit the internal state." - ], - "signature": [ - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.PaletteDefinition", - "text": "PaletteDefinition" - }, - "" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", + "label": "RawColorSchema", + "description": [], + "path": "src/plugins/charts/common/static/color_maps/color_maps.ts", "deprecated": false, "children": [ { "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.id", - "type": "string", + "id": "def-public.RawColorSchema.id", + "type": "Enum", "tags": [], "label": "id", - "description": [ - "\nUnique id of the palette (this will be persisted along with the visualization state)" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.title", - "type": "string", - "tags": [], - "label": "title", - "description": [ - "\nUser facing title (should be i18n-ized)" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.internal", - "type": "CompoundType", - "tags": [], - "label": "internal", - "description": [ - "\nFlag indicating whether users should be able to pick this palette manually." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.toExpression", - "type": "Function", - "tags": [], - "label": "toExpression", - "description": [ - "\nSerialize the internal state of the palette into an expression function.\nThis function should be used to pass the palette to the expression function applying color and other styles" - ], + "description": [], "signature": [ - "(state?: T | undefined) => ", { - "pluginId": "expressions", + "pluginId": "charts", "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionAstExpression", - "text": "ExpressionAstExpression" - } - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.toExpression.$1", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [ - "The internal state of the palette" - ], - "signature": [ - "T | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getCategoricalColor", - "type": "Function", - "tags": [], - "label": "getCategoricalColor", - "description": [ - "\nColor a series according to the internal rules of the palette." - ], - "signature": [ - "(series: ", - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.SeriesLayer", - "text": "SeriesLayer" - }, - "[], chartConfiguration?: ", - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.ChartColorConfiguration", - "text": "ChartColorConfiguration" - }, - " | undefined, state?: T | undefined) => string | null" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getCategoricalColor.$1", - "type": "Array", - "tags": [], - "label": "series", - "description": [ - "The current series along with its ancestors." - ], - "signature": [ - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.SeriesLayer", - "text": "SeriesLayer" - }, - "[]" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getCategoricalColor.$2", - "type": "Object", - "tags": [], - "label": "chartConfiguration", - "description": [], - "signature": [ - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.ChartColorConfiguration", - "text": "ChartColorConfiguration" - }, - " | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getCategoricalColor.$3", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [ - "The internal state of the palette" - ], - "signature": [ - "T | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getCategoricalColors", - "type": "Function", - "tags": [], - "label": "getCategoricalColors", - "description": [ - "\nGet a spectrum of colors of the current palette.\nThis can be used if the chart wants to control color assignment locally." - ], - "signature": [ - "(size: number, state?: T | undefined) => string[]" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getCategoricalColors.$1", - "type": "number", - "tags": [], - "label": "size", - "description": [], - "signature": [ - "number" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getCategoricalColors.$2", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "T | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.canDynamicColoring", - "type": "CompoundType", - "tags": [], - "label": "canDynamicColoring", - "description": [ - "\nDefine whether a palette supports dynamic coloring (i.e. gradient colors mapped to number values)" - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getColorForValue", - "type": "Function", - "tags": [], - "label": "getColorForValue", - "description": [ - "\nGet the assigned color for the given value based on its data domain and state settings.\nThis can be used for dynamic coloring based on uniform color distribution or custom stops." - ], - "signature": [ - "((value: number | undefined, state: T, { min, max }: { min: number; max: number; }) => string | undefined) | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getColorForValue.$1", - "type": "number", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getColorForValue.$2", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "T" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getColorForValue.$3", - "type": "Object", - "tags": [], - "label": "{ min, max }", - "description": [], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getColorForValue.$3.min", - "type": "number", - "tags": [], - "label": "min", - "description": [], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteDefinition.getColorForValue.$3.max", - "type": "number", - "tags": [], - "label": "max", - "description": [], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "charts", - "id": "def-public.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-public.PaletteOutput.type", - "type": "CompoundType", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"palette\" | \"system_palette\"" - ], - "path": "src/plugins/charts/common/palette.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteOutput.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "src/plugins/charts/common/palette.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.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-public.PaletteRegistry", - "type": "Interface", - "tags": [], - "label": "PaletteRegistry", - "description": [], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.PaletteRegistry.get", - "type": "Function", - "tags": [], - "label": "get", - "description": [], - "signature": [ - "(name: string) => ", - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.PaletteDefinition", - "text": "PaletteDefinition" - }, - "" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.PaletteRegistry.get.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "charts", - "id": "def-public.PaletteRegistry.getAll", - "type": "Function", - "tags": [], - "label": "getAll", - "description": [], - "signature": [ - "() => ", - { - "pluginId": "charts", - "scope": "public", "docId": "kibChartsPluginApi", - "section": "def-public.PaletteDefinition", - "text": "PaletteDefinition" - }, - "[]" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "charts", - "id": "def-public.RawColorSchema", - "type": "Interface", - "tags": [], - "label": "RawColorSchema", - "description": [], - "path": "src/plugins/charts/common/static/color_maps/color_maps.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.RawColorSchema.id", - "type": "Enum", - "tags": [], - "label": "id", - "description": [], - "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.ColorSchemas", - "text": "ColorSchemas" - } - ], - "path": "src/plugins/charts/common/static/color_maps/color_maps.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.RawColorSchema.label", - "type": "string", - "tags": [], - "label": "label", - "description": [], - "path": "src/plugins/charts/common/static/color_maps/color_maps.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-public.RawColorSchema.value", - "type": "Array", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "[number, number[]][]" - ], - "path": "src/plugins/charts/common/static/color_maps/color_maps.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "charts", - "id": "def-public.SeriesLayer", - "type": "Interface", - "tags": [], - "label": "SeriesLayer", - "description": [ - "\nInformation about a series in a chart used to determine its color.\nSeries layers can be nested, this means each series layer can have an ancestor." - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-public.SeriesLayer.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "\nName of the series (can be used for lookup-based coloring)" + "section": "def-common.ColorSchemas", + "text": "ColorSchemas" + } ], - "path": "src/plugins/charts/public/services/palettes/types.ts", + "path": "src/plugins/charts/common/static/color_maps/color_maps.ts", "deprecated": false }, { "parentPluginId": "charts", - "id": "def-public.SeriesLayer.rankAtDepth", - "type": "number", + "id": "def-public.RawColorSchema.label", + "type": "string", "tags": [], - "label": "rankAtDepth", - "description": [ - "\nRank of the series compared to siblings with the same ancestor" - ], - "path": "src/plugins/charts/public/services/palettes/types.ts", + "label": "label", + "description": [], + "path": "src/plugins/charts/common/static/color_maps/color_maps.ts", "deprecated": false }, { "parentPluginId": "charts", - "id": "def-public.SeriesLayer.totalSeriesAtDepth", - "type": "number", + "id": "def-public.RawColorSchema.value", + "type": "Array", "tags": [], - "label": "totalSeriesAtDepth", - "description": [ - "\nTotal number of series with the same ancestor" + "label": "value", + "description": [], + "signature": [ + "[number, number[]][]" ], - "path": "src/plugins/charts/public/services/palettes/types.ts", + "path": "src/plugins/charts/common/static/color_maps/color_maps.ts", "deprecated": false } ], @@ -2116,7 +1543,7 @@ "tags": [], "label": "SystemPaletteArguments", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/system_palette.ts", "deprecated": false, "children": [ { @@ -2126,7 +1553,7 @@ "tags": [], "label": "name", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/system_palette.ts", "deprecated": false } ], @@ -2858,13 +2285,7 @@ "description": [], "signature": [ "{ getPalettes: () => Promise<", - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.PaletteRegistry", - "text": "PaletteRegistry" - }, + "PaletteRegistry", ">; }" ], "path": "src/plugins/charts/public/plugin.ts", @@ -2910,7 +2331,7 @@ "tags": [], "label": "CustomPaletteArguments", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false, "children": [ { @@ -2923,7 +2344,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -2933,7 +2354,7 @@ "tags": [], "label": "gradient", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -2946,7 +2367,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -2959,7 +2380,7 @@ "signature": [ "number[] | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -2972,7 +2393,7 @@ "signature": [ "\"number\" | \"percent\" | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -2985,7 +2406,7 @@ "signature": [ "number | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -2998,7 +2419,7 @@ "signature": [ "number | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3009,16 +2430,10 @@ "label": "continuity", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, + "PaletteContinuity", " | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false } ], @@ -3031,7 +2446,7 @@ "tags": [], "label": "CustomPaletteState", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false, "children": [ { @@ -3044,7 +2459,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3054,7 +2469,7 @@ "tags": [], "label": "gradient", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3067,7 +2482,7 @@ "signature": [ "number[]" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3080,7 +2495,7 @@ "signature": [ "\"number\" | \"percent\"" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3090,7 +2505,7 @@ "tags": [], "label": "rangeMin", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3100,7 +2515,7 @@ "tags": [], "label": "rangeMax", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3111,75 +2526,10 @@ "label": "continuity", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, + "PaletteContinuity", " | 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": "CompoundType", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"palette\" | \"system_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", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false } ], @@ -3192,7 +2542,7 @@ "tags": [], "label": "SystemPaletteArguments", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/system_palette.ts", "deprecated": false, "children": [ { @@ -3202,7 +2552,7 @@ "tags": [], "label": "name", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/system_palette.ts", "deprecated": false } ], @@ -3231,98 +2581,6 @@ "common": { "classes": [], "functions": [ - { - "parentPluginId": "charts", - "id": "def-common.checkIsMaxContinuity", - "type": "Function", - "tags": [], - "label": "checkIsMaxContinuity", - "description": [], - "signature": [ - "(continuity: ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, - " | undefined) => boolean" - ], - "path": "src/plugins/charts/common/static/palette/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-common.checkIsMaxContinuity.$1", - "type": "CompoundType", - "tags": [], - "label": "continuity", - "description": [], - "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, - " | undefined" - ], - "path": "src/plugins/charts/common/static/palette/index.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "charts", - "id": "def-common.checkIsMinContinuity", - "type": "Function", - "tags": [], - "label": "checkIsMinContinuity", - "description": [], - "signature": [ - "(continuity: ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, - " | undefined) => boolean" - ], - "path": "src/plugins/charts/common/static/palette/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "charts", - "id": "def-common.checkIsMinContinuity.$1", - "type": "CompoundType", - "tags": [], - "label": "continuity", - "description": [], - "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, - " | undefined" - ], - "path": "src/plugins/charts/common/static/palette/index.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "charts", "id": "def-common.getHeatmapColors", @@ -3377,58 +2635,9 @@ "description": [], "signature": [ "() => ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"palette\", null, ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.CustomPaletteArguments", - "text": "CustomPaletteArguments" - }, - ", ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, - "<", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.CustomPaletteState", - "text": "CustomPaletteState" - }, - ">, ", - { - "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", - ">>" + "PaletteExpressionFunctionDefinition" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/palette.ts", "deprecated": false, "children": [], "returnComment": [], @@ -3459,13 +2668,7 @@ "text": "SystemPaletteArguments" }, ", ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }>, ", { "pluginId": "expressions", @@ -3486,7 +2689,7 @@ "SerializableRecord", ">>" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/system_palette.ts", "deprecated": false, "children": [], "returnComment": [], @@ -3618,7 +2821,7 @@ "tags": [], "label": "CustomPaletteArguments", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false, "children": [ { @@ -3631,7 +2834,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3641,7 +2844,7 @@ "tags": [], "label": "gradient", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3654,7 +2857,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3667,7 +2870,7 @@ "signature": [ "number[] | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3680,7 +2883,7 @@ "signature": [ "\"number\" | \"percent\" | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3693,7 +2896,7 @@ "signature": [ "number | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3706,7 +2909,7 @@ "signature": [ "number | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3717,16 +2920,10 @@ "label": "continuity", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, + "PaletteContinuity", " | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false } ], @@ -3739,7 +2936,7 @@ "tags": [], "label": "CustomPaletteState", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false, "children": [ { @@ -3752,7 +2949,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3762,7 +2959,7 @@ "tags": [], "label": "gradient", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3775,7 +2972,7 @@ "signature": [ "number[]" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3788,7 +2985,7 @@ "signature": [ "\"number\" | \"percent\"" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3798,7 +2995,7 @@ "tags": [], "label": "rangeMin", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3808,7 +3005,7 @@ "tags": [], "label": "rangeMax", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false }, { @@ -3819,16 +3016,10 @@ "label": "continuity", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, + "PaletteContinuity", " | undefined" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/types.ts", "deprecated": false } ], @@ -3925,65 +3116,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "charts", - "id": "def-common.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-common.PaletteOutput.type", - "type": "CompoundType", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"palette\" | \"system_palette\"" - ], - "path": "src/plugins/charts/common/palette.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-common.PaletteOutput.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "src/plugins/charts/common/palette.ts", - "deprecated": false - }, - { - "parentPluginId": "charts", - "id": "def-common.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-common.RawColorSchema", @@ -4109,7 +3241,7 @@ "tags": [], "label": "SystemPaletteArguments", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/system_palette.ts", "deprecated": false, "children": [ { @@ -4119,7 +3251,7 @@ "tags": [], "label": "name", "description": [], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/expressions/palette/system_palette.ts", "deprecated": false } ], @@ -4210,7 +3342,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/charts/common/palette.ts", + "path": "src/plugins/charts/common/constants.ts", "deprecated": false, "initialIsOpen": false }, @@ -4242,20 +3374,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "charts", - "id": "def-common.PaletteContinuity", - "type": "Type", - "tags": [], - "label": "PaletteContinuity", - "description": [], - "signature": [ - "\"above\" | \"below\" | \"none\" | \"all\"" - ], - "path": "src/plugins/charts/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "charts", "id": "def-common.paletteIds", diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index dc22287d352d0..0fe3642f18398 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github summary: API docs for the charts plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] 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. --- @@ -18,7 +18,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 322 | 2 | 289 | 4 | +| 272 | 2 | 253 | 9 | ## Client diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 378879307a9d0..ccf2076033b67 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github summary: API docs for the cloud plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] 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. --- diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index d9a6b1d20909c..d487aab1a4754 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github summary: API docs for the cloudSecurityPosture plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] 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. --- diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 343ada2ae4109..4d91e53febaf7 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github summary: API docs for the console plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/controls.devdocs.json b/api_docs/controls.devdocs.json index 7cd89434ad64f..fe22caa955878 100644 --- a/api_docs/controls.devdocs.json +++ b/api_docs/controls.devdocs.json @@ -3154,31 +3154,11 @@ "text": "OptionsListEmbeddableInput" }, " extends ", - "ControlInput" + "DataControlInput" ], "path": "src/plugins/controls/common/control_types/options_list/types.ts", "deprecated": false, "children": [ - { - "parentPluginId": "controls", - "id": "def-public.OptionsListEmbeddableInput.fieldName", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [], - "path": "src/plugins/controls/common/control_types/options_list/types.ts", - "deprecated": false - }, - { - "parentPluginId": "controls", - "id": "def-public.OptionsListEmbeddableInput.dataViewId", - "type": "string", - "tags": [], - "label": "dataViewId", - "description": [], - "path": "src/plugins/controls/common/control_types/options_list/types.ts", - "deprecated": false - }, { "parentPluginId": "controls", "id": "def-public.OptionsListEmbeddableInput.selectedOptions", @@ -3302,31 +3282,11 @@ "text": "RangeSliderEmbeddableInput" }, " extends ", - "ControlInput" + "DataControlInput" ], "path": "src/plugins/controls/common/control_types/range_slider/types.ts", "deprecated": false, "children": [ - { - "parentPluginId": "controls", - "id": "def-public.RangeSliderEmbeddableInput.fieldName", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [], - "path": "src/plugins/controls/common/control_types/range_slider/types.ts", - "deprecated": false - }, - { - "parentPluginId": "controls", - "id": "def-public.RangeSliderEmbeddableInput.dataViewId", - "type": "string", - "tags": [], - "label": "dataViewId", - "description": [], - "path": "src/plugins/controls/common/control_types/range_slider/types.ts", - "deprecated": false - }, { "parentPluginId": "controls", "id": "def-public.RangeSliderEmbeddableInput.value", @@ -3600,7 +3560,46 @@ }, "server": { "classes": [], - "functions": [], + "functions": [ + { + "parentPluginId": "controls", + "id": "def-server.initializeControlGroupTelemetry", + "type": "Function", + "tags": [], + "label": "initializeControlGroupTelemetry", + "description": [], + "signature": [ + "(statsSoFar: Record) => ", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.ControlGroupTelemetry", + "text": "ControlGroupTelemetry" + } + ], + "path": "src/plugins/controls/server/control_group/control_group_telemetry.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "controls", + "id": "def-server.initializeControlGroupTelemetry.$1", + "type": "Object", + "tags": [], + "label": "statsSoFar", + "description": [], + "signature": [ + "Record" + ], + "path": "src/plugins/controls/server/control_group/control_group_telemetry.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], "interfaces": [], "enums": [], "misc": [], @@ -3609,6 +3608,60 @@ "common": { "classes": [], "functions": [ + { + "parentPluginId": "controls", + "id": "def-common.controlGroupInputToRawControlGroupAttributes", + "type": "Function", + "tags": [], + "label": "controlGroupInputToRawControlGroupAttributes", + "description": [], + "signature": [ + "(controlGroupInput: Omit<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.ControlGroupInput", + "text": "ControlGroupInput" + }, + ", \"id\">) => ", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RawControlGroupAttributes", + "text": "RawControlGroupAttributes" + } + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "controls", + "id": "def-common.controlGroupInputToRawControlGroupAttributes.$1", + "type": "Object", + "tags": [], + "label": "controlGroupInput", + "description": [], + "signature": [ + "Omit<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.ControlGroupInput", + "text": "ControlGroupInput" + }, + ", \"id\">" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "controls", "id": "def-common.getDefaultControlGroupInput", @@ -3627,11 +3680,228 @@ }, ", \"id\">" ], - "path": "src/plugins/controls/common/control_group/control_group_constants.ts", + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", "deprecated": false, "children": [], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "controls", + "id": "def-common.persistableControlGroupInputIsEqual", + "type": "Function", + "tags": [], + "label": "persistableControlGroupInputIsEqual", + "description": [], + "signature": [ + "(a: ", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.PersistableControlGroupInput", + "text": "PersistableControlGroupInput" + }, + " | undefined, b: ", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.PersistableControlGroupInput", + "text": "PersistableControlGroupInput" + }, + " | undefined) => boolean" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "controls", + "id": "def-common.persistableControlGroupInputIsEqual.$1", + "type": "Object", + "tags": [], + "label": "a", + "description": [], + "signature": [ + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.PersistableControlGroupInput", + "text": "PersistableControlGroupInput" + }, + " | undefined" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "controls", + "id": "def-common.persistableControlGroupInputIsEqual.$2", + "type": "Object", + "tags": [], + "label": "b", + "description": [], + "signature": [ + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.PersistableControlGroupInput", + "text": "PersistableControlGroupInput" + }, + " | undefined" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "controls", + "id": "def-common.rawControlGroupAttributesToControlGroupInput", + "type": "Function", + "tags": [], + "label": "rawControlGroupAttributesToControlGroupInput", + "description": [], + "signature": [ + "(rawControlGroupAttributes: ", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RawControlGroupAttributes", + "text": "RawControlGroupAttributes" + }, + ") => Omit<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.ControlGroupInput", + "text": "ControlGroupInput" + }, + ", \"id\"> | undefined" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "controls", + "id": "def-common.rawControlGroupAttributesToControlGroupInput.$1", + "type": "CompoundType", + "tags": [], + "label": "rawControlGroupAttributes", + "description": [], + "signature": [ + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RawControlGroupAttributes", + "text": "RawControlGroupAttributes" + } + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "controls", + "id": "def-common.rawControlGroupAttributesToSerializable", + "type": "Function", + "tags": [], + "label": "rawControlGroupAttributesToSerializable", + "description": [], + "signature": [ + "(rawControlGroupAttributes: Omit<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RawControlGroupAttributes", + "text": "RawControlGroupAttributes" + }, + ", \"id\">) => ", + "SerializableRecord" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "controls", + "id": "def-common.rawControlGroupAttributesToSerializable.$1", + "type": "Object", + "tags": [], + "label": "rawControlGroupAttributes", + "description": [], + "signature": [ + "Omit<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RawControlGroupAttributes", + "text": "RawControlGroupAttributes" + }, + ", \"id\">" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "controls", + "id": "def-common.serializableToRawControlGroupAttributes", + "type": "Function", + "tags": [], + "label": "serializableToRawControlGroupAttributes", + "description": [], + "signature": [ + "(serializable: ", + "SerializableRecord", + ") => Omit<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RawControlGroupAttributes", + "text": "RawControlGroupAttributes" + }, + ", \"id\" | \"type\">" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "controls", + "id": "def-common.serializableToRawControlGroupAttributes.$1", + "type": "Object", + "tags": [], + "label": "serializable", + "description": [], + "signature": [ + "SerializableRecord" + ], + "path": "src/plugins/controls/common/control_group/control_group_persistence.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ @@ -3732,6 +4002,81 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "controls", + "id": "def-common.ControlGroupTelemetry", + "type": "Interface", + "tags": [], + "label": "ControlGroupTelemetry", + "description": [], + "path": "src/plugins/controls/common/control_group/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "controls", + "id": "def-common.ControlGroupTelemetry.total", + "type": "number", + "tags": [], + "label": "total", + "description": [], + "path": "src/plugins/controls/common/control_group/types.ts", + "deprecated": false + }, + { + "parentPluginId": "controls", + "id": "def-common.ControlGroupTelemetry.chaining_system", + "type": "Object", + "tags": [], + "label": "chaining_system", + "description": [], + "signature": [ + "{ [key: string]: number; }" + ], + "path": "src/plugins/controls/common/control_group/types.ts", + "deprecated": false + }, + { + "parentPluginId": "controls", + "id": "def-common.ControlGroupTelemetry.label_position", + "type": "Object", + "tags": [], + "label": "label_position", + "description": [], + "signature": [ + "{ [key: string]: number; }" + ], + "path": "src/plugins/controls/common/control_group/types.ts", + "deprecated": false + }, + { + "parentPluginId": "controls", + "id": "def-common.ControlGroupTelemetry.ignore_settings", + "type": "Object", + "tags": [], + "label": "ignore_settings", + "description": [], + "signature": [ + "{ [key: string]: number; }" + ], + "path": "src/plugins/controls/common/control_group/types.ts", + "deprecated": false + }, + { + "parentPluginId": "controls", + "id": "def-common.ControlGroupTelemetry.by_type", + "type": "Object", + "tags": [], + "label": "by_type", + "description": [], + "signature": [ + "{ [key: string]: { total: number; details: { [key: string]: number; }; }; }" + ], + "path": "src/plugins/controls/common/control_group/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "controls", "id": "def-common.ControlPanelState", @@ -3838,31 +4183,11 @@ "text": "OptionsListEmbeddableInput" }, " extends ", - "ControlInput" + "DataControlInput" ], "path": "src/plugins/controls/common/control_types/options_list/types.ts", "deprecated": false, "children": [ - { - "parentPluginId": "controls", - "id": "def-common.OptionsListEmbeddableInput.fieldName", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [], - "path": "src/plugins/controls/common/control_types/options_list/types.ts", - "deprecated": false - }, - { - "parentPluginId": "controls", - "id": "def-common.OptionsListEmbeddableInput.dataViewId", - "type": "string", - "tags": [], - "label": "dataViewId", - "description": [], - "path": "src/plugins/controls/common/control_types/options_list/types.ts", - "deprecated": false - }, { "parentPluginId": "controls", "id": "def-common.OptionsListEmbeddableInput.selectedOptions", @@ -3921,31 +4246,11 @@ "text": "RangeSliderEmbeddableInput" }, " extends ", - "ControlInput" + "DataControlInput" ], "path": "src/plugins/controls/common/control_types/range_slider/types.ts", "deprecated": false, "children": [ - { - "parentPluginId": "controls", - "id": "def-common.RangeSliderEmbeddableInput.fieldName", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [], - "path": "src/plugins/controls/common/control_types/range_slider/types.ts", - "deprecated": false - }, - { - "parentPluginId": "controls", - "id": "def-common.RangeSliderEmbeddableInput.dataViewId", - "type": "string", - "tags": [], - "label": "dataViewId", - "description": [], - "path": "src/plugins/controls/common/control_types/range_slider/types.ts", - "deprecated": false - }, { "parentPluginId": "controls", "id": "def-common.RangeSliderEmbeddableInput.value", @@ -3993,6 +4298,34 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "controls", + "id": "def-common.DEFAULT_CONTROL_STYLE", + "type": "CompoundType", + "tags": [], + "label": "DEFAULT_CONTROL_STYLE", + "description": [], + "signature": [ + "\"twoLine\" | \"oneLine\"" + ], + "path": "src/plugins/controls/common/control_group/control_group_constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "controls", + "id": "def-common.DEFAULT_CONTROL_WIDTH", + "type": "CompoundType", + "tags": [], + "label": "DEFAULT_CONTROL_WIDTH", + "description": [], + "signature": [ + "\"auto\" | \"small\" | \"medium\" | \"large\"" + ], + "path": "src/plugins/controls/common/control_group/control_group_constants.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "controls", "id": "def-common.OPTIONS_LIST_CONTROL", @@ -4007,6 +4340,34 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "controls", + "id": "def-common.PersistableControlGroupInput", + "type": "Type", + "tags": [], + "label": "PersistableControlGroupInput", + "description": [], + "signature": [ + "{ controlStyle: ", + "ControlStyle", + "; ignoreParentSettings?: ", + "ParentIgnoreSettings", + " | undefined; chainingSystem: ", + "ControlGroupChainingSystem", + "; panels: ", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.ControlsPanels", + "text": "ControlsPanels" + }, + "; }" + ], + "path": "src/plugins/controls/common/control_group/types.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "controls", "id": "def-common.RANGE_SLIDER_CONTROL", @@ -4021,6 +4382,28 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "controls", + "id": "def-common.RawControlGroupAttributes", + "type": "Type", + "tags": [], + "label": "RawControlGroupAttributes", + "description": [], + "signature": [ + "Omit<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.PersistableControlGroupInput", + "text": "PersistableControlGroupInput" + }, + ", \"ignoreParentSettings\" | \"panels\"> & { ignoreParentSettingsJSON: string; panelsJSON: string; }" + ], + "path": "src/plugins/controls/common/control_group/types.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "controls", "id": "def-common.TIME_SLIDER_CONTROL", diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 7a59f3a0a5120..870bc6876f2c6 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github summary: API docs for the controls plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] 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. --- @@ -18,7 +18,7 @@ Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-prese | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 188 | 0 | 182 | 4 | +| 203 | 0 | 197 | 6 | ## Client @@ -34,6 +34,11 @@ Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-prese ### Consts, variables and types +## Server + +### Functions + + ## Common ### Functions diff --git a/api_docs/core.devdocs.json b/api_docs/core.devdocs.json index 7568da42bdc95..ae6443972aefb 100644 --- a/api_docs/core.devdocs.json +++ b/api_docs/core.devdocs.json @@ -651,7 +651,7 @@ "description": [ "\r\nAnalytics client's public APIs" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -666,7 +666,7 @@ "signature": [ ">(eventType: string, eventData: EventTypeData) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -681,7 +681,7 @@ "signature": [ "string" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true }, @@ -697,7 +697,7 @@ "signature": [ "EventTypeData" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -718,7 +718,7 @@ "EventTypeOpts", ") => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -732,7 +732,7 @@ "EventTypeOpts", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -757,7 +757,7 @@ "RegisterShipperOpts", " | undefined) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -773,7 +773,7 @@ "ShipperClassConstructor", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true }, @@ -789,7 +789,7 @@ "signature": [ "ShipperConfig" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true }, @@ -806,7 +806,7 @@ "RegisterShipperOpts", " | undefined" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": false } @@ -827,7 +827,7 @@ "OptInConfig", ") => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -842,7 +842,7 @@ "signature": [ "OptInConfig" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -863,7 +863,7 @@ "ContextProviderOpts", ") => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -879,7 +879,7 @@ "ContextProviderOpts", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -898,7 +898,7 @@ "signature": [ "(contextProviderName: string) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -913,7 +913,7 @@ "signature": [ "string" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -935,7 +935,7 @@ "TelemetryCounter", ">" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -1113,7 +1113,7 @@ "ContextProviderOpts", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -1125,7 +1125,7 @@ "description": [ "\r\nThe name of the provider." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -1141,7 +1141,7 @@ "Observable", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -1158,7 +1158,7 @@ "SchemaValue", "; }" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -2075,7 +2075,7 @@ "signature": [ "Event" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -2087,7 +2087,7 @@ "description": [ "\r\nThe time the event was generated in ISO format." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -2099,7 +2099,7 @@ "description": [ "\r\nThe event type." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -2114,7 +2114,7 @@ "signature": [ "{ [x: string]: unknown; }" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -2129,7 +2129,7 @@ "signature": [ "EventContext" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -2141,10 +2141,102 @@ "type": "Interface", "tags": [], "label": "EventContext", - "description": [], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "description": [ + "\r\nDefinition of the context that can be appended to the events through the {@link IAnalyticsClient.registerContextProvider}." + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ + { + "parentPluginId": "core", + "id": "def-public.EventContext.userId", + "type": "string", + "tags": [], + "label": "userId", + "description": [ + "\r\nThe unique user ID." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-public.EventContext.cloudId", + "type": "string", + "tags": [], + "label": "cloudId", + "description": [ + "\r\nThe Cloud ID." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-public.EventContext.version", + "type": "string", + "tags": [], + "label": "version", + "description": [ + "\r\nThe product's version." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-public.EventContext.pageName", + "type": "string", + "tags": [], + "label": "pageName", + "description": [ + "\r\nThe name of the current page." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-public.EventContext.applicationId", + "type": "string", + "tags": [], + "label": "applicationId", + "description": [ + "\r\nThe current application ID." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-public.EventContext.entityId", + "type": "string", + "tags": [], + "label": "entityId", + "description": [ + "\r\nThe current entity ID (dashboard ID, visualization ID, etc.)." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, { "parentPluginId": "core", "id": "def-public.EventContext.Unnamed", @@ -2155,7 +2247,7 @@ "signature": [ "[key: string]: unknown" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -2174,7 +2266,7 @@ "EventTypeOpts", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -2186,7 +2278,7 @@ "description": [ "\r\nThe event type's unique name." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -2203,7 +2295,7 @@ "SchemaValue", "; }" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -2619,7 +2711,7 @@ "description": [ "\r\nBasic structure of a Shipper" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -2636,7 +2728,7 @@ "Event", "[]) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -2652,7 +2744,7 @@ "Event", "[]" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -2671,7 +2763,7 @@ "signature": [ "(isOptedIn: boolean) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -2686,7 +2778,7 @@ "signature": [ "boolean" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -2707,7 +2799,7 @@ "EventContext", ") => void) | undefined" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -2720,7 +2812,7 @@ "signature": [ "EventContext" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -2742,7 +2834,7 @@ "TelemetryCounter", "> | undefined" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -3479,7 +3571,7 @@ "description": [ "\r\n" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -3494,7 +3586,7 @@ "signature": [ "OptInConfigPerType" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -3511,7 +3603,7 @@ "OptInConfigPerType", " | undefined> | undefined" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -5391,6 +5483,21 @@ "path": "src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts", "deprecated": false }, + { + "parentPluginId": "core", + "id": "def-public.SavedObjectReferenceWithContext.originId", + "type": "string", + "tags": [], + "label": "originId", + "description": [ + "The origin ID of the referenced object (if it has one)" + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts", + "deprecated": false + }, { "parentPluginId": "core", "id": "def-public.SavedObjectReferenceWithContext.spaces", @@ -5450,6 +5557,21 @@ ], "path": "src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts", "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-public.SavedObjectReferenceWithContext.spacesWithMatchingOrigins", + "type": "Array", + "tags": [], + "label": "spacesWithMatchingOrigins", + "description": [ + "The space(s) that objects matching this origin exist in (including this one)" + ], + "signature": [ + "string[] | undefined" + ], + "path": "src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts", + "deprecated": false } ], "initialIsOpen": false @@ -6793,7 +6915,7 @@ "ShipperClassConstructor", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -6805,7 +6927,7 @@ "description": [ "\r\nThe shipper's unique name" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -6820,7 +6942,7 @@ "signature": [ "any" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -6835,7 +6957,7 @@ "description": [ "\r\nShape of the events emitted by the telemetryCounter$ observable" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -6850,7 +6972,7 @@ "signature": [ "TelemetryCounterType" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -6862,7 +6984,7 @@ "description": [ "\r\nWho emitted the event? It can be \"client\" or the name of the shipper." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -6874,7 +6996,7 @@ "description": [ "\r\nThe event type the success/failure/drop event refers to." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -6886,7 +7008,7 @@ "description": [ "\r\nCode to provide additional information about the success or failure. Examples are 200/400/504/ValidationError/UnknownError" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -6898,7 +7020,7 @@ "description": [ "\r\nThe number of events that this counter refers to." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -7340,7 +7462,7 @@ "description": [ "\r\nTypes of the Telemetry Counter: It allows to differentiate what happened to the events" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "initialIsOpen": false } @@ -7412,7 +7534,7 @@ "signature": [ "string" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -7903,7 +8025,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"className\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"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\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"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 | ", { "pluginId": "core", "scope": "public", @@ -7960,7 +8082,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"className\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"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\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"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 | ", { "pluginId": "core", "scope": "public", @@ -8750,7 +8872,7 @@ "label": "rawConfig", "description": [], "signature": [ - "Readonly<{ username?: string | undefined; password?: string | undefined; serviceAccountToken?: string | undefined; } & { ssl: Readonly<{ key?: string | undefined; certificateAuthorities?: string | string[] | undefined; certificate?: string | undefined; keyPassphrase?: string | undefined; } & { verificationMode: \"none\" | \"full\" | \"certificate\"; keystore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>; healthCheck: Readonly<{} & { delay: moment.Duration; }>; hosts: string | string[]; sniffOnStart: boolean; sniffInterval: false | moment.Duration; sniffOnConnectionFault: boolean; maxSockets: number; compression: boolean; requestHeadersWhitelist: string | string[]; customHeaders: Record; shardTimeout: moment.Duration; requestTimeout: moment.Duration; pingTimeout: moment.Duration; logQueries: boolean; apiVersion: string; ignoreVersionMismatch: boolean; skipStartupConnectionCheck: boolean; }>" + "Readonly<{ username?: string | undefined; password?: string | undefined; serviceAccountToken?: string | undefined; } & { ssl: Readonly<{ key?: string | undefined; certificateAuthorities?: string | string[] | undefined; certificate?: string | undefined; keyPassphrase?: string | undefined; } & { verificationMode: \"none\" | \"full\" | \"certificate\"; keystore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>; healthCheck: Readonly<{} & { delay: moment.Duration; }>; customHeaders: Record; hosts: string | string[]; sniffOnStart: boolean; sniffInterval: false | moment.Duration; sniffOnConnectionFault: boolean; maxSockets: number; compression: boolean; requestHeadersWhitelist: string | string[]; shardTimeout: moment.Duration; requestTimeout: moment.Duration; pingTimeout: moment.Duration; logQueries: boolean; apiVersion: string; ignoreVersionMismatch: boolean; skipStartupConnectionCheck: boolean; }>" ], "path": "src/core/server/elasticsearch/elasticsearch_config.ts", "deprecated": false, @@ -8918,7 +9040,7 @@ "description": [ "\r\nAnalytics client's public APIs" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -8933,7 +9055,7 @@ "signature": [ ">(eventType: string, eventData: EventTypeData) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -8948,7 +9070,7 @@ "signature": [ "string" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true }, @@ -8964,7 +9086,7 @@ "signature": [ "EventTypeData" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -8985,7 +9107,7 @@ "EventTypeOpts", ") => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -8999,7 +9121,7 @@ "EventTypeOpts", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -9024,7 +9146,7 @@ "RegisterShipperOpts", " | undefined) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -9040,7 +9162,7 @@ "ShipperClassConstructor", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true }, @@ -9056,7 +9178,7 @@ "signature": [ "ShipperConfig" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true }, @@ -9073,7 +9195,7 @@ "RegisterShipperOpts", " | undefined" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": false } @@ -9094,7 +9216,7 @@ "OptInConfig", ") => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -9109,7 +9231,7 @@ "signature": [ "OptInConfig" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -9130,7 +9252,7 @@ "ContextProviderOpts", ") => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -9146,7 +9268,7 @@ "ContextProviderOpts", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -9165,7 +9287,7 @@ "signature": [ "(contextProviderName: string) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -9180,7 +9302,7 @@ "signature": [ "string" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -9202,7 +9324,7 @@ "TelemetryCounter", ">" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -10300,7 +10422,7 @@ "ContextProviderOpts", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -10312,7 +10434,7 @@ "description": [ "\r\nThe name of the provider." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -10328,7 +10450,7 @@ "Observable", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -10345,7 +10467,7 @@ "SchemaValue", "; }" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -10483,6 +10605,161 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext", + "type": "Interface", + "tags": [], + "label": "CoreRequestHandlerContext", + "description": [ + "\nThe `core` context provided to 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" + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [], + "signature": [ + "{ client: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsClientContract", + "text": "SavedObjectsClientContract" + }, + "; typeRegistry: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.ISavedObjectTypeRegistry", + "text": "ISavedObjectTypeRegistry" + }, + "; getClient: (options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsClientProviderOptions", + "text": "SavedObjectsClientProviderOptions" + }, + " | undefined) => ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsClientContract", + "text": "SavedObjectsClientContract" + }, + "; getExporter: (client: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsClientContract", + "text": "SavedObjectsClientContract" + }, + ") => ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.ISavedObjectsExporter", + "text": "ISavedObjectsExporter" + }, + "; getImporter: (client: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsClientContract", + "text": "SavedObjectsClientContract" + }, + ") => ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.ISavedObjectsImporter", + "text": "ISavedObjectsImporter" + }, + "; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [], + "signature": [ + "{ client: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.IScopedClusterClient", + "text": "IScopedClusterClient" + }, + "; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext.uiSettings", + "type": "Object", + "tags": [], + "label": "uiSettings", + "description": [], + "signature": [ + "{ client: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.IUiSettingsClient", + "text": "IUiSettingsClient" + }, + "; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext.deprecations", + "type": "Object", + "tags": [], + "label": "deprecations", + "description": [], + "signature": [ + "{ client: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.DeprecationsClient", + "text": "DeprecationsClient" + }, + "; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "core", "id": "def-server.CoreSetup", @@ -11470,6 +11747,21 @@ ], "path": "src/core/server/plugins/types.ts", "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.DiscoveredPlugin.enabledOnAnonymousPages", + "type": "CompoundType", + "tags": [], + "label": "enabledOnAnonymousPages", + "description": [ + "\nSpecifies whether this plugin - and its required dependencies - will be enabled for anonymous pages (login page, status page when\nconfigured, etc.) Default is false." + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false } ], "initialIsOpen": false @@ -12002,7 +12294,7 @@ "signature": [ "Event" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -12014,7 +12306,7 @@ "description": [ "\r\nThe time the event was generated in ISO format." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -12026,7 +12318,7 @@ "description": [ "\r\nThe event type." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -12041,7 +12333,7 @@ "signature": [ "{ [x: string]: unknown; }" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -12056,7 +12348,7 @@ "signature": [ "EventContext" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -12068,10 +12360,102 @@ "type": "Interface", "tags": [], "label": "EventContext", - "description": [], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "description": [ + "\r\nDefinition of the context that can be appended to the events through the {@link IAnalyticsClient.registerContextProvider}." + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ + { + "parentPluginId": "core", + "id": "def-server.EventContext.userId", + "type": "string", + "tags": [], + "label": "userId", + "description": [ + "\r\nThe unique user ID." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.EventContext.cloudId", + "type": "string", + "tags": [], + "label": "cloudId", + "description": [ + "\r\nThe Cloud ID." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.EventContext.version", + "type": "string", + "tags": [], + "label": "version", + "description": [ + "\r\nThe product's version." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.EventContext.pageName", + "type": "string", + "tags": [], + "label": "pageName", + "description": [ + "\r\nThe name of the current page." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.EventContext.applicationId", + "type": "string", + "tags": [], + "label": "applicationId", + "description": [ + "\r\nThe current application ID." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.EventContext.entityId", + "type": "string", + "tags": [], + "label": "entityId", + "description": [ + "\r\nThe current entity ID (dashboard ID, visualization ID, etc.)." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, { "parentPluginId": "core", "id": "def-server.EventContext.Unnamed", @@ -12082,7 +12466,7 @@ "signature": [ "[key: string]: unknown" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -12101,7 +12485,7 @@ "EventTypeOpts", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -12113,7 +12497,7 @@ "description": [ "\r\nThe event type's unique name." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -12130,7 +12514,7 @@ "SchemaValue", "; }" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -12236,7 +12620,7 @@ "Headers used for authentication against Elasticsearch" ], "signature": [ - "{ from?: string | string[] | undefined; date?: string | string[] | undefined; range?: string | string[] | undefined; warning?: string | string[] | undefined; location?: string | string[] | undefined; origin?: string | string[] | undefined; allow?: string | string[] | undefined; accept?: string | string[] | undefined; host?: 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; \"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; etag?: string | string[] | undefined; expect?: string | string[] | undefined; expires?: string | string[] | undefined; forwarded?: 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; pragma?: string | string[] | undefined; \"proxy-authenticate\"?: string | string[] | undefined; \"proxy-authorization\"?: string | string[] | undefined; \"public-key-pins\"?: 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; \"www-authenticate\"?: string | string[] | undefined; } & { [header: string]: string | string[] | undefined; }" + "{ warning?: string | string[] | undefined; from?: string | string[] | undefined; date?: string | string[] | undefined; range?: string | string[] | undefined; location?: string | string[] | undefined; origin?: string | string[] | undefined; allow?: string | string[] | undefined; accept?: string | string[] | undefined; host?: 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; \"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; etag?: string | string[] | undefined; expect?: string | string[] | undefined; expires?: string | string[] | undefined; forwarded?: 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; pragma?: string | string[] | undefined; \"proxy-authenticate\"?: string | string[] | undefined; \"proxy-authorization\"?: string | string[] | undefined; \"public-key-pins\"?: 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; \"www-authenticate\"?: string | string[] | undefined; } & { [header: string]: string | string[] | undefined; }" ], "path": "src/core/server/elasticsearch/types.ts", "deprecated": false @@ -14725,6 +15109,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -14915,6 +15303,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -15151,6 +15543,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -15582,12 +15978,12 @@ "children": [ { "parentPluginId": "core", - "id": "def-server.IRenderOptions.includeUserSettings", + "id": "def-server.IRenderOptions.isAnonymousPage", "type": "CompoundType", "tags": [], - "label": "includeUserSettings", + "label": "isAnonymousPage", "description": [ - "\nSet whether to output user settings in the page metadata.\n`true` by default." + "\nSet whether the page is anonymous, which determines what plugins are enabled and whether to output user settings in the page metadata.\n`false` by default." ], "signature": [ "boolean | undefined" @@ -18028,7 +18424,7 @@ "description": [ "\r\nBasic structure of a Shipper" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -18045,7 +18441,7 @@ "Event", "[]) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -18061,7 +18457,7 @@ "Event", "[]" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -18080,7 +18476,7 @@ "signature": [ "(isOptedIn: boolean) => void" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -18095,7 +18491,7 @@ "signature": [ "boolean" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -18116,7 +18512,7 @@ "EventContext", ") => void) | undefined" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -18129,7 +18525,7 @@ "signature": [ "EventContext" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "isRequired": true } @@ -18151,7 +18547,7 @@ "TelemetryCounter", "> | undefined" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -18884,7 +19280,7 @@ "label": "loggers", "description": [], "signature": [ - "Readonly<{} & { name: string; level: \"all\" | \"error\" | \"info\" | \"off\" | \"debug\" | \"trace\" | \"warn\" | \"fatal\"; appenders: string[]; }>[] | undefined" + "Readonly<{} & { name: string; level: \"error\" | \"all\" | \"info\" | \"off\" | \"debug\" | \"trace\" | \"warn\" | \"fatal\"; appenders: string[]; }>[] | undefined" ], "path": "src/core/server/logging/logging_config.ts", "deprecated": false @@ -19593,7 +19989,7 @@ "description": [ "\r\n" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -19608,7 +20004,7 @@ "signature": [ "OptInConfigPerType" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -19625,7 +20021,7 @@ "OptInConfigPerType", " | undefined> | undefined" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -20266,6 +20662,21 @@ ], "path": "src/core/server/plugins/types.ts", "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.PluginManifest.enabledOnAnonymousPages", + "type": "CompoundType", + "tags": [], + "label": "enabledOnAnonymousPages", + "description": [ + "\nSpecifies whether this plugin - and its required dependencies - will be enabled for anonymous pages (login page, status page when\nconfigured, etc.) Default is false." + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false } ], "initialIsOpen": false @@ -21781,7 +22192,24 @@ "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 IUiSettingsClient | uiSettings.client} - uiSettings client\n which uses the credentials of the incoming request\n" + "\nBase context passed to a route handler.\n" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + " extends ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContextBase", + "text": "RequestHandlerContextBase" + } ], "path": "src/core/server/index.ts", "deprecated": false, @@ -21794,95 +22222,15 @@ "label": "core", "description": [], "signature": [ - "{ savedObjects: { client: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClientContract", - "text": "SavedObjectsClientContract" - }, - "; typeRegistry: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.ISavedObjectTypeRegistry", - "text": "ISavedObjectTypeRegistry" - }, - "; getClient: (options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClientProviderOptions", - "text": "SavedObjectsClientProviderOptions" - }, - " | undefined) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClientContract", - "text": "SavedObjectsClientContract" - }, - "; getExporter: (client: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClientContract", - "text": "SavedObjectsClientContract" - }, - ") => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.ISavedObjectsExporter", - "text": "ISavedObjectsExporter" - }, - "; getImporter: (client: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClientContract", - "text": "SavedObjectsClientContract" - }, - ") => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.ISavedObjectsImporter", - "text": "ISavedObjectsImporter" - }, - "; }; elasticsearch: { client: ", + "Promise<", { "pluginId": "core", "scope": "server", "docId": "kibCorePluginApi", - "section": "def-server.IScopedClusterClient", - "text": "IScopedClusterClient" - }, - "; }; uiSettings: { client: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.IUiSettingsClient", - "text": "IUiSettingsClient" - }, - "; }; deprecations: { client: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.DeprecationsClient", - "text": "DeprecationsClient" + "section": "def-server.CoreRequestHandlerContext", + "text": "CoreRequestHandlerContext" }, - "; }; }" + ">" ], "path": "src/core/server/index.ts", "deprecated": false @@ -21890,6 +22238,53 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "core", + "id": "def-server.RequestHandlerContextBase", + "type": "Interface", + "tags": [], + "label": "RequestHandlerContextBase", + "description": [], + "path": "src/core/server/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.RequestHandlerContextBase.resolve", + "type": "Function", + "tags": [], + "label": "resolve", + "description": [ + "\nAwait all the specified context parts and return them.\n" + ], + "signature": [ + ">(parts: T[]) => Promise<", + "AwaitedProperties", + ">>" + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.RequestHandlerContextBase.resolve.$1", + "type": "Array", + "tags": [], + "label": "parts", + "description": [], + "signature": [ + "T[]" + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "core", "id": "def-server.ResolveCapabilitiesOptions", @@ -22530,7 +22925,7 @@ "ShipperClassConstructor", "" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -22542,7 +22937,7 @@ "description": [ "\r\nThe shipper's unique name" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -22557,7 +22952,7 @@ "signature": [ "any" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -22751,7 +23146,7 @@ "description": [ "\r\nShape of the events emitted by the telemetryCounter$ observable" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "children": [ { @@ -22766,7 +23161,7 @@ "signature": [ "TelemetryCounterType" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -22778,7 +23173,7 @@ "description": [ "\r\nWho emitted the event? It can be \"client\" or the name of the shipper." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -22790,7 +23185,7 @@ "description": [ "\r\nThe event type the success/failure/drop event refers to." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -22802,7 +23197,7 @@ "description": [ "\r\nCode to provide additional information about the success or failure. Examples are 200/400/504/ValidationError/UnknownError" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false }, { @@ -22814,7 +23209,7 @@ "description": [ "\r\nThe number of events that this counter refers to." ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false } ], @@ -23486,7 +23881,7 @@ "description": [ "\r\nTypes of the Telemetry Counter: It allows to differentiate what happened to the events" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "initialIsOpen": false } @@ -23851,6 +24246,27 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "core", + "id": "def-server.CustomRequestHandlerContext", + "type": "Type", + "tags": [], + "label": "CustomRequestHandlerContext", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + " & { [Key in keyof T]: T[Key] extends Promise ? T[Key] : Promise; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "core", "id": "def-server.DeprecationsDetails", @@ -23951,7 +24367,7 @@ "label": "EcsEventOutcome", "description": [], "signature": [ - "\"unknown\" | \"success\" | \"failure\"" + "\"success\" | \"unknown\" | \"failure\"" ], "path": "node_modules/@types/kbn__logging/index.d.ts", "deprecated": false, @@ -23965,7 +24381,7 @@ "label": "EcsEventType", "description": [], "signature": [ - "\"start\" | \"user\" | \"error\" | \"info\" | \"group\" | \"end\" | \"protocol\" | \"connection\" | \"access\" | \"admin\" | \"allowed\" | \"change\" | \"creation\" | \"deletion\" | \"denied\" | \"installation\"" + "\"start\" | \"error\" | \"user\" | \"info\" | \"group\" | \"end\" | \"admin\" | \"protocol\" | \"connection\" | \"access\" | \"allowed\" | \"change\" | \"creation\" | \"deletion\" | \"denied\" | \"installation\"" ], "path": "node_modules/@types/kbn__logging/index.d.ts", "deprecated": false, @@ -25193,7 +25609,7 @@ "section": "def-server.ElasticsearchConfig", "text": "ElasticsearchConfig" }, - ", \"username\" | \"hosts\" | \"password\" | \"sniffOnStart\" | \"sniffInterval\" | \"sniffOnConnectionFault\" | \"maxSockets\" | \"compression\" | \"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\" | \"verificationMode\" | \"certificate\" | \"keyPassphrase\" | \"alwaysPresentCertificate\"> & { certificateAuthorities?: string[] | undefined; }> | undefined; keepAlive?: boolean | undefined; caFingerprint?: string | undefined; }" + ", \"username\" | \"customHeaders\" | \"hosts\" | \"password\" | \"sniffOnStart\" | \"sniffInterval\" | \"sniffOnConnectionFault\" | \"maxSockets\" | \"compression\" | \"serviceAccountToken\" | \"requestHeadersWhitelist\"> & { pingTimeout?: number | moment.Duration | undefined; requestTimeout?: number | moment.Duration | undefined; ssl?: Partial; truststore: Readonly<{ path?: string | undefined; password?: string | undefined; } & {}>; alwaysPresentCertificate: boolean; }>, \"key\" | \"verificationMode\" | \"certificate\" | \"keyPassphrase\" | \"alwaysPresentCertificate\"> & { certificateAuthorities?: string[] | undefined; }> | undefined; keepAlive?: boolean | undefined; caFingerprint?: string | undefined; }" ], "path": "src/core/server/elasticsearch/client/client_config.ts", "deprecated": false, @@ -25211,7 +25627,7 @@ "signature": [ "string" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -25488,6 +25904,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -25795,6 +26215,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -25851,7 +26275,9 @@ }, ") => ", "KibanaResponse", - "; }) => Context[ContextName] | Promise" + "; }) => ", + "MaybePromise", + ">" ], "path": "src/core/server/context/container/context.ts", "deprecated": false, @@ -26018,6 +26444,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -26106,7 +26536,7 @@ "label": "LoggerConfigType", "description": [], "signature": [ - "{ readonly name: string; readonly level: \"all\" | \"error\" | \"info\" | \"off\" | \"debug\" | \"trace\" | \"warn\" | \"fatal\"; readonly appenders: string[]; }" + "{ readonly name: string; readonly level: \"error\" | \"all\" | \"info\" | \"off\" | \"debug\" | \"trace\" | \"warn\" | \"fatal\"; readonly appenders: string[]; }" ], "path": "src/core/server/logging/logging_config.ts", "deprecated": false, diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 0290b6009ea42..765f93b5bb6f9 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github summary: API docs for the core plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] 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. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2497 | 15 | 971 | 33 | +| 2524 | 15 | 977 | 33 | ## Client diff --git a/api_docs/core_application.devdocs.json b/api_docs/core_application.devdocs.json index cc3cb0a2d1dd2..1f59b41949a3a 100644 --- a/api_docs/core_application.devdocs.json +++ b/api_docs/core_application.devdocs.json @@ -510,7 +510,7 @@ "tags": [], "label": "id", "description": [ - "\nThe unique identifier of the application" + "\nThe unique identifier of the application.\n\nCan only be composed of alphanumeric characters, `-`, `:` and `_`" ], "path": "src/core/public/application/types.ts", "deprecated": false @@ -1210,7 +1210,9 @@ "type": "Object", "tags": [], "label": "options", - "description": [], + "description": [ + "- navigation options" + ], "signature": [ { "pluginId": "core", diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index ad976a37aa5db..680c5de7566c6 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.application plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] 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. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2497 | 15 | 971 | 33 | +| 2524 | 15 | 977 | 33 | ## Client diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index 09e098a7bf1ba..43eda7a95eaf8 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.chrome plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] 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. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2497 | 15 | 971 | 33 | +| 2524 | 15 | 977 | 33 | ## Client diff --git a/api_docs/core_http.devdocs.json b/api_docs/core_http.devdocs.json index 1f99d8f6e9bc1..ea42549b15bf9 100644 --- a/api_docs/core_http.devdocs.json +++ b/api_docs/core_http.devdocs.json @@ -2345,7 +2345,7 @@ "\nReadonly copy of incoming request headers." ], "signature": [ - "{ from?: string | string[] | undefined; date?: string | string[] | undefined; range?: string | string[] | undefined; warning?: string | string[] | undefined; location?: string | string[] | undefined; origin?: string | string[] | undefined; allow?: string | string[] | undefined; accept?: string | string[] | undefined; host?: 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; \"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; etag?: string | string[] | undefined; expect?: string | string[] | undefined; expires?: string | string[] | undefined; forwarded?: 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; pragma?: string | string[] | undefined; \"proxy-authenticate\"?: string | string[] | undefined; \"proxy-authorization\"?: string | string[] | undefined; \"public-key-pins\"?: 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; \"www-authenticate\"?: string | string[] | undefined; } & { [header: string]: string | string[] | undefined; }" + "{ warning?: string | string[] | undefined; from?: string | string[] | undefined; date?: string | string[] | undefined; range?: string | string[] | undefined; location?: string | string[] | undefined; origin?: string | string[] | undefined; allow?: string | string[] | undefined; accept?: string | string[] | undefined; host?: 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; \"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; etag?: string | string[] | undefined; expect?: string | string[] | undefined; expires?: string | string[] | undefined; forwarded?: 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; pragma?: string | string[] | undefined; \"proxy-authenticate\"?: string | string[] | undefined; \"proxy-authorization\"?: string | string[] | undefined; \"public-key-pins\"?: 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; \"www-authenticate\"?: string | string[] | undefined; } & { [header: string]: string | string[] | undefined; }" ], "path": "src/core/server/http/router/request.ts", "deprecated": false @@ -3946,7 +3946,7 @@ "section": "def-server.RequestHandlerContext", "text": "RequestHandlerContext" }, - ", ContextName extends keyof Context>(contextName: ContextName, provider: ", + ", ContextName extends Exclude>(contextName: ContextName, provider: ", { "pluginId": "core", "scope": "server", @@ -4613,6 +4613,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -4841,6 +4845,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -5121,6 +5129,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -5349,6 +5361,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -5629,6 +5645,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -5857,6 +5877,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -6137,6 +6161,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -6365,6 +6393,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -6645,6 +6677,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -6873,6 +6909,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -7161,6 +7201,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -7343,6 +7387,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -8950,6 +8998,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -9152,6 +9204,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -9397,7 +9453,7 @@ "\nHttp request headers to read." ], "signature": [ - "{ from?: string | string[] | undefined; date?: string | string[] | undefined; range?: string | string[] | undefined; warning?: string | string[] | undefined; location?: string | string[] | undefined; origin?: string | string[] | undefined; allow?: string | string[] | undefined; accept?: string | string[] | undefined; host?: 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; \"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; etag?: string | string[] | undefined; expect?: string | string[] | undefined; expires?: string | string[] | undefined; forwarded?: 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; pragma?: string | string[] | undefined; \"proxy-authenticate\"?: string | string[] | undefined; \"proxy-authorization\"?: string | string[] | undefined; \"public-key-pins\"?: 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; \"www-authenticate\"?: string | string[] | undefined; } & { [header: string]: string | string[] | undefined; }" + "{ warning?: string | string[] | undefined; from?: string | string[] | undefined; date?: string | string[] | undefined; range?: string | string[] | undefined; location?: string | string[] | undefined; origin?: string | string[] | undefined; allow?: string | string[] | undefined; accept?: string | string[] | undefined; host?: 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; \"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; etag?: string | string[] | undefined; expect?: string | string[] | undefined; expires?: string | string[] | undefined; forwarded?: 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; pragma?: string | string[] | undefined; \"proxy-authenticate\"?: string | string[] | undefined; \"proxy-authorization\"?: string | string[] | undefined; \"public-key-pins\"?: 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; \"www-authenticate\"?: string | string[] | undefined; } & { [header: string]: string | string[] | undefined; }" ], "path": "src/core/server/http/router/headers.ts", "deprecated": false, @@ -9670,6 +9726,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -9742,7 +9802,7 @@ "\nSet of well-known HTTP headers." ], "signature": [ - "\"from\" | \"date\" | \"range\" | \"warning\" | \"location\" | \"origin\" | \"allow\" | \"accept\" | \"host\" | \"accept-language\" | \"accept-patch\" | \"accept-ranges\" | \"access-control-allow-credentials\" | \"access-control-allow-headers\" | \"access-control-allow-methods\" | \"access-control-allow-origin\" | \"access-control-expose-headers\" | \"access-control-max-age\" | \"access-control-request-headers\" | \"access-control-request-method\" | \"age\" | \"alt-svc\" | \"authorization\" | \"cache-control\" | \"connection\" | \"content-disposition\" | \"content-encoding\" | \"content-language\" | \"content-length\" | \"content-location\" | \"content-range\" | \"content-type\" | \"cookie\" | \"etag\" | \"expect\" | \"expires\" | \"forwarded\" | \"if-match\" | \"if-modified-since\" | \"if-none-match\" | \"if-unmodified-since\" | \"last-modified\" | \"pragma\" | \"proxy-authenticate\" | \"proxy-authorization\" | \"public-key-pins\" | \"referer\" | \"retry-after\" | \"sec-websocket-accept\" | \"sec-websocket-extensions\" | \"sec-websocket-key\" | \"sec-websocket-protocol\" | \"sec-websocket-version\" | \"set-cookie\" | \"strict-transport-security\" | \"tk\" | \"trailer\" | \"transfer-encoding\" | \"upgrade\" | \"user-agent\" | \"vary\" | \"via\" | \"www-authenticate\"" + "\"warning\" | \"from\" | \"date\" | \"range\" | \"location\" | \"origin\" | \"allow\" | \"accept\" | \"host\" | \"accept-language\" | \"accept-patch\" | \"accept-ranges\" | \"access-control-allow-credentials\" | \"access-control-allow-headers\" | \"access-control-allow-methods\" | \"access-control-allow-origin\" | \"access-control-expose-headers\" | \"access-control-max-age\" | \"access-control-request-headers\" | \"access-control-request-method\" | \"age\" | \"alt-svc\" | \"authorization\" | \"cache-control\" | \"connection\" | \"content-disposition\" | \"content-encoding\" | \"content-language\" | \"content-length\" | \"content-location\" | \"content-range\" | \"content-type\" | \"cookie\" | \"etag\" | \"expect\" | \"expires\" | \"forwarded\" | \"if-match\" | \"if-modified-since\" | \"if-none-match\" | \"if-unmodified-since\" | \"last-modified\" | \"pragma\" | \"proxy-authenticate\" | \"proxy-authorization\" | \"public-key-pins\" | \"referer\" | \"retry-after\" | \"sec-websocket-accept\" | \"sec-websocket-extensions\" | \"sec-websocket-key\" | \"sec-websocket-protocol\" | \"sec-websocket-version\" | \"set-cookie\" | \"strict-transport-security\" | \"tk\" | \"trailer\" | \"transfer-encoding\" | \"upgrade\" | \"user-agent\" | \"vary\" | \"via\" | \"www-authenticate\"" ], "path": "src/core/server/http/router/headers.ts", "deprecated": false, @@ -9864,6 +9924,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -10016,6 +10080,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -10190,6 +10258,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -10363,6 +10435,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -10537,6 +10613,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -10811,6 +10891,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -10985,6 +11069,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -11318,6 +11406,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -11374,7 +11466,9 @@ }, ") => ", "KibanaResponse", - "; }) => Context[ContextName] | Promise" + "; }) => ", + "MaybePromise", + ">" ], "path": "src/core/server/http/types.ts", "deprecated": false, @@ -11535,6 +11629,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -11759,6 +11857,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -11941,6 +12043,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -12158,7 +12264,7 @@ "\nHttp response headers to set." ], "signature": [ - "Record<\"from\" | \"date\" | \"range\" | \"warning\" | \"location\" | \"origin\" | \"allow\" | \"accept\" | \"host\" | \"accept-language\" | \"accept-patch\" | \"accept-ranges\" | \"access-control-allow-credentials\" | \"access-control-allow-headers\" | \"access-control-allow-methods\" | \"access-control-allow-origin\" | \"access-control-expose-headers\" | \"access-control-max-age\" | \"access-control-request-headers\" | \"access-control-request-method\" | \"age\" | \"alt-svc\" | \"authorization\" | \"cache-control\" | \"connection\" | \"content-disposition\" | \"content-encoding\" | \"content-language\" | \"content-length\" | \"content-location\" | \"content-range\" | \"content-type\" | \"cookie\" | \"etag\" | \"expect\" | \"expires\" | \"forwarded\" | \"if-match\" | \"if-modified-since\" | \"if-none-match\" | \"if-unmodified-since\" | \"last-modified\" | \"pragma\" | \"proxy-authenticate\" | \"proxy-authorization\" | \"public-key-pins\" | \"referer\" | \"retry-after\" | \"sec-websocket-accept\" | \"sec-websocket-extensions\" | \"sec-websocket-key\" | \"sec-websocket-protocol\" | \"sec-websocket-version\" | \"set-cookie\" | \"strict-transport-security\" | \"tk\" | \"trailer\" | \"transfer-encoding\" | \"upgrade\" | \"user-agent\" | \"vary\" | \"via\" | \"www-authenticate\", string | string[]> | Record" + "Record<\"warning\" | \"from\" | \"date\" | \"range\" | \"location\" | \"origin\" | \"allow\" | \"accept\" | \"host\" | \"accept-language\" | \"accept-patch\" | \"accept-ranges\" | \"access-control-allow-credentials\" | \"access-control-allow-headers\" | \"access-control-allow-methods\" | \"access-control-allow-origin\" | \"access-control-expose-headers\" | \"access-control-max-age\" | \"access-control-request-headers\" | \"access-control-request-method\" | \"age\" | \"alt-svc\" | \"authorization\" | \"cache-control\" | \"connection\" | \"content-disposition\" | \"content-encoding\" | \"content-language\" | \"content-length\" | \"content-location\" | \"content-range\" | \"content-type\" | \"cookie\" | \"etag\" | \"expect\" | \"expires\" | \"forwarded\" | \"if-match\" | \"if-modified-since\" | \"if-none-match\" | \"if-unmodified-since\" | \"last-modified\" | \"pragma\" | \"proxy-authenticate\" | \"proxy-authorization\" | \"public-key-pins\" | \"referer\" | \"retry-after\" | \"sec-websocket-accept\" | \"sec-websocket-extensions\" | \"sec-websocket-key\" | \"sec-websocket-protocol\" | \"sec-websocket-version\" | \"set-cookie\" | \"strict-transport-security\" | \"tk\" | \"trailer\" | \"transfer-encoding\" | \"upgrade\" | \"user-agent\" | \"vary\" | \"via\" | \"www-authenticate\", string | string[]> | Record" ], "path": "src/core/server/http/router/headers.ts", "deprecated": false, @@ -12362,6 +12468,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -12586,6 +12696,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", diff --git a/api_docs/core_http.mdx b/api_docs/core_http.mdx index 394a7c613118c..954a5b1421f89 100644 --- a/api_docs/core_http.mdx +++ b/api_docs/core_http.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-http title: "core.http" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.http plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.http'] 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. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2497 | 15 | 971 | 33 | +| 2524 | 15 | 977 | 33 | ## Client diff --git a/api_docs/core_saved_objects.devdocs.json b/api_docs/core_saved_objects.devdocs.json index 08b910c7268f8..ba6118416a1e1 100644 --- a/api_docs/core_saved_objects.devdocs.json +++ b/api_docs/core_saved_objects.devdocs.json @@ -9895,6 +9895,21 @@ "path": "src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts", "deprecated": false }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectReferenceWithContext.originId", + "type": "string", + "tags": [], + "label": "originId", + "description": [ + "The origin ID of the referenced object (if it has one)" + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts", + "deprecated": false + }, { "parentPluginId": "core", "id": "def-server.SavedObjectReferenceWithContext.spaces", @@ -9954,6 +9969,21 @@ ], "path": "src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts", "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectReferenceWithContext.spacesWithMatchingOrigins", + "type": "Array", + "tags": [], + "label": "spacesWithMatchingOrigins", + "description": [ + "The space(s) that objects matching this origin exist in (including this one)" + ], + "signature": [ + "string[] | undefined" + ], + "path": "src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts", + "deprecated": false } ], "initialIsOpen": false diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx index 43c89a9e03e2f..3d2ddcc47ed8a 100644 --- a/api_docs/core_saved_objects.mdx +++ b/api_docs/core_saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-savedObjects title: "core.savedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.savedObjects plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.savedObjects'] 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. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2497 | 15 | 971 | 33 | +| 2524 | 15 | 977 | 33 | ## Client diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index d100081f7b272..3d1c022b25501 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github summary: API docs for the customIntegrations plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] 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. --- diff --git a/api_docs/dashboard.devdocs.json b/api_docs/dashboard.devdocs.json index a7a90e41d4b05..840d4d1eee1e8 100644 --- a/api_docs/dashboard.devdocs.json +++ b/api_docs/dashboard.devdocs.json @@ -1219,7 +1219,13 @@ "label": "controlGroupInput", "description": [], "signature": [ - "DashboardContainerControlGroupInput", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.PersistableControlGroupInput", + "text": "PersistableControlGroupInput" + }, " | undefined" ], "path": "src/plugins/dashboard/public/types.ts", @@ -1952,7 +1958,13 @@ "description": [], "signature": [ "Omit<", - "RawControlGroupAttributes", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RawControlGroupAttributes", + "text": "RawControlGroupAttributes" + }, ", \"id\"> | undefined" ], "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts", @@ -2079,7 +2091,7 @@ "section": "def-common.RawSavedDashboardPanel730ToLatest", "text": "RawSavedDashboardPanel730ToLatest" }, - ", \"type\" | \"title\" | \"panelIndex\" | \"gridData\" | \"version\" | \"embeddableConfig\" | \"panelRefName\"> & { readonly id?: string | undefined; readonly type: string; }" + ", \"title\" | \"type\" | \"panelIndex\" | \"gridData\" | \"version\" | \"embeddableConfig\" | \"panelRefName\"> & { readonly id?: string | undefined; readonly type: string; }" ], "path": "src/plugins/dashboard/common/types.ts", "deprecated": false, @@ -2431,78 +2443,6 @@ "common": { "classes": [], "functions": [ - { - "parentPluginId": "dashboard", - "id": "def-common.controlGroupInputToRawAttributes", - "type": "Function", - "tags": [], - "label": "controlGroupInputToRawAttributes", - "description": [], - "signature": [ - "(controlGroupInput: Omit<", - { - "pluginId": "controls", - "scope": "common", - "docId": "kibControlsPluginApi", - "section": "def-common.ControlGroupInput", - "text": "ControlGroupInput" - }, - ", \"id\">) => ", - "RawControlGroupAttributes" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboard", - "id": "def-common.controlGroupInputToRawAttributes.$1", - "type": "Object", - "tags": [], - "label": "controlGroupInput", - "description": [], - "signature": [ - "Omit<", - { - "pluginId": "controls", - "scope": "common", - "docId": "kibControlsPluginApi", - "section": "def-common.ControlGroupInput", - "text": "ControlGroupInput" - }, - ", \"id\">" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "dashboard", - "id": "def-common.getDefaultDashboardControlGroupInput", - "type": "Function", - "tags": [], - "label": "getDefaultDashboardControlGroupInput", - "description": [], - "signature": [ - "() => Omit<", - { - "pluginId": "controls", - "scope": "common", - "docId": "kibControlsPluginApi", - "section": "def-common.ControlGroupInput", - "text": "ControlGroupInput" - }, - ", \"id\">" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "returnComment": [], - "children": [], - "initialIsOpen": false - }, { "parentPluginId": "dashboard", "id": "def-common.migratePanelsTo730", @@ -2677,118 +2617,6 @@ ], "returnComment": [], "initialIsOpen": false - }, - { - "parentPluginId": "dashboard", - "id": "def-common.rawAttributesToControlGroupInput", - "type": "Function", - "tags": [], - "label": "rawAttributesToControlGroupInput", - "description": [], - "signature": [ - "(rawControlGroupAttributes: ", - "RawControlGroupAttributes", - ") => Omit<", - { - "pluginId": "controls", - "scope": "common", - "docId": "kibControlsPluginApi", - "section": "def-common.ControlGroupInput", - "text": "ControlGroupInput" - }, - ", \"id\"> | undefined" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboard", - "id": "def-common.rawAttributesToControlGroupInput.$1", - "type": "CompoundType", - "tags": [], - "label": "rawControlGroupAttributes", - "description": [], - "signature": [ - "RawControlGroupAttributes" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "dashboard", - "id": "def-common.rawAttributesToSerializable", - "type": "Function", - "tags": [], - "label": "rawAttributesToSerializable", - "description": [], - "signature": [ - "(rawControlGroupAttributes: Omit<", - "RawControlGroupAttributes", - ", \"id\">) => ", - "SerializableRecord" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboard", - "id": "def-common.rawAttributesToSerializable.$1", - "type": "Object", - "tags": [], - "label": "rawControlGroupAttributes", - "description": [], - "signature": [ - "Omit<", - "RawControlGroupAttributes", - ", \"id\">" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "dashboard", - "id": "def-common.serializableToRawAttributes", - "type": "Function", - "tags": [], - "label": "serializableToRawAttributes", - "description": [], - "signature": [ - "(serializable: ", - "SerializableRecord", - ") => Omit<", - "RawControlGroupAttributes", - ", \"type\" | \"id\">" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "dashboard", - "id": "def-common.serializableToRawAttributes.$1", - "type": "Object", - "tags": [], - "label": "serializable", - "description": [], - "signature": [ - "SerializableRecord" - ], - "path": "src/plugins/dashboard/common/embeddable/dashboard_control_group.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false } ], "interfaces": [ @@ -2850,7 +2678,13 @@ "label": "controlGroupInput", "description": [], "signature": [ - "DashboardContainerControlGroupInput", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.PersistableControlGroupInput", + "text": "PersistableControlGroupInput" + }, " | undefined" ], "path": "src/plugins/dashboard/common/types.ts", @@ -2944,7 +2778,7 @@ "signature": [ "Pick<", "RawSavedDashboardPanel610", - ", \"columns\" | \"title\" | \"sort\" | \"panelIndex\" | \"gridData\" | \"version\"> & { readonly id: string; readonly type: string; }" + ", \"title\" | \"columns\" | \"sort\" | \"panelIndex\" | \"gridData\" | \"version\"> & { readonly id: string; readonly type: string; }" ], "path": "src/plugins/dashboard/common/types.ts", "deprecated": false, @@ -2960,7 +2794,7 @@ "signature": [ "Pick<", "RawSavedDashboardPanel620", - ", \"columns\" | \"title\" | \"sort\" | \"panelIndex\" | \"gridData\" | \"version\" | \"embeddableConfig\"> & { readonly id: string; readonly type: string; }" + ", \"title\" | \"columns\" | \"sort\" | \"panelIndex\" | \"gridData\" | \"version\" | \"embeddableConfig\"> & { readonly id: string; readonly type: string; }" ], "path": "src/plugins/dashboard/common/types.ts", "deprecated": false, @@ -2976,7 +2810,7 @@ "signature": [ "Pick<", "RawSavedDashboardPanel620", - ", \"columns\" | \"title\" | \"sort\" | \"panelIndex\" | \"gridData\" | \"version\" | \"embeddableConfig\"> & { readonly id: string; readonly type: string; }" + ", \"title\" | \"columns\" | \"sort\" | \"panelIndex\" | \"gridData\" | \"version\" | \"embeddableConfig\"> & { readonly id: string; readonly type: string; }" ], "path": "src/plugins/dashboard/common/types.ts", "deprecated": false, @@ -3014,7 +2848,7 @@ "section": "def-common.RawSavedDashboardPanel730ToLatest", "text": "RawSavedDashboardPanel730ToLatest" }, - ", \"type\" | \"title\" | \"panelIndex\" | \"gridData\" | \"version\" | \"embeddableConfig\" | \"panelRefName\"> & { readonly id?: string | undefined; readonly type: string; }" + ", \"title\" | \"type\" | \"panelIndex\" | \"gridData\" | \"version\" | \"embeddableConfig\" | \"panelRefName\"> & { readonly id?: string | undefined; readonly type: string; }" ], "path": "src/plugins/dashboard/common/types.ts", "deprecated": false, @@ -3030,7 +2864,7 @@ "signature": [ "Pick<", "RawSavedDashboardPanelTo60", - ", \"columns\" | \"title\" | \"sort\" | \"size_x\" | \"size_y\" | \"row\" | \"col\" | \"panelIndex\"> & { readonly id: string; readonly type: string; }" + ", \"title\" | \"columns\" | \"sort\" | \"size_x\" | \"size_y\" | \"row\" | \"col\" | \"panelIndex\"> & { readonly id: string; readonly type: string; }" ], "path": "src/plugins/dashboard/common/types.ts", "deprecated": false, diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index d0f5a00bab677..b7d6084864327 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github summary: API docs for the dashboard plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] 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. --- @@ -18,7 +18,7 @@ Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-prese | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 151 | 0 | 149 | 14 | +| 142 | 0 | 140 | 12 | ## Client diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 532dc65f407b6..458cdf96fef07 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the dashboardEnhanced plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] 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. --- diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index 75239e090a139..62c04ae8d5d64 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -2395,7 +2395,7 @@ "section": "def-public.PluginInitializerContext", "text": "PluginInitializerContext" }, - "; }>; }>; autocomplete: Readonly<{} & { querySuggestions: Readonly<{} & { enabled: boolean; }>; valueSuggestions: Readonly<{} & { timeout: moment.Duration; enabled: boolean; tiers: string[]; terminateAfter: moment.Duration; }>; }>; }>>" + "; }>; }>; }>>" ], "path": "src/plugins/data/public/plugin.ts", "deprecated": false, @@ -2731,26 +2731,6 @@ "plugin": "dataViewEditor", "path": "src/plugins/data_view_editor/public/open_editor.tsx" }, - { - "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/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts" @@ -3265,6 +3245,96 @@ "children": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.NowProvider", + "type": "Class", + "tags": [], + "label": "NowProvider", + "description": [ + "\nUsed to synchronize time between parallel searches with relative time range that rely on `now`." + ], + "path": "src/plugins/data/public/now_provider/now_provider.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.NowProvider.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/data/public/now_provider/now_provider.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-public.NowProvider.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "() => Date" + ], + "path": "src/plugins/data/public/now_provider/now_provider.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-public.NowProvider.set", + "type": "Function", + "tags": [], + "label": "set", + "description": [], + "signature": [ + "(now: Date) => void" + ], + "path": "src/plugins/data/public/now_provider/now_provider.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.NowProvider.set.$1", + "type": "Object", + "tags": [], + "label": "now", + "description": [], + "signature": [ + "Date" + ], + "path": "src/plugins/data/public/now_provider/now_provider.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-public.NowProvider.reset", + "type": "Function", + "tags": [], + "label": "reset", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/data/public/now_provider/now_provider.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.OptionedParamType", @@ -7626,6 +7696,50 @@ "plugin": "dataViews", "path": "src/plugins/data_views/common/data_views/data_view.ts" }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" + }, { "plugin": "unifiedSearch", "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" @@ -7660,31 +7774,27 @@ }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_enum.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_enum.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { "plugin": "unifiedSearch", @@ -7711,24 +7821,28 @@ "path": "src/plugins/unified_search/public/filter_bar/filter_editor/value_input_type.tsx" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/utils.test.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/utils.test.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" }, { "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" + "path": "src/plugins/data_views/common/utils.test.ts" }, { "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" + "path": "src/plugins/data_views/common/utils.test.ts" } ], "children": [ @@ -8028,155 +8142,31 @@ }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/lib/kuery.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/lib/kuery.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_item.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_item.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_bar.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_bar.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/search_bar/search_bar.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/search_bar/search_bar.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filter_popover_content.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filter_popover_content.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filters_popover.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filters_popover.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" } ], "children": [ @@ -9581,7 +9571,7 @@ "label": "AggConfigOptions", "description": [], "signature": [ - "{ type: ", + "{ id?: string | undefined; type: ", { "pluginId": "data", "scope": "common", @@ -9589,7 +9579,7 @@ "section": "def-common.IAggType", "text": "IAggType" }, - "; id?: string | undefined; enabled?: boolean | undefined; params?: {} | ", + "; enabled?: boolean | undefined; params?: {} | ", "SerializableRecord", " | undefined; schema?: string | undefined; }" ], @@ -10727,14 +10717,6 @@ "plugin": "dataViews", "path": "src/plugins/data_views/public/index.ts" }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts" - }, { "plugin": "unifiedSearch", "path": "src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx" @@ -11119,12 +11101,60 @@ "removeBy": "8.1", "references": [ { - "plugin": "dataEnhanced", - "path": "x-pack/plugins/data_enhanced/server/search/session/types.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" }, { - "plugin": "dataEnhanced", - "path": "x-pack/plugins/data_enhanced/server/search/session/types.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, + { + "plugin": "dataEnhanced", + "path": "x-pack/plugins/data_enhanced/server/search/session/types.ts" + }, + { + "plugin": "dataEnhanced", + "path": "x-pack/plugins/data_enhanced/server/search/session/types.ts" }, { "plugin": "dataEnhanced", @@ -11182,6 +11212,20 @@ "references": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.NowProviderInternalContract", + "type": "Type", + "tags": [], + "label": "NowProviderInternalContract", + "description": [], + "signature": [ + "{ get: () => Date; set: (now: Date) => void; reset: () => void; }" + ], + "path": "src/plugins/data/public/now_provider/now_provider.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.ParsedInterval", @@ -12237,8 +12281,8 @@ "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" + "section": "def-common.DataView", + "text": "DataView" }, "[]) => string" ], @@ -12275,8 +12319,8 @@ "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" + "section": "def-common.DataView", + "text": "DataView" }, "[]" ], @@ -12560,9 +12604,9 @@ "Observable", "; getTimeUpdate$: () => ", "Observable", - "; getRefreshIntervalUpdate$: () => ", + "; getRefreshIntervalUpdate$: () => ", "Observable", - "; getAutoRefreshFetch$: () => ", + "; getAutoRefreshFetch$: () => ", "Observable", "<", { @@ -12574,7 +12618,7 @@ }, ">; getFetch$: () => ", "Observable", - "; getTime: () => ", + "; getTime: () => ", { "pluginId": "data", "scope": "common", @@ -14725,27 +14769,6 @@ "path": "src/plugins/data/public/types.ts", "deprecated": false, "children": [ - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginSetup.autocomplete", - "type": "Object", - "tags": [], - "label": "autocomplete", - "description": [], - "signature": [ - "{ getQuerySuggestions: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionGetFn", - "text": "QuerySuggestionGetFn" - }, - "; getAutocompleteSettings: () => { terminateAfter: number; timeout: number; }; }" - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - }, { "parentPluginId": "data", "id": "def-public.DataPublicPluginSetup.search", @@ -14782,7 +14805,13 @@ "text": "FilterManager" }, "; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; queryString: ", { "pluginId": "data", @@ -14851,31 +14880,6 @@ "path": "src/plugins/data/public/types.ts", "deprecated": false }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.autocomplete", - "type": "Object", - "tags": [], - "label": "autocomplete", - "description": [ - "\nautocomplete service\n{@link AutocompleteStart}" - ], - "signature": [ - "{ getQuerySuggestions: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionGetFn", - "text": "QuerySuggestionGetFn" - }, - "; hasQuerySuggestions: (language: string) => boolean; getValueSuggestions: ", - "ValueSuggestionsGetFn", - "; }" - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - }, { "parentPluginId": "data", "id": "def-public.DataPublicPluginStart.dataViews", @@ -14949,14 +14953,6 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/plugin.ts" }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" @@ -14981,10 +14977,6 @@ "plugin": "stackAlerts", "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx" }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, { "plugin": "inputControlVis", "path": "src/plugins/input_control_vis/public/control/list_control_factory.ts" @@ -15232,7 +15224,13 @@ "text": "QueryState" }, "; }>; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; getEsQuery: (indexPattern: ", { "pluginId": "dataViews", @@ -15352,7 +15350,7 @@ "section": "def-server.PluginInitializerContext", "text": "PluginInitializerContext" }, - "; }>; }>; autocomplete: Readonly<{} & { querySuggestions: Readonly<{} & { enabled: boolean; }>; valueSuggestions: Readonly<{} & { timeout: moment.Duration; enabled: boolean; tiers: string[]; terminateAfter: moment.Duration; }>; }>; }>>" + "; }>; }>; }>>" ], "path": "src/plugins/data/server/plugin.ts", "deprecated": false, @@ -15389,7 +15387,7 @@ }, ">, { bfetch, expressions, usageCollection, fieldFormats }: ", "DataPluginSetupDependencies", - ") => { autocomplete: { getAutocompleteSettings: () => { terminateAfter: number; timeout: number; }; }; __enhance: (enhancements: DataEnhancements) => void; search: ", + ") => { __enhance: (enhancements: DataEnhancements) => void; search: ", "ISearchSetup", "; query: { filterManager: { extract: (filters: ", "Filter", @@ -17157,26 +17155,6 @@ "plugin": "dataViewEditor", "path": "src/plugins/data_view_editor/public/open_editor.tsx" }, - { - "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/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts" @@ -18113,6 +18091,44 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-server.getRequestAbortedSignal", + "type": "Function", + "tags": [], + "label": "getRequestAbortedSignal", + "description": [ + "\nA simple utility function that returns an `AbortSignal` corresponding to an `AbortController`\nwhich aborts when the given request is aborted." + ], + "signature": [ + "(aborted$: ", + "Observable", + ") => AbortSignal" + ], + "path": "src/plugins/data/server/lib/get_request_aborted_signal.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.getRequestAbortedSignal.$1", + "type": "Object", + "tags": [], + "label": "aborted$", + "description": [ + "The observable of abort events (usually `request.events.aborted$`)" + ], + "signature": [ + "Observable", + "" + ], + "path": "src/plugins/data/server/lib/get_request_aborted_signal.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-server.getTime", @@ -18463,552 +18479,103 @@ }, { "parentPluginId": "data", - "id": "def-server.IFieldType", + "id": "def-server.ISearchOptions", "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "IFieldType", + "tags": [], + "label": "ISearchOptions", "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - }, - " extends ", - "DataViewFieldBase" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": true, - "removeBy": "8.2", - "references": [ + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false, + "children": [ { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/utils.ts" + "parentPluginId": "data", + "id": "def-server.ISearchOptions.abortSignal", + "type": "Object", + "tags": [], + "label": "abortSignal", + "description": [ + "\nAn `AbortSignal` that allows the caller of `search` to abort a search request." + ], + "signature": [ + "AbortSignal | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/utils.ts" + "parentPluginId": "data", + "id": "def-server.ISearchOptions.strategy", + "type": "string", + "tags": [], + "label": "strategy", + "description": [ + "\nUse this option to force using a specific server side search strategy. Leave empty to use the default strategy." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/data_view_field.ts" + "parentPluginId": "data", + "id": "def-server.ISearchOptions.legacyHitsTotal", + "type": "CompoundType", + "tags": [], + "label": "legacyHitsTotal", + "description": [ + "\nRequest the legacy format for the total number of hits. If sending `rest_total_hits_as_int` to\nsomething other than `true`, this should be set to `false`." + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/data_view_field.ts" + "parentPluginId": "data", + "id": "def-server.ISearchOptions.sessionId", + "type": "string", + "tags": [], + "label": "sessionId", + "description": [ + "\nA session ID, grouping multiple search requests into a single session." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/field_list.ts" + "parentPluginId": "data", + "id": "def-server.ISearchOptions.isStored", + "type": "CompoundType", + "tags": [], + "label": "isStored", + "description": [ + "\nWhether the session is already saved (i.e. sent to background)" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/field_list.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/field_list.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/field_list.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/types.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/types.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/types.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/types.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/index.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_operators.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_operators.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_operators.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_operators.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/value_input_type.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/value_input_type.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/utils.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/utils.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" - } - ], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IFieldType.count", - "type": "number", - "tags": [], - "label": "count", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.esTypes", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "string[] | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.aggregatable", - "type": "CompoundType", - "tags": [], - "label": "aggregatable", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.filterable", - "type": "CompoundType", - "tags": [], - "label": "filterable", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.searchable", - "type": "CompoundType", - "tags": [], - "label": "searchable", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.sortable", - "type": "CompoundType", - "tags": [], - "label": "sortable", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.visualizable", - "type": "CompoundType", - "tags": [], - "label": "visualizable", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.readFromDocValues", - "type": "CompoundType", - "tags": [], - "label": "readFromDocValues", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.displayName", - "type": "string", - "tags": [], - "label": "displayName", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.customLabel", - "type": "string", - "tags": [], - "label": "customLabel", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.format", - "type": "Any", - "tags": [], - "label": "format", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IFieldType.toSpec", - "type": "Function", - "tags": [], - "label": "toSpec", - "description": [], - "signature": [ - "((options?: { getFormatterForField?: ((field: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - ") => ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") | undefined; } | undefined) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - ") | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IFieldType.toSpec.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IFieldType.toSpec.$1.getFormatterForField", - "type": "Function", - "tags": [], - "label": "getFormatterForField", - "description": [], - "signature": [ - "((field: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - ") => ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") | undefined" - ], - "path": "src/plugins/data_views/common/fields/types.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions", - "type": "Interface", - "tags": [], - "label": "ISearchOptions", - "description": [], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.abortSignal", - "type": "Object", - "tags": [], - "label": "abortSignal", - "description": [ - "\nAn `AbortSignal` that allows the caller of `search` to abort a search request." - ], - "signature": [ - "AbortSignal | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.strategy", - "type": "string", - "tags": [], - "label": "strategy", - "description": [ - "\nUse this option to force using a specific server side search strategy. Leave empty to use the default strategy." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.legacyHitsTotal", - "type": "CompoundType", - "tags": [], - "label": "legacyHitsTotal", - "description": [ - "\nRequest the legacy format for the total number of hits. If sending `rest_total_hits_as_int` to\nsomething other than `true`, this should be set to `false`." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.sessionId", - "type": "string", - "tags": [], - "label": "sessionId", - "description": [ - "\nA session ID, grouping multiple search requests into a single session." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.isStored", - "type": "CompoundType", - "tags": [], - "label": "isStored", - "description": [ - "\nWhether the session is already saved (i.e. sent to background)" - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.isRestore", - "type": "CompoundType", - "tags": [], - "label": "isRestore", - "description": [ - "\nWhether the session is restored (i.e. search requests should re-use the stored search IDs,\nrather than starting from scratch)" - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false + "parentPluginId": "data", + "id": "def-server.ISearchOptions.isRestore", + "type": "CompoundType", + "tags": [], + "label": "isRestore", + "description": [ + "\nWhether the session is restored (i.e. search requests should re-use the stored search IDs,\nrather than starting from scratch)" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false }, { "parentPluginId": "data", @@ -19456,30 +19023,78 @@ "description": [], "signature": [ { - "pluginId": "dataViews", - "scope": "server", - "docId": "kibDataViewsPluginApi", - "section": "def-server.DataViewsServerPluginStart", - "text": "DataViewsServerPluginStart" - } - ], - "path": "src/plugins/data_views/server/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.KueryNode", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "KueryNode", - "description": [], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [ + "pluginId": "dataViews", + "scope": "server", + "docId": "kibDataViewsPluginApi", + "section": "def-server.DataViewsServerPluginStart", + "text": "DataViewsServerPluginStart" + } + ], + "path": "src/plugins/data_views/server/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.KueryNode", + "type": "Type", + "tags": [ + "deprecated" + ], + "label": "KueryNode", + "description": [], + "path": "src/plugins/data/common/es_query/index.ts", + "deprecated": true, + "removeBy": "8.1", + "references": [ + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, { "plugin": "dataEnhanced", "path": "x-pack/plugins/data_enhanced/server/search/session/types.ts" @@ -20795,19 +20410,6 @@ "path": "src/plugins/data/server/plugin.ts", "deprecated": false, "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataPluginSetup.autocomplete", - "type": "Object", - "tags": [], - "label": "autocomplete", - "description": [], - "signature": [ - "{ getAutocompleteSettings: () => { terminateAfter: number; timeout: number; }; }" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false - }, { "parentPluginId": "data", "id": "def-server.DataPluginSetup.search", @@ -25044,26 +24646,6 @@ "plugin": "dataViewEditor", "path": "src/plugins/data_view_editor/public/open_editor.tsx" }, - { - "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/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts" @@ -29492,6 +29074,50 @@ "plugin": "dataViews", "path": "src/plugins/data_views/common/data_views/data_view.ts" }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" + }, { "plugin": "unifiedSearch", "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" @@ -29526,31 +29152,27 @@ }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_enum.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_enum.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/utils.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { "plugin": "unifiedSearch", @@ -29577,24 +29199,28 @@ "path": "src/plugins/unified_search/public/filter_bar/filter_editor/value_input_type.tsx" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/utils.test.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/utils.test.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" }, { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" }, { "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" + "path": "src/plugins/data_views/common/utils.test.ts" }, { "plugin": "dataViews", - "path": "src/plugins/data_views/common/fields/fields.mocks.ts" + "path": "src/plugins/data_views/common/utils.test.ts" } ], "children": [ @@ -29894,155 +29520,31 @@ }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/lib/kuery.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/lib/kuery.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_item.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_item.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_bar.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_bar.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/search_bar/search_bar.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/search_bar/search_bar.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filter_popover_content.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filter_popover_content.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filters_popover.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filters_popover.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" } ], "children": [ @@ -32586,14 +32088,6 @@ "plugin": "dataViews", "path": "src/plugins/data_views/public/index.ts" }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts" - }, { "plugin": "unifiedSearch", "path": "src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx" @@ -32648,6 +32142,54 @@ "deprecated": true, "removeBy": "8.1", "references": [ + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts" + }, { "plugin": "dataEnhanced", "path": "x-pack/plugins/data_enhanced/server/search/session/types.ts" @@ -32815,7 +32357,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"className\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"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\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"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 | ", { "pluginId": "core", "scope": "public", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 354f58d2afd80..a876abb895181 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github summary: API docs for the data plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] 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. --- @@ -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 | |-------------------|-----------|------------------------|-----------------| -| 3426 | 40 | 2816 | 20 | +| 3414 | 38 | 2802 | 18 | ## Client diff --git a/api_docs/data_autocomplete.devdocs.json b/api_docs/data_autocomplete.devdocs.json deleted file mode 100644 index 63229979a6082..0000000000000 --- a/api_docs/data_autocomplete.devdocs.json +++ /dev/null @@ -1,434 +0,0 @@ -{ - "id": "data.autocomplete", - "client": { - "classes": [], - "functions": [], - "interfaces": [ - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionBasic", - "type": "Interface", - "tags": [], - "label": "QuerySuggestionBasic", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionBasic.type", - "type": "Enum", - "tags": [], - "label": "type", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionTypes", - "text": "QuerySuggestionTypes" - } - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionBasic.description", - "type": "CompoundType", - "tags": [], - "label": "description", - "description": [], - "signature": [ - "string | JSX.Element | undefined" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionBasic.end", - "type": "number", - "tags": [], - "label": "end", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionBasic.start", - "type": "number", - "tags": [], - "label": "start", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionBasic.text", - "type": "string", - "tags": [], - "label": "text", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionBasic.cursorIndex", - "type": "number", - "tags": [], - "label": "cursorIndex", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionField", - "type": "Interface", - "tags": [], - "label": "QuerySuggestionField", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionField", - "text": "QuerySuggestionField" - }, - " extends ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionBasic", - "text": "QuerySuggestionBasic" - } - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionField.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionTypes", - "text": "QuerySuggestionTypes" - }, - ".Field" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionField.field", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" - } - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs", - "type": "Interface", - "tags": [], - "label": "QuerySuggestionGetFnArgs", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.language", - "type": "string", - "tags": [], - "label": "language", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.indexPatterns", - "type": "Array", - "tags": [], - "label": "indexPatterns", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" - }, - "[]" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.query", - "type": "string", - "tags": [], - "label": "query", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.selectionStart", - "type": "number", - "tags": [], - "label": "selectionStart", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.selectionEnd", - "type": "number", - "tags": [], - "label": "selectionEnd", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.signal", - "type": "Object", - "tags": [], - "label": "signal", - "description": [], - "signature": [ - "AbortSignal | undefined" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.useTimeRange", - "type": "CompoundType", - "tags": [], - "label": "useTimeRange", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.boolFilter", - "type": "Any", - "tags": [], - "label": "boolFilter", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFnArgs.method", - "type": "CompoundType", - "tags": [], - "label": "method", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.ValueSuggestionsMethod", - "text": "ValueSuggestionsMethod" - }, - " | undefined" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ], - "enums": [ - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionTypes", - "type": "Enum", - "tags": [], - "label": "QuerySuggestionTypes", - "description": [], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "misc": [ - { - "parentPluginId": "data", - "id": "def-public.AutocompleteStart", - "type": "Type", - "tags": [], - "label": "AutocompleteStart", - "description": [], - "signature": [ - "{ getQuerySuggestions: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionGetFn", - "text": "QuerySuggestionGetFn" - }, - "; hasQuerySuggestions: (language: string) => boolean; getValueSuggestions: ", - "ValueSuggestionsGetFn", - "; }" - ], - "path": "src/plugins/data/public/autocomplete/autocomplete_service.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestion", - "type": "Type", - "tags": [], - "label": "QuerySuggestion", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionBasic", - "text": "QuerySuggestionBasic" - }, - " | ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionField", - "text": "QuerySuggestionField" - } - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFn", - "type": "Type", - "tags": [], - "label": "QuerySuggestionGetFn", - "description": [], - "signature": [ - "(args: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionGetFnArgs", - "text": "QuerySuggestionGetFnArgs" - }, - ") => Promise<", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestion", - "text": "QuerySuggestion" - }, - "[]> | undefined" - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.QuerySuggestionGetFn.$1", - "type": "Object", - "tags": [], - "label": "args", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataAutocompletePluginApi", - "section": "def-public.QuerySuggestionGetFnArgs", - "text": "QuerySuggestionGetFnArgs" - } - ], - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts", - "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/data_autocomplete.mdx b/api_docs/data_autocomplete.mdx deleted file mode 100644 index 731ed5bb655e7..0000000000000 --- a/api_docs/data_autocomplete.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: kibDataAutocompletePluginApi -slug: /kibana-dev-docs/api/data-autocomplete -title: "data.autocomplete" -image: https://source.unsplash.com/400x175/?github -summary: API docs for the data.autocomplete plugin -date: 2022-04-05 -tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.autocomplete'] -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 dataAutocompleteObj from './data_autocomplete.devdocs.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 | -|-------------------|-----------|------------------------|-----------------| -| 3426 | 40 | 2816 | 20 | - -## Client - -### Interfaces - - -### Enums - - -### Consts, variables and types - - diff --git a/api_docs/data_enhanced.mdx b/api_docs/data_enhanced.mdx index 03a5d056398c2..6eb3ac5dc589d 100644 --- a/api_docs/data_enhanced.mdx +++ b/api_docs/data_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataEnhanced title: "dataEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataEnhanced plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataEnhanced'] 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. --- diff --git a/api_docs/data_query.devdocs.json b/api_docs/data_query.devdocs.json index 4cccb61a48547..db5f5e436135d 100644 --- a/api_docs/data_query.devdocs.json +++ b/api_docs/data_query.devdocs.json @@ -863,6 +863,347 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-public.QueryService", + "type": "Class", + "tags": [], + "label": "QueryService", + "description": [], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.QueryService.filterManager", + "type": "Object", + "tags": [], + "label": "filterManager", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.FilterManager", + "text": "FilterManager" + } + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.QueryService.timefilter", + "type": "Object", + "tags": [], + "label": "timefilter", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + } + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.QueryService.queryStringManager", + "type": "Object", + "tags": [], + "label": "queryStringManager", + "description": [], + "signature": [ + "{ getDefaultQuery: () => { query: string; language: any; }; formatQuery: (query: string | ", + "Query", + " | undefined) => ", + "Query", + "; getUpdates$: () => ", + "Observable", + "<", + "Query", + ">; getQuery: () => ", + "Query", + "; setQuery: (query: ", + "Query", + ") => void; clearQuery: () => void; }" + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.QueryService.state$", + "type": "Object", + "tags": [], + "label": "state$", + "description": [], + "signature": [ + "Observable", + "<{ changes: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryStateChange", + "text": "QueryStateChange" + }, + "; state: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryState", + "text": "QueryState" + }, + "; }>" + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.QueryService.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "({ storage, uiSettings, nowProvider }: QueryServiceSetupDependencies) => { filterManager: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.FilterManager", + "text": "FilterManager" + }, + "; timefilter: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, + "; queryString: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryStringContract", + "text": "QueryStringContract" + }, + "; state$: ", + "Observable", + "<{ changes: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryStateChange", + "text": "QueryStateChange" + }, + "; state: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryState", + "text": "QueryState" + }, + "; }>; }" + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.QueryService.setup.$1", + "type": "Object", + "tags": [], + "label": "{ storage, uiSettings, nowProvider }", + "description": [], + "signature": [ + "QueryServiceSetupDependencies" + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-public.QueryService.start", + "type": "Function", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "({ storage, uiSettings, http }: QueryServiceStartDependencies) => { addToQueryLog: (appName: string, { language, query }: ", + "Query", + ") => void; filterManager: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.FilterManager", + "text": "FilterManager" + }, + "; queryString: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryStringContract", + "text": "QueryStringContract" + }, + "; savedQueries: { createQuery: (attributes: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.SavedQueryAttributes", + "text": "SavedQueryAttributes" + }, + ", { overwrite }?: { overwrite?: boolean | undefined; }) => Promise<", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.SavedQuery", + "text": "SavedQuery" + }, + ">; updateQuery: (id: string, attributes: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.SavedQueryAttributes", + "text": "SavedQueryAttributes" + }, + ") => Promise<", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.SavedQuery", + "text": "SavedQuery" + }, + ">; getAllSavedQueries: () => Promise<", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.SavedQuery", + "text": "SavedQuery" + }, + "[]>; findSavedQueries: (search?: string, perPage?: number, page?: number) => Promise<{ total: number; queries: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.SavedQuery", + "text": "SavedQuery" + }, + "[]; }>; getSavedQuery: (id: string) => Promise<", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.SavedQuery", + "text": "SavedQuery" + }, + ">; deleteSavedQuery: (id: string) => Promise<{}>; getSavedQueryCount: () => Promise; }; state$: ", + "Observable", + "<{ changes: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryStateChange", + "text": "QueryStateChange" + }, + "; state: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryState", + "text": "QueryState" + }, + "; }>; timefilter: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, + "; getEsQuery: (indexPattern: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.IndexPattern", + "text": "IndexPattern" + }, + ", timeRange?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + " | undefined) => { bool: ", + "BoolQuery", + "; }; }" + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.QueryService.start.$1", + "type": "Object", + "tags": [], + "label": "{ storage, uiSettings, http }", + "description": [], + "signature": [ + "QueryServiceStartDependencies" + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-public.QueryService.stop", + "type": "Function", + "tags": [], + "label": "stop", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/data/public/query/query_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-public.TimeHistory", @@ -1118,7 +1459,13 @@ "text": "QueryState" }, "; }>; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; getEsQuery: (indexPattern: ", { "pluginId": "dataViews", @@ -1146,7 +1493,13 @@ "text": "FilterManager" }, "; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; queryString: ", { "pluginId": "data", @@ -1289,7 +1642,13 @@ "text": "QueryState" }, "; }>; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; getEsQuery: (indexPattern: ", { "pluginId": "dataViews", @@ -1317,7 +1676,13 @@ "text": "FilterManager" }, "; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; queryString: ", { "pluginId": "data", @@ -1780,8 +2145,8 @@ "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" + "section": "def-common.DataView", + "text": "DataView" }, "[]) => string" ], @@ -1814,8 +2179,8 @@ "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" + "section": "def-common.DataView", + "text": "DataView" }, "[]" ], @@ -1842,16 +2207,16 @@ "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" + "section": "def-common.DataView", + "text": "DataView" }, "[]) => ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" + "section": "def-common.DataView", + "text": "DataView" }, " | undefined" ], @@ -1884,8 +2249,8 @@ "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" + "section": "def-common.DataView", + "text": "DataView" }, "[]" ], @@ -2036,7 +2401,13 @@ "text": "QueryState" }, "; }>; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; getEsQuery: (indexPattern: ", { "pluginId": "dataViews", @@ -2064,7 +2435,13 @@ "text": "FilterManager" }, "; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; queryString: ", { "pluginId": "data", @@ -2205,7 +2582,13 @@ "text": "QueryState" }, "; }>; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; getEsQuery: (indexPattern: ", { "pluginId": "dataViews", @@ -2233,7 +2616,13 @@ "text": "FilterManager" }, "; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; queryString: ", { "pluginId": "data", @@ -2740,6 +3129,211 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.TimefilterSetup", + "type": "Interface", + "tags": [], + "label": "TimefilterSetup", + "description": [], + "path": "src/plugins/data/public/query/timefilter/timefilter_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.TimefilterSetup.timefilter", + "type": "Object", + "tags": [], + "label": "timefilter", + "description": [], + "signature": [ + "{ isTimeRangeSelectorEnabled: () => boolean; isAutoRefreshSelectorEnabled: () => boolean; isTimeTouched: () => boolean; isRefreshIntervalTouched: () => boolean; getEnabledUpdated$: () => ", + "Observable", + "; getTimeUpdate$: () => ", + "Observable", + "; getRefreshIntervalUpdate$: () => ", + "Observable", + "; getAutoRefreshFetch$: () => ", + "Observable", + "<", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.AutoRefreshDoneFn", + "text": "AutoRefreshDoneFn" + }, + ">; getFetch$: () => ", + "Observable", + "; getTime: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "; getAbsoluteTime: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "; setTime: (time: ", + "InputTimeRange", + ") => void; getRefreshInterval: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.RefreshInterval", + "text": "RefreshInterval" + }, + "; setRefreshInterval: (refreshInterval: Partial<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.RefreshInterval", + "text": "RefreshInterval" + }, + ">) => void; createFilter: (indexPattern: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.IIndexPattern", + "text": "IIndexPattern" + }, + ", timeRange?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + " | undefined) => ", + "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | MatchAllRangeFilter | undefined; createRelativeFilter: (indexPattern: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.IIndexPattern", + "text": "IIndexPattern" + }, + ", timeRange?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + " | undefined) => ", + "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | MatchAllRangeFilter | undefined; getBounds: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRangeBounds", + "text": "TimeRangeBounds" + }, + "; calculateBounds: (timeRange: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + ") => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRangeBounds", + "text": "TimeRangeBounds" + }, + "; getActiveBounds: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRangeBounds", + "text": "TimeRangeBounds" + }, + " | undefined; enableTimeRangeSelector: () => void; disableTimeRangeSelector: () => void; enableAutoRefreshSelector: () => void; disableAutoRefreshSelector: () => void; getTimeDefaults: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "; getRefreshIntervalDefaults: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.RefreshInterval", + "text": "RefreshInterval" + }, + "; }" + ], + "path": "src/plugins/data/public/query/timefilter/timefilter_service.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.TimefilterSetup.history", + "type": "Object", + "tags": [], + "label": "history", + "description": [], + "signature": [ + "{ get$: () => ", + "Observable", + "<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "[]>; add: (time: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + ") => void; get: () => ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + "[]; }" + ], + "path": "src/plugins/data/public/query/timefilter/timefilter_service.ts", + "deprecated": false + } + ], + "initialIsOpen": false } ], "enums": [], @@ -2777,7 +3371,13 @@ "text": "FilterManager" }, "; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; queryString: ", { "pluginId": "data", @@ -2911,7 +3511,13 @@ "text": "QueryState" }, "; }>; timefilter: ", - "TimefilterSetup", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.TimefilterSetup", + "text": "TimefilterSetup" + }, "; getEsQuery: (indexPattern: ", { "pluginId": "dataViews", @@ -3003,9 +3609,9 @@ "Observable", "; getTimeUpdate$: () => ", "Observable", - "; getRefreshIntervalUpdate$: () => ", + "; getRefreshIntervalUpdate$: () => ", "Observable", - "; getAutoRefreshFetch$: () => ", + "; getAutoRefreshFetch$: () => ", "Observable", "<", { @@ -3017,7 +3623,7 @@ }, ">; getFetch$: () => ", "Observable", - "; getTime: () => ", + "; getTime: () => ", { "pluginId": "data", "scope": "common", diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index c4ef7a0a5710b..76b3bbc03583e 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github summary: API docs for the data.query plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] 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. --- @@ -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 | |-------------------|-----------|------------------------|-----------------| -| 3426 | 40 | 2816 | 20 | +| 3414 | 38 | 2802 | 18 | ## Client diff --git a/api_docs/data_search.devdocs.json b/api_docs/data_search.devdocs.json index 3519424309902..733c32b8df845 100644 --- a/api_docs/data_search.devdocs.json +++ b/api_docs/data_search.devdocs.json @@ -1474,55 +1474,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-server.DataRequestHandlerContext", - "type": "Interface", - "tags": [], - "label": "DataRequestHandlerContext", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.DataRequestHandlerContext", - "text": "DataRequestHandlerContext" - }, - " extends ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RequestHandlerContext", - "text": "RequestHandlerContext" - } - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataRequestHandlerContext.search", - "type": "Object", - "tags": [], - "label": "search", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataSearchPluginApi", - "section": "def-server.IScopedSearchClient", - "text": "IScopedSearchClient" - } - ], - "path": "src/plugins/data/server/search/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-server.IScopedSearchClient", @@ -2636,6 +2587,35 @@ ], "enums": [], "misc": [ + { + "parentPluginId": "data", + "id": "def-server.DataRequestHandlerContext", + "type": "Type", + "tags": [], + "label": "DataRequestHandlerContext", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + " & { search: Promise<", + { + "pluginId": "data", + "scope": "server", + "docId": "kibDataSearchPluginApi", + "section": "def-server.IScopedSearchClient", + "text": "IScopedSearchClient" + }, + ">; }" + ], + "path": "src/plugins/data/server/search/types.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-server.SearchRequestHandlerContext", @@ -7599,6 +7579,117 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.MultiFieldKey", + "type": "Class", + "tags": [], + "label": "MultiFieldKey", + "description": [], + "path": "src/plugins/data/common/search/aggs/buckets/multi_field_key.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.MultiFieldKey.id", + "type": "string", + "tags": [], + "label": "[id]", + "description": [], + "path": "src/plugins/data/common/search/aggs/buckets/multi_field_key.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.MultiFieldKey.keys", + "type": "Array", + "tags": [], + "label": "keys", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data/common/search/aggs/buckets/multi_field_key.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.MultiFieldKey.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/data/common/search/aggs/buckets/multi_field_key.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.MultiFieldKey.Unnamed.$1", + "type": "Unknown", + "tags": [], + "label": "bucket", + "description": [], + "signature": [ + "unknown" + ], + "path": "src/plugins/data/common/search/aggs/buckets/multi_field_key.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-common.MultiFieldKey.idBucket", + "type": "Function", + "tags": [], + "label": "idBucket", + "description": [], + "signature": [ + "(bucket: unknown) => string" + ], + "path": "src/plugins/data/common/search/aggs/buckets/multi_field_key.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.MultiFieldKey.idBucket.$1", + "type": "Unknown", + "tags": [], + "label": "bucket", + "description": [], + "signature": [ + "unknown" + ], + "path": "src/plugins/data/common/search/aggs/buckets/multi_field_key.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-common.MultiFieldKey.toString", + "type": "Function", + "tags": [], + "label": "toString", + "description": [], + "signature": [ + "() => string" + ], + "path": "src/plugins/data/common/search/aggs/buckets/multi_field_key.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.OptionedParamType", @@ -17986,6 +18077,19 @@ "path": "src/plugins/data/common/search/aggs/buckets/multi_terms.ts", "deprecated": false }, + { + "parentPluginId": "data", + "id": "def-common.AggParamsMultiTerms.shardSize", + "type": "number", + "tags": [], + "label": "shardSize", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/data/common/search/aggs/buckets/multi_terms.ts", + "deprecated": false + }, { "parentPluginId": "data", "id": "def-common.AggParamsMultiTerms.otherBucket", @@ -18778,6 +18882,19 @@ "path": "src/plugins/data/common/search/aggs/buckets/terms.ts", "deprecated": false }, + { + "parentPluginId": "data", + "id": "def-common.AggParamsTerms.shardSize", + "type": "number", + "tags": [], + "label": "shardSize", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/data/common/search/aggs/buckets/terms.ts", + "deprecated": false + }, { "parentPluginId": "data", "id": "def-common.AggParamsTerms.missingBucket", @@ -24348,7 +24465,7 @@ "label": "AggConfigOptions", "description": [], "signature": [ - "{ type: ", + "{ id?: string | undefined; type: ", { "pluginId": "data", "scope": "common", @@ -24356,7 +24473,7 @@ "section": "def-common.IAggType", "text": "IAggType" }, - "; id?: string | undefined; enabled?: boolean | undefined; params?: {} | ", + "; enabled?: boolean | undefined; params?: {} | ", "SerializableRecord", " | undefined; schema?: string | undefined; }" ], @@ -25058,7 +25175,7 @@ "label": "CreateAggConfigParams", "description": [], "signature": [ - "{ type: string | ", + "{ id?: string | undefined; type: string | ", { "pluginId": "data", "scope": "common", @@ -25066,7 +25183,7 @@ "section": "def-common.IAggType", "text": "IAggType" }, - "; id?: string | undefined; enabled?: boolean | undefined; params?: {} | ", + "; enabled?: boolean | undefined; params?: {} | ", "SerializableRecord", " | undefined; schema?: string | undefined; }" ], diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 608be3044f659..ae24c35139513 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github summary: API docs for the data.search plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] 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. --- @@ -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 | |-------------------|-----------|------------------------|-----------------| -| 3426 | 40 | 2816 | 20 | +| 3414 | 38 | 2802 | 18 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 8a11bfeccdeab..01bc3bf40b471 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewEditor plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] 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. --- diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 7a72bfa2e79d6..27b12a115195c 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewFieldEditor plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] 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. --- diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 1d26cc3a65daa..b1bfe293c7c92 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewManagement plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] 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. --- diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 5ad402626c258..327d6e36ba3f4 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -4107,26 +4107,6 @@ "plugin": "dataViewEditor", "path": "src/plugins/data_view_editor/public/open_editor.tsx" }, - { - "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/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts" @@ -7104,14 +7084,6 @@ "plugin": "data", "path": "src/plugins/data/public/search/search_service.ts" }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts" - }, { "plugin": "unifiedSearch", "path": "src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx" @@ -8116,8 +8088,8 @@ "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IFieldType", - "text": "IFieldType" + "section": "def-common.FieldSpec", + "text": "FieldSpec" }, " | undefined" ], @@ -15771,26 +15743,6 @@ "plugin": "dataViewEditor", "path": "src/plugins/data_view_editor/public/open_editor.tsx" }, - { - "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/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts" @@ -18995,89 +18947,61 @@ "plugin": "data", "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts" }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/value_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/value_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/value_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/value_suggestion_provider.ts" - }, { "plugin": "data", "path": "src/plugins/data/public/index.ts" }, { "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/kql_query_suggestion/field.tsx" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/kql_query_suggestion/field.tsx" + "path": "src/plugins/data/public/actions/filters/create_filters_from_range_select.ts" }, { "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/kql_query_suggestion/field.tsx" + "path": "src/plugins/data/public/actions/filters/create_filters_from_range_select.ts" }, { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/kql_query_suggestion/value.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/kql_query_suggestion/value.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/actions/filters/create_filters_from_range_select.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/actions/filters/create_filters_from_range_select.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" }, { - "plugin": "data", - "path": "src/plugins/data/server/autocomplete/terms_enum.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" }, { - "plugin": "data", - "path": "src/plugins/data/server/autocomplete/terms_enum.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" }, { - "plugin": "data", - "path": "src/plugins/data/server/autocomplete/terms_agg.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" }, { - "plugin": "data", - "path": "src/plugins/data/server/autocomplete/terms_agg.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { - "plugin": "data", - "path": "src/plugins/data/server/autocomplete/terms_agg.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { - "plugin": "data", - "path": "src/plugins/data/server/autocomplete/terms_agg.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { - "plugin": "data", - "path": "src/plugins/data/server/index.ts" + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { "plugin": "unifiedSearch", @@ -19113,19 +19037,27 @@ }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_enum.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_enum.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/server/autocomplete/terms_agg.ts" }, { "plugin": "data", @@ -19174,6 +19106,22 @@ { "plugin": "unifiedSearch", "path": "src/plugins/unified_search/public/filter_bar/filter_editor/value_input_type.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" } ], "children": [ @@ -19511,30 +19459,6 @@ "plugin": "data", "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts" }, - { - "plugin": "data", - "path": "src/plugins/data/public/query/filter_manager/lib/get_index_pattern_from_filter.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/query/filter_manager/lib/get_index_pattern_from_filter.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/query/filter_manager/lib/get_index_pattern_from_filter.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts" - }, { "plugin": "data", "path": "src/plugins/data/public/query/timefilter/timefilter.ts" @@ -19547,189 +19471,37 @@ "plugin": "data", "path": "src/plugins/data/public/query/timefilter/timefilter.ts" }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/value_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/value_suggestion_provider.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/value_suggestion_provider.ts" - }, { "plugin": "data", "path": "src/plugins/data/public/index.ts" }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/kql_query_suggestion/value.ts" - }, - { - "plugin": "data", - "path": "src/plugins/data/public/autocomplete/providers/kql_query_suggestion/value.ts" - }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/lib/kuery.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/lib/kuery.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_item.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_item.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_bar.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/filter_bar/filter_bar.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/search_bar/search_bar.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/search_bar/search_bar.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filter_popover_content.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filter_popover_content.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filters_popover.tsx" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/apply_filters/apply_filters_popover.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx" + "path": "src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts" }, { "plugin": "data", @@ -22132,14 +21904,6 @@ "plugin": "data", "path": "src/plugins/data/public/search/search_service.ts" }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts" - }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts" - }, { "plugin": "unifiedSearch", "path": "src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx" @@ -22286,7 +22050,7 @@ "signature": [ "Pick<", "Toast", - ", \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"className\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"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\" | \"color\" | \"className\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"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 | ", { "pluginId": "core", "scope": "public", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index b595999839c2c..24669a558c24f 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViews plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] 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. --- diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 7bc87154c95ff..dba30154fefa5 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataVisualizer plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] 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. --- diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 8db17bbe8bee3..a9ce0254cea52 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- @@ -15,40 +15,39 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | ---------------|-----------|-----------| | | dataViews, maps, data | - | | | dataViews, unifiedSearch, maps, data | - | -| | dataViews, discover, ux, savedObjects, dataViewEditor, uptime, maps, visDefaultEditor, data | - | +| | dataViews, discover, ux, savedObjects, dataViewEditor, maps, visDefaultEditor, data | - | | | dataViews, dataViewEditor, maps, visDefaultEditor, data | - | -| | dataViews, unifiedSearch, monitoring, stackAlerts | - | +| | dataViews, unifiedSearch | - | | | dataViews, canvas | - | -| | dataViews, unifiedSearch, monitoring, stackAlerts, data | - | +| | dataViews, unifiedSearch, data | - | | | dataViews, canvas, data | - | | | dataViews, unifiedSearch, maps, data | - | | | dataViews, dataViewEditor, maps, visDefaultEditor, data | - | | | dataViews, maps, data | - | | | dataViews | - | -| | dataViews, discover, ux, savedObjects, dataViewEditor, uptime, maps, visDefaultEditor, data | - | +| | dataViews, discover, ux, savedObjects, dataViewEditor, maps, visDefaultEditor, data | - | | | dataViews, maps | - | | | dataViewManagement, dataViews | - | | | visTypeTimeseries, graph, dataViewManagement, dataViews | - | | | dataViews, dataViewManagement | - | | | dataViews, canvas | - | | | dataViews, dataViewEditor, maps, visDefaultEditor | - | -| | dataViews, discover, ux, savedObjects, dataViewEditor, uptime, maps, visDefaultEditor | - | +| | dataViews, discover, ux, savedObjects, dataViewEditor, maps, visDefaultEditor | - | | | dataViews, maps | - | | | dataViews, maps | - | | | dataViewManagement, dataViews | - | | | visTypeTimeseries, graph, dataViewManagement, dataViews | - | | | dataViews, dataViewManagement | - | -| | unifiedSearch, discover, maps, infra, graph, monitoring, securitySolution, stackAlerts, uptime, inputControlVis, savedObjects | - | +| | unifiedSearch, discover, maps, infra, graph, securitySolution, stackAlerts, inputControlVis, savedObjects | - | | | maps | - | | | data, infra, maps | - | -| | dashboard, maps | - | | | discover | - | | | discover | - | | | data, discover, embeddable | - | | | advancedSettings, discover | - | | | advancedSettings, discover | - | -| | esUiShared, home, spaces, fleet, visualizations, lens, observability, dataEnhanced, ml, apm, cloudSecurityPosture, indexLifecycleManagement, upgradeAssistant, uptime, ux, kibanaOverview, savedObjectsManagement | - | -| | dashboard, lens, stackAlerts, visTypeTable, visTypeTimeseries, visTypeXy, visTypeVislib, expressionPartitionVis | - | +| | management, observability, infra, apm, cloudSecurityPosture, enterpriseSearch, securitySolution, synthetics, ux, kibanaOverview | - | +| | esUiShared, home, spaces, fleet, visualizations, lens, observability, dataEnhanced, ml, apm, cloudSecurityPosture, indexLifecycleManagement, synthetics, upgradeAssistant, ux, kibanaOverview, savedObjectsManagement | - | | | canvas, visTypeXy | - | | | canvas | - | | | canvas | - | @@ -59,41 +58,40 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | canvas | - | | | canvas | - | | | canvas, visTypeXy | - | +| | management, spaces, observability, ml, canvas, cloudSecurityPosture, enterpriseSearch, osquery, securitySolution, kibanaOverview | - | +| | dashboard, lens, stackAlerts, visTypeTable, visTypeTimeseries, visTypeXy, visTypeVislib, expressionPartitionVis | - | | | visTypeTimeseries, graph, dataViewManagement | - | | | encryptedSavedObjects, actions, cloud, ml, dataEnhanced, logstash, securitySolution | - | +| | dashboard | - | | | visTypeTimeseries | - | | | dataViewManagement | - | | | dataViewManagement | - | +| | actions, ml, enterpriseSearch, savedObjectsTagging | - | | | spaces, savedObjectsManagement | - | | | spaces, savedObjectsManagement | - | -| | actions, ml, enterpriseSearch, savedObjectsTagging | - | | | visTypeGauge | - | | | visTypePie | - | | | visTypePie | - | | | actions, alerting | - | | | console | - | | | unifiedSearch | 8.1 | +| | unifiedSearch, dataEnhanced | 8.1 | | | unifiedSearch, discover, dashboard, urlDrilldown, stackAlerts | 8.1 | | | unifiedSearch | 8.1 | | | unifiedSearch | 8.1 | | | unifiedSearch, discover, dashboard, urlDrilldown, stackAlerts | 8.1 | +| | unifiedSearch, dataEnhanced | 8.1 | | | unifiedSearch, discover, dashboard, urlDrilldown, stackAlerts | 8.1 | +| | unifiedSearch, dataEnhanced | 8.1 | | | discover, stackAlerts, inputControlVis | 8.1 | | | discover, stackAlerts, inputControlVis | 8.1 | -| | dataEnhanced | 8.1 | | | dataEnhanced | 8.1 | -| | dataEnhanced | 8.1 | -| | dataEnhanced | 8.1 | | | apm | 8.1 | | | dataViews, unifiedSearch | 8.2 | | | dataViews, unifiedSearch, data | 8.2 | -| | dataViews, unifiedSearch | 8.2 | -| | visualizations, dashboard, maps, graph | 8.8.0 | | | visualizations, dashboard, lens, maps, ml, securitySolution, security | 8.8.0 | | | lens, dashboard, maps | 8.8.0 | -| | embeddable, presentationUtil, discover, dashboard, graph | 8.8.0 | -| | monitoring, visTypeVega | 8.8.0 | -| | monitoring, kibanaUsageCollection | 8.8.0 | +| | embeddable, discover, presentationUtil, dashboard, graph | 8.8.0 | | | spaces, security, actions, alerting, ml, remoteClusters, graph, indexLifecycleManagement, mapsEms, painlessLab, rollup, searchprofiler, snapshotRestore, transform, upgradeAssistant | 8.8.0 | | | apm, security, securitySolution | 8.8.0 | | | apm, security, securitySolution | 8.8.0 | @@ -102,14 +100,16 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | dashboard | 8.8.0 | | | cloud, apm | 8.8.0 | | | security, licenseManagement, ml, apm, crossClusterReplication, logstash, painlessLab, searchprofiler, watcher | 8.8.0 | +| | management, fleet, security, kibanaOverview | 8.8.0 | | | spaces, security, alerting | 8.8.0 | | | security, fleet | 8.8.0 | | | security, fleet | 8.8.0 | | | security, fleet | 8.8.0 | -| | management, fleet, security, kibanaOverview | 8.8.0 | | | security | 8.8.0 | | | mapsEms | 8.8.0 | | | visTypeVega | 8.8.0 | +| | monitoring, visTypeVega | 8.8.0 | +| | monitoring, kibanaUsageCollection | 8.8.0 | | | ml | 8.8.0 Note to maintainers: when looking at usages, mind that typical use could be inside a `catch` block, @@ -201,6 +201,7 @@ Safe to remove. | | expressions | | | expressions | | | expressions | +| | savedObjects | | | licensing | | | licensing | | | licensing | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 0005cd3853b72..bc9d1dac3a021 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- @@ -45,6 +45,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | ---------------|-----------|-----------| | | [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) | 8.8.0 | +| | [no_data_config.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/templates/no_data_config.ts#:~:text=KibanaPageTemplateProps), [no_data_config.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/templates/no_data_config.ts#:~:text=KibanaPageTemplateProps), [apm_main_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/templates/apm_main_template.tsx#:~:text=KibanaPageTemplateProps), [apm_main_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/templates/apm_main_template.tsx#:~:text=KibanaPageTemplateProps), [service_group_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/templates/service_group_template.tsx#:~:text=KibanaPageTemplateProps), [service_group_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/templates/service_group_template.tsx#:~:text=KibanaPageTemplateProps) | - | | | [app_root.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/app_root.tsx#:~:text=RedirectAppLinks), [app_root.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/app_root.tsx#:~:text=RedirectAppLinks), [app_root.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/app_root.tsx#:~:text=RedirectAppLinks) | - | | | [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 | 8.8.0 | | | [license_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/context/license/license_context.tsx#:~:text=license%24) | 8.8.0 | @@ -59,16 +60,17 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes) | - | | | [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes) | - | | | [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes), [es_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/lib/es_service.ts#:~:text=IndexPatternAttributes) | - | -| | [embeddable.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/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) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context), [embeddable.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.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), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/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), [neq.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context) | - | | | [setup_expressions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/setup_expressions.ts#:~:text=getFunction) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/application.tsx#:~:text=getFunctions), [functions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.test.ts#:~:text=getFunctions) | - | | | [setup_expressions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/setup_expressions.ts#:~:text=getTypes), [application.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/application.tsx#:~:text=getTypes), [functions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getTypes) | - | | | [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), [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), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/plot/index.ts#:~:text=Render), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/plot/index.ts#:~:text=Render)+ 2 more | - | -| | [embeddable.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/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) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context), [embeddable.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.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), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/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), [neq.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context) | - | | | [setup_expressions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/setup_expressions.ts#:~:text=getFunction) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/application.tsx#:~:text=getFunctions), [functions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.test.ts#:~:text=getFunctions) | - | | | [setup_expressions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/setup_expressions.ts#:~:text=getTypes), [application.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/application.tsx#:~:text=getTypes), [functions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getTypes) | - | -| | [embeddable.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/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) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context), [embeddable.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.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), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/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), [neq.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context) | - | +| | [home.component.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/components/home/home.component.tsx#:~:text=KibanaPageTemplate), [home.component.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/components/home/home.component.tsx#:~:text=KibanaPageTemplate), [home.component.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/components/home/home.component.tsx#:~:text=KibanaPageTemplate) | - | @@ -85,6 +87,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplateProps), [compliance_dashboard.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx#:~:text=KibanaPageTemplateProps), [compliance_dashboard.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx#:~:text=KibanaPageTemplateProps)+ 2 more | - | +| | [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplate), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplate), [csp_page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx#:~:text=KibanaPageTemplate) | - | | | [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cloud_security_posture/public/application/app.tsx#:~:text=RedirectAppLinks) | - | @@ -117,7 +121,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [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) | 8.8.0 | | | [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [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)+ 1 more | 8.8.0 | | | [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObjectClass) | 8.8.0 | -| | [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) | 8.8.0 | | | [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) | 8.8.0 | | | [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) | 8.8.0 | @@ -131,9 +134,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IndexPatternsContract), [create_search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/create_search_source.ts#:~:text=IndexPatternsContract), [create_search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/create_search_source.ts#:~:text=IndexPatternsContract), [search_source_service.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source_service.ts#:~:text=IndexPatternsContract), [search_source_service.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source_service.ts#:~:text=IndexPatternsContract), [esaggs_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts#:~:text=IndexPatternsContract), [esaggs_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts#:~:text=IndexPatternsContract), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/search/types.ts#:~:text=IndexPatternsContract), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/search/types.ts#:~:text=IndexPatternsContract), [create_search_source.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/create_search_source.test.ts#:~:text=IndexPatternsContract)+ 19 more | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IndexPatternsService), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/server/index.ts#:~:text=IndexPatternsService), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/server/index.ts#:~:text=IndexPatternsService), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/server/index.ts#:~:text=IndexPatternsService), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/index.ts#:~:text=IndexPatternsService) | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IndexPattern), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/types.ts#:~:text=IndexPattern), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/types.ts#:~:text=IndexPattern), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/types.ts#:~:text=IndexPattern), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/types.ts#:~:text=IndexPattern), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IndexPattern), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IndexPattern), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IndexPattern), [tabify_docs.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/tabify/tabify_docs.ts#:~:text=IndexPattern), [tabify_docs.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/tabify/tabify_docs.ts#:~:text=IndexPattern)+ 89 more | - | -| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IFieldType), [date_histogram.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/aggs/buckets/date_histogram.ts#:~:text=IFieldType), [date_histogram.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/aggs/buckets/date_histogram.ts#:~:text=IFieldType), [generate_filters.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts#:~:text=IFieldType), [generate_filters.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts#:~:text=IFieldType), [generate_filters.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts#:~:text=IFieldType), [generate_filters.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType)+ 24 more | 8.2 | +| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IFieldType), [date_histogram.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/aggs/buckets/date_histogram.ts#:~:text=IFieldType), [date_histogram.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/aggs/buckets/date_histogram.ts#:~:text=IFieldType), [generate_filters.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts#:~:text=IFieldType), [generate_filters.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts#:~:text=IFieldType), [generate_filters.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts#:~:text=IFieldType), [generate_filters.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts#:~:text=IFieldType), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/index.ts#:~:text=IFieldType), [create_filters_from_range_select.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/actions/filters/create_filters_from_range_select.ts#:~:text=IFieldType), [create_filters_from_range_select.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/actions/filters/create_filters_from_range_select.ts#:~:text=IFieldType)+ 6 more | 8.2 | | | [field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/aggs/param_types/field.ts#:~:text=IndexPatternField), [field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/aggs/param_types/field.ts#:~:text=IndexPatternField), [field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/aggs/param_types/field.ts#:~:text=IndexPatternField), [field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/aggs/param_types/field.ts#:~:text=IndexPatternField), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IndexPatternField), [kibana_context_type.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/expressions/kibana_context_type.ts#:~:text=IndexPatternField), [kibana_context_type.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/expressions/kibana_context_type.ts#:~:text=IndexPatternField), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IndexPatternField), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IndexPatternField), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IndexPatternField)+ 16 more | - | -| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IIndexPattern), [get_time.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/query/timefilter/get_time.ts#:~:text=IIndexPattern), [get_time.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/query/timefilter/get_time.ts#:~:text=IIndexPattern), [get_time.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/query/timefilter/get_time.ts#:~:text=IIndexPattern), [get_time.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/query/timefilter/get_time.ts#:~:text=IIndexPattern), [normalize_sort_request.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/normalize_sort_request.ts#:~:text=IIndexPattern), [normalize_sort_request.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/normalize_sort_request.ts#:~:text=IIndexPattern), [normalize_sort_request.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/normalize_sort_request.ts#:~:text=IIndexPattern), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IIndexPattern), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IIndexPattern)+ 36 more | - | +| | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IIndexPattern), [get_time.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/query/timefilter/get_time.ts#:~:text=IIndexPattern), [get_time.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/query/timefilter/get_time.ts#:~:text=IIndexPattern), [get_time.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/query/timefilter/get_time.ts#:~:text=IIndexPattern), [get_time.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/query/timefilter/get_time.ts#:~:text=IIndexPattern), [normalize_sort_request.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/normalize_sort_request.ts#:~:text=IIndexPattern), [normalize_sort_request.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/normalize_sort_request.ts#:~:text=IIndexPattern), [normalize_sort_request.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/normalize_sort_request.ts#:~:text=IIndexPattern), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IIndexPattern), [search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source.ts#:~:text=IIndexPattern)+ 23 more | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IndexPatternAttributes), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/index.ts#:~:text=IndexPatternAttributes), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/server/index.ts#:~:text=IndexPatternAttributes) | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IndexPatternsContract), [create_search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/create_search_source.ts#:~:text=IndexPatternsContract), [create_search_source.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/create_search_source.ts#:~:text=IndexPatternsContract), [search_source_service.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source_service.ts#:~:text=IndexPatternsContract), [search_source_service.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/search_source_service.ts#:~:text=IndexPatternsContract), [esaggs_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts#:~:text=IndexPatternsContract), [esaggs_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts#:~:text=IndexPatternsContract), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/search/types.ts#:~:text=IndexPatternsContract), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/search/types.ts#:~:text=IndexPatternsContract), [create_search_source.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/search/search_source/create_search_source.test.ts#:~:text=IndexPatternsContract)+ 19 more | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/common/index.ts#:~:text=IndexPatternsService), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/server/index.ts#:~:text=IndexPatternsService), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/server/index.ts#:~:text=IndexPatternsService), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/server/index.ts#:~:text=IndexPatternsService), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data/public/index.ts#:~:text=IndexPatternsService) | - | @@ -194,9 +197,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IndexPattern), [data_view_field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.test.ts#:~:text=IndexPattern), [data_view_field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.test.ts#:~:text=IndexPattern), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/public/index.ts#:~:text=IndexPattern), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPattern), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPattern), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPattern), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPattern) | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IndexPatternField), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/public/index.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view_field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.test.ts#:~:text=IndexPatternField), [data_view_field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.test.ts#:~:text=IndexPatternField)+ 2 more | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IIndexPattern), [data_view.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.ts#:~:text=IIndexPattern), [data_view.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.ts#:~:text=IIndexPattern) | - | -| | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 13 more | 8.2 | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 7 more | 8.2 | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IndexPatternAttributes) | - | -| | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 13 more | 8.2 | +| | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 7 more | 8.2 | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IIndexPattern), [data_view.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.ts#:~:text=IIndexPattern), [data_view.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.ts#:~:text=IIndexPattern) | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IndexPatternAttributes) | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IndexPatternsContract), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/public/index.ts#:~:text=IndexPatternsContract) | - | @@ -208,7 +211,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=removeScriptedField) | - | | | [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getNonScriptedFields) | - | | | [data_view.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.ts#:~:text=getScriptedFields), [data_view.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.ts#:~:text=getScriptedFields), [data_views.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_views.ts#:~:text=getScriptedFields), [register_index_pattern_usage_collection.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/server/register_index_pattern_usage_collection.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields) | - | -| | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 13 more | 8.2 | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IndexPatternAttributes) | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IndexPatternField), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/public/index.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPatternField), [data_view_field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.test.ts#:~:text=IndexPatternField), [data_view_field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.test.ts#:~:text=IndexPatternField)+ 2 more | - | | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/index.ts#:~:text=IndexPattern), [data_view_field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.test.ts#:~:text=IndexPattern), [data_view_field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.test.ts#:~:text=IndexPattern), [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/public/index.ts#:~:text=IndexPattern), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPattern), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPattern), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPattern), [data_view.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=IndexPattern) | - | @@ -263,6 +265,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx#:~:text=KibanaPageTemplateProps), [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx#:~:text=KibanaPageTemplateProps) | - | +| | [version_mismatch_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/shared/version_mismatch/version_mismatch_page.tsx#:~:text=KibanaPageTemplate), [version_mismatch_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/shared/version_mismatch/version_mismatch_page.tsx#:~:text=KibanaPageTemplate), [version_mismatch_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/shared/version_mismatch/version_mismatch_page.tsx#:~:text=KibanaPageTemplate), [error_connecting.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/error_connecting/error_connecting.tsx#:~:text=KibanaPageTemplate), [error_connecting.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/error_connecting/error_connecting.tsx#:~:text=KibanaPageTemplate), [error_connecting.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/error_connecting/error_connecting.tsx#:~:text=KibanaPageTemplate), [product_selector.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx#:~:text=KibanaPageTemplate), [product_selector.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx#:~:text=KibanaPageTemplate), [product_selector.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx#:~:text=KibanaPageTemplate), [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx#:~:text=KibanaPageTemplate)+ 11 more | - | | | [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) | - | @@ -304,7 +308,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [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) | - | | | [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) | - | | | [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) | 8.8.0 | -| | [listing_route.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/apps/listing_route.tsx#:~:text=settings), [listing_route.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/apps/listing_route.tsx#:~:text=settings) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -332,6 +335,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | ---------------|-----------|-----------| | | [use_kibana_index_patterns.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.ts#:~:text=indexPatterns) | - | | | [kibana_framework_adapter.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts#:~:text=indexPatternsServiceFactory) | - | +| | [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/page_template.tsx#:~:text=KibanaPageTemplateProps), [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/page_template.tsx#:~:text=KibanaPageTemplateProps), [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/page_template.tsx#:~:text=KibanaPageTemplateProps), [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/metrics/page_template.tsx#:~:text=KibanaPageTemplateProps) | - | @@ -349,6 +353,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=KibanaPageTemplateProps), [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=KibanaPageTemplateProps) | - | +| | [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=KibanaPageTemplate), [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=KibanaPageTemplate), [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=KibanaPageTemplate) | - | | | [add_data.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=RedirectAppLinks), [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=RedirectAppLinks), [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=RedirectAppLinks), [overview.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/components/overview/overview.tsx#:~:text=RedirectAppLinks)+ 1 more | - | | | [application.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_overview/public/application.tsx#:~:text=appBasePath) | 8.8.0 | @@ -395,6 +401,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [management_app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/components/management_app/management_app.tsx#:~:text=KibanaPageTemplateProps), [management_app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/components/management_app/management_app.tsx#:~:text=KibanaPageTemplateProps) | - | +| | [management_app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/components/management_app/management_app.tsx#:~:text=KibanaPageTemplate), [management_app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/components/management_app/management_app.tsx#:~:text=KibanaPageTemplate), [management_app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/components/management_app/management_app.tsx#:~:text=KibanaPageTemplate) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/application.tsx#:~:text=appBasePath) | 8.8.0 | @@ -419,8 +427,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [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=flattenHit), [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=flattenHit) | - | | | [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=flattenHit), [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=flattenHit) | - | | | [kibana_server_services.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/server/kibana_server_services.ts#:~:text=indexPatternsServiceFactory), [indexing_routes.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/server/data_indexing/indexing_routes.ts#:~:text=indexPatternsServiceFactory) | - | -| | [map_container.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx#:~:text=ExitFullScreenButton), [map_container.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx#:~:text=ExitFullScreenButton) | - | -| | [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) | 8.8.0 | | | [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) | 8.8.0 | | | [saved_object_migrations.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/server/saved_objects/saved_object_migrations.ts#:~:text=warning) | 8.8.0 | @@ -439,6 +445,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=KibanaPageTemplate), [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=KibanaPageTemplate), [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=KibanaPageTemplate) | - | | | [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=RedirectAppLinks), [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=RedirectAppLinks), [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks) | - | | | [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) | 8.8.0 | | | [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) | 8.8.0 | @@ -456,9 +463,6 @@ so TS and code-reference navigation might not highlight them. | | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [use_derived_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx#:~:text=IIndexPattern), [use_derived_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx#:~:text=IIndexPattern), [with_kuery_autocompletion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [with_kuery_autocompletion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx#:~:text=IIndexPattern), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/lib/kuery.ts#:~:text=IIndexPattern), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/lib/kuery.ts#:~:text=IIndexPattern) | - | -| | [use_derived_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx#:~:text=indexPatterns), [use_derived_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx#:~:text=indexPatterns) | - | -| | [use_derived_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx#:~:text=IIndexPattern), [use_derived_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx#:~:text=IIndexPattern), [with_kuery_autocompletion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [with_kuery_autocompletion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/components/kuery_bar/with_kuery_autocompletion.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx#:~:text=IIndexPattern), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/components/kuery_bar/index.tsx#:~:text=IIndexPattern), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/lib/kuery.ts#:~:text=IIndexPattern), [kuery.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/lib/kuery.ts#:~:text=IIndexPattern), [use_derived_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx#:~:text=IIndexPattern), [use_derived_index_pattern.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/alerts/components/param_details_form/use_derived_index_pattern.tsx#:~:text=IIndexPattern)+ 6 more | - | | | [legacy_shims.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/legacy_shims.ts#:~:text=injectedMetadata) | 8.8.0 | | | [bulk_uploader.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.ts#:~:text=process) | 8.8.0 | @@ -468,10 +472,20 @@ so TS and code-reference navigation might not highlight them. | | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx#:~:text=KibanaPageTemplateProps), [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx#:~:text=KibanaPageTemplateProps), [no_data_config.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/utils/no_data_config.ts#:~:text=KibanaPageTemplateProps), [no_data_config.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/utils/no_data_config.ts#:~:text=KibanaPageTemplateProps) | - | +| | [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx#:~:text=KibanaPageTemplate), [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx#:~:text=KibanaPageTemplate), [page_template.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx#:~:text=KibanaPageTemplate) | - | | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks) | - | +## osquery + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [empty_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/osquery/public/components/empty_state.tsx#:~:text=KibanaPageTemplate), [empty_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/osquery/public/components/empty_state.tsx#:~:text=KibanaPageTemplate) | - | + + + ## painlessLab | Deprecated API | Reference location(s) | Remove By | @@ -582,6 +596,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [middleware.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=indexPatterns), [dependencies_start_mock.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts#:~:text=indexPatterns) | - | +| | [use_primary_navigation.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_primary_navigation.tsx#:~:text=KibanaPageTemplateProps), [use_primary_navigation.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_primary_navigation.tsx#:~:text=KibanaPageTemplateProps), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=KibanaPageTemplateProps), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=KibanaPageTemplateProps) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=KibanaPageTemplate), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=KibanaPageTemplate) | - | | | [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 | 8.8.0 | | | [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 | 8.8.0 | | | [request_context_factory.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/request_context_factory.ts#:~:text=authc), [request_context_factory.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/request_context_factory.ts#:~:text=authc), [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), [open_close_signals_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts#:~:text=authc), [preview_rules_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/preview_rules_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) | - | @@ -602,6 +618,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [space_selector.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/public/space_selector/space_selector.tsx#:~:text=KibanaPageTemplate), [space_selector.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/public/space_selector/space_selector.tsx#:~:text=KibanaPageTemplate), [space_selector.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/public/space_selector/space_selector.tsx#:~:text=KibanaPageTemplate) | - | | | [spaces_management_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/public/management/spaces_management_app.tsx#:~:text=RedirectAppLinks), [spaces_management_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/public/management/spaces_management_app.tsx#:~:text=RedirectAppLinks), [spaces_management_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/public/management/spaces_management_app.tsx#:~:text=RedirectAppLinks) | - | | | [on_post_auth_interceptor.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts#:~:text=getKibanaFeatures), [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=getKibanaFeatures), [on_post_auth_interceptor.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts#:~:text=getKibanaFeatures) | 8.8.0 | | | [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) | 8.8.0 | @@ -614,18 +631,25 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=IIndexPattern), [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=IIndexPattern) | - | | | [fetch_search_source_query.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/server/alert_types/es_query/lib/fetch_search_source_query.ts#:~:text=fetch), [alert_type.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/server/alert_types/es_query/alert_type.test.ts#:~:text=fetch), [alert_type.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/server/alert_types/es_query/alert_type.test.ts#:~:text=fetch) | 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=indexPatterns), [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=indexPatterns), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=indexPatterns), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=indexPatterns), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx#:~:text=indexPatterns) | - | | | [expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/threshold/expression.tsx#:~:text=fieldFormats) | - | | | [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=Filter), [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=Filter), [search_source_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/search_source_expression.tsx#:~:text=Filter), [search_source_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/search_source_expression.tsx#:~:text=Filter) | 8.1 | | | [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=Filter), [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=Filter), [search_source_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/search_source_expression.tsx#:~:text=Filter), [search_source_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/search_source_expression.tsx#:~:text=Filter) | 8.1 | -| | [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=IIndexPattern), [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=IIndexPattern), [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=IIndexPattern), [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=IIndexPattern) | - | | | [fetch_search_source_query.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/server/alert_types/es_query/lib/fetch_search_source_query.ts#:~:text=fetch), [alert_type.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/server/alert_types/es_query/alert_type.test.ts#:~:text=fetch), [alert_type.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/server/alert_types/es_query/alert_type.test.ts#:~:text=fetch) | 8.1 | | | [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=Filter), [read_only_filter_items.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/read_only_filter_items.tsx#:~:text=Filter), [search_source_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/search_source_expression.tsx#:~:text=Filter), [search_source_expression.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/stack_alerts/public/alert_types/es_query/expression/search_source_expression.tsx#:~:text=Filter) | 8.1 | +## synthetics + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [use_no_data_config.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/synthetics/public/apps/use_no_data_config.ts#:~:text=KibanaPageTemplateProps), [use_no_data_config.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/synthetics/public/apps/use_no_data_config.ts#:~:text=KibanaPageTemplateProps) | - | +| | [alert_messages.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/synthetics/public/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/synthetics/public/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/synthetics/public/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/synthetics/public/apps/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/synthetics/public/apps/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/synthetics/public/apps/uptime_app.tsx#:~:text=RedirectAppLinks) | - | + + + ## transform | Deprecated API | Reference location(s) | Remove By | @@ -638,20 +662,22 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=IndexPatternsContract), [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=IndexPatternsContract), [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract)+ 2 more | - | -| | [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_bar_top_row.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx#:~:text=IIndexPattern), [query_bar_top_row.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx#:~:text=IIndexPattern), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IIndexPattern), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IIndexPattern), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IIndexPattern)+ 18 more | - | -| | [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType)+ 8 more | 8.2 | +| | [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract) | - | +| | [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IIndexPattern), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IIndexPattern), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IIndexPattern), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IIndexPattern), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IIndexPattern), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IIndexPattern), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IIndexPattern) | - | +| | [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IFieldType), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType)+ 25 more | 8.2 | | | [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=indexPatterns) | - | | | [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=esFilters), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=esFilters), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=esFilters) | 8.1 | +| | [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [value.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts#:~:text=KueryNode)+ 2 more | 8.1 | | | [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=Filter)+ 10 more | 8.1 | | | [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS) | 8.1 | | | [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated), [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated), [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated), [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated), [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated) | 8.1 | | | [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=Filter)+ 10 more | 8.1 | -| | [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType)+ 26 more | 8.2 | -| | [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_string_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=IIndexPattern), [query_bar_top_row.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx#:~:text=IIndexPattern), [query_bar_top_row.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx#:~:text=IIndexPattern), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IIndexPattern), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IIndexPattern), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IIndexPattern)+ 46 more | - | -| | [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=IndexPatternsContract), [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=IndexPatternsContract), [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract)+ 2 more | - | -| | [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType)+ 8 more | 8.2 | +| | [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [value.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts#:~:text=KueryNode)+ 2 more | 8.1 | +| | [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IFieldType), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType)+ 60 more | 8.2 | +| | [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IIndexPattern), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IIndexPattern), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IIndexPattern), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IIndexPattern), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IIndexPattern), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IIndexPattern), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IIndexPattern), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IIndexPattern), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IIndexPattern), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IIndexPattern)+ 4 more | - | +| | [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract), [create_index_pattern_select.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/index_pattern_select/create_index_pattern_select.tsx#:~:text=IndexPatternsContract) | - | | | [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=Filter)+ 10 more | 8.1 | +| | [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [value.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts#:~:text=KueryNode)+ 2 more | 8.1 | @@ -664,18 +690,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ -## uptime - -| 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=IndexPattern), [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern) | - | -| | [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=indexPatterns) | - | -| | [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern) | - | -| | [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [update_kuery_string.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/hooks/update_kuery_string.ts#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern), [uptime_index_pattern_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/contexts/uptime_index_pattern_context.tsx#:~:text=IndexPattern) | - | -| | [alert_messages.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/apps/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/apps/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/uptime/public/apps/uptime_app.tsx#:~:text=RedirectAppLinks) | - | - - - ## urlDrilldown | Deprecated API | Reference location(s) | Remove By | @@ -693,6 +707,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern), [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern) | - | | | [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern), [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern) | - | | | [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_filters.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern), [selected_wildcards.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx#:~:text=IndexPattern) | - | +| | [rum_home.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/rum_home.tsx#:~:text=KibanaPageTemplateProps), [rum_home.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/components/app/rum_dashboard/rum_home.tsx#:~:text=KibanaPageTemplateProps) | - | | | [ux_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks), [ux_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks), [ux_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks) | - | @@ -782,7 +797,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | ---------------|-----------|-----------| | | [get_table_columns.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx#:~:text=RedirectAppLinks), [get_table_columns.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx#:~:text=RedirectAppLinks), [get_table_columns.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx#:~:text=RedirectAppLinks) | - | | | [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject) | 8.8.0 | -| | [visualize_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=settings), [visualize_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=settings) | 8.8.0 | | | [visualize_top_nav.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_top_nav.tsx#:~:text=onAppLeave), [visualize_editor_common.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_editor_common.tsx#:~:text=onAppLeave), [app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/app.tsx#:~:text=onAppLeave), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/index.tsx#:~:text=onAppLeave) | 8.8.0 | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 43a36e5f1cf9d..aab61180e9dc8 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team summary: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- @@ -25,9 +25,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| dataViews | | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 13 more | 8.2 | -| dataViews | | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 47 more | 8.2 | -| dataViews | | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 13 more | 8.2 | +| dataViews | | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 7 more | 8.2 | +| dataViews | | [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/utils.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [data_view_field.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/data_view_field.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [field_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/fields/field_list.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/data_views/common/types.ts#:~:text=IFieldType)+ 23 more | 8.2 | | dataEnhanced | | [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) | 8.1 | | dataEnhanced | | [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 | | dataEnhanced | | [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) | 8.1 | @@ -49,7 +48,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | discover | | [anchor.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/context/services/anchor.ts#:~:text=fetch), [fetch_hits_in_interval.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/context/utils/fetch_hits_in_interval.ts#:~:text=fetch) | 8.1 | | discover | | [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter), [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter) | 8.1 | | discover | | [on_save_search.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal), [on_save_search.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal), [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) | 8.8.0 | -| graph | | [listing_route.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/apps/listing_route.tsx#:~:text=settings), [listing_route.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/apps/listing_route.tsx#:~:text=settings) | 8.8.0 | | graph | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -69,7 +67,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| maps | | [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) | 8.8.0 | | maps | | [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) | 8.8.0 | | maps | | [saved_object_migrations.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/server/saved_objects/saved_object_migrations.ts#:~:text=warning) | 8.8.0 | | mapsEms | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/maps_ems/server/index.ts#:~:text=license%24) | 8.8.0 | @@ -99,7 +96,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | dashboard | | [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_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) | 8.8.0 | | dashboard | | [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [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)+ 1 more | 8.8.0 | | dashboard | | [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObjectClass) | 8.8.0 | -| dashboard | | [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) | 8.8.0 | | dashboard | | [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) | 8.8.0 | | dashboard | | [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) | 8.8.0 | @@ -208,15 +204,17 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| unifiedSearch | | [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType)+ 8 more | 8.2 | +| unifiedSearch | | [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IFieldType), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType)+ 25 more | 8.2 | | unifiedSearch | | [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=esFilters), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=esFilters), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=esFilters) | 8.1 | +| unifiedSearch | | [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [value.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts#:~:text=KueryNode)+ 2 more | 8.1 | | unifiedSearch | | [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=Filter)+ 10 more | 8.1 | | unifiedSearch | | [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=FILTERS) | 8.1 | | unifiedSearch | | [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated), [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated), [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated), [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated), [filter_editor_utils.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.test.ts#:~:text=toggleFilterNegated) | 8.1 | | unifiedSearch | | [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=Filter)+ 10 more | 8.1 | -| unifiedSearch | | [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType)+ 26 more | 8.2 | -| unifiedSearch | | [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [filter_editor_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_editor_utils.ts#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [phrase_suggestor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/phrase_suggestor.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [range_value_input.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/range_value_input.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/index.tsx#:~:text=IFieldType)+ 8 more | 8.2 | +| unifiedSearch | | [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [value.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts#:~:text=KueryNode)+ 2 more | 8.1 | +| unifiedSearch | | [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [field.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx#:~:text=IFieldType), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IFieldType), [value.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [query_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType), [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=IFieldType)+ 60 more | 8.2 | | unifiedSearch | | [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [use_filter_manager.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/search_bar/lib/use_filter_manager.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [get_stub_filter.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/test_helpers/get_stub_filter.ts#:~:text=Filter), [filter_label.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx#:~:text=Filter)+ 10 more | 8.1 | +| unifiedSearch | | [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [conjunction.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/conjunction.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [field.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [operator.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/operator.test.ts#:~:text=KueryNode), [value.test.ts](https://github.com/elastic/kibana/tree/master/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.test.ts#:~:text=KueryNode)+ 2 more | 8.1 | @@ -227,7 +225,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | lens | | [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject) | 8.8.0 | | lens | | [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), [visualize_top_nav.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_top_nav.tsx#:~:text=onAppLeave), [visualize_editor_common.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_editor_common.tsx#:~:text=onAppLeave), [app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/app.tsx#:~:text=onAppLeave), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/index.tsx#:~:text=onAppLeave) | 8.8.0 | | lens | | [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) | 8.8.0 | -| visualizations | | [visualize_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=settings), [visualize_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=settings) | 8.8.0 | | management | | [application.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/application.tsx#:~:text=appBasePath) | 8.8.0 | | visTypeVega | | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/plugin.ts#:~:text=injectedMetadata) | 8.8.0 | | visTypeVega | | [search_api.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/search_api.ts#:~:text=injectedMetadata), [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/plugin.ts#:~:text=injectedMetadata) | 8.8.0 | \ No newline at end of file diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index fefa3a0c3391c..21a175173b3f6 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github summary: API docs for the devTools plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] 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. --- diff --git a/api_docs/discover.devdocs.json b/api_docs/discover.devdocs.json index 4f5f940b63275..e4d6e9e749105 100644 --- a/api_docs/discover.devdocs.json +++ b/api_docs/discover.devdocs.json @@ -1222,20 +1222,6 @@ "interfaces": [], "enums": [], "misc": [ - { - "parentPluginId": "discover", - "id": "def-common.APP_ID", - "type": "string", - "tags": [], - "label": "APP_ID", - "description": [], - "signature": [ - "\"discover\"" - ], - "path": "src/plugins/discover/common/index.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "discover", "id": "def-common.CONTEXT_DEFAULT_SIZE_SETTING", diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 43970283258bf..960d60c26777d 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github summary: API docs for the discover plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] 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. --- @@ -18,7 +18,7 @@ Contact [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-disco | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 77 | 0 | 61 | 7 | +| 76 | 0 | 60 | 7 | ## Client diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 76d0262f5cfe8..e8c18b01c1cfc 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the discoverEnhanced plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] 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. --- diff --git a/api_docs/elastic_analytics.mdx b/api_docs/elastic_analytics.mdx deleted file mode 100644 index 2d00c52f5e6a0..0000000000000 --- a/api_docs/elastic_analytics.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: kibElasticAnalyticsPluginApi -slug: /kibana-dev-docs/api/elastic-analytics -title: "@elastic/analytics" -image: https://source.unsplash.com/400x175/?github -summary: API docs for the @elastic/analytics plugin -date: 2022-04-05 -tags: ['contributor', 'dev', 'apidocs', 'kibana', '@elastic/analytics'] -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 elasticAnalyticsObj from './elastic_analytics.devdocs.json'; - - - -Contact [Owner missing] for questions regarding this plugin. - -**Code health stats** - -| Public API count | Any count | Items lacking comments | Missing exports | -|-------------------|-----------|------------------------|-----------------| -| 82 | 1 | 11 | 0 | - -## Server - -### Functions - - -### Interfaces - - -### Enums - - -### Consts, variables and types - - diff --git a/api_docs/elastic_apm_synthtrace.devdocs.json b/api_docs/elastic_apm_synthtrace.devdocs.json index 0e802d55936c3..aa59d75c2508a 100644 --- a/api_docs/elastic_apm_synthtrace.devdocs.json +++ b/api_docs/elastic_apm_synthtrace.devdocs.json @@ -64,20 +64,36 @@ { "parentPluginId": "@elastic/apm-synthtrace", "id": "def-server.ApmSynthtraceEsClient.Unnamed.$3", - "type": "boolean", + "type": "Object", "tags": [], - "label": "forceDataStreams", + "label": "options", "description": [], "signature": [ - "boolean" + "ApmSynthtraceEsClientOptions", + " | undefined" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] }, + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.ApmSynthtraceEsClient.runningVersion", + "type": "Function", + "tags": [], + "label": "runningVersion", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "@elastic/apm-synthtrace", "id": "def-server.ApmSynthtraceEsClient.clean", @@ -123,6 +139,53 @@ ], "returnComment": [] }, + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.ApmSynthtraceEsClient.registerGcpRepository", + "type": "Function", + "tags": [], + "label": "registerGcpRepository", + "description": [], + "signature": [ + "(connectionString: string) => Promise" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.ApmSynthtraceEsClient.registerGcpRepository.$1", + "type": "string", + "tags": [], + "label": "connectionString", + "description": [], + "signature": [ + "string" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.ApmSynthtraceEsClient.refresh", + "type": "Function", + "tags": [], + "label": "refresh", + "description": [], + "signature": [ + "() => Promise<", + "ShardsOperationResponseBase", + ">" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "@elastic/apm-synthtrace", "id": "def-server.ApmSynthtraceEsClient.index", @@ -131,27 +194,43 @@ "label": "index", "description": [], "signature": [ - "(events: ", + "(events: ", { "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - " | ", + " | ", { "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - "[], options?: ", + "[], options?: ", "StreamToBulkOptions", - " | undefined) => Promise<", - "ShardsOperationResponseBase", - ">" + "<", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, + "> | undefined, streamProcessor?: ", + "StreamProcessor", + "<", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, + "> | undefined) => Promise" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", "deprecated": false, @@ -168,18 +247,18 @@ "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - " | ", + " | ", { "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - "[]" + "[]" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", "deprecated": false, @@ -194,7 +273,38 @@ "description": [], "signature": [ "StreamToBulkOptions", - " | undefined" + "<", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, + "> | undefined" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.ApmSynthtraceEsClient.index.$3", + "type": "Object", + "tags": [], + "label": "streamProcessor", + "description": [], + "signature": [ + "StreamProcessor", + "<", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, + "> | undefined" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts", "deprecated": false, @@ -208,34 +318,35 @@ }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable", + "id": "def-server.EntityArrayIterable", "type": "Class", "tags": [], - "label": "SpanArrayIterable", + "label": "EntityArrayIterable", "description": [], "signature": [ { "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanArrayIterable", - "text": "SpanArrayIterable" + "section": "def-server.EntityArrayIterable", + "text": "EntityArrayIterable" }, - " implements ", + " implements ", { "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" - } + "section": "def-server.EntityIterable", + "text": "EntityIterable" + }, + "" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [ { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable.Unnamed", + "id": "def-server.EntityArrayIterable.Unnamed", "type": "Function", "tags": [], "label": "Constructor", @@ -243,21 +354,20 @@ "signature": [ "any" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [ { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable.Unnamed.$1", + "id": "def-server.EntityArrayIterable.Unnamed.$1", "type": "Array", "tags": [], "label": "fields", "description": [], "signature": [ - "ApmFields", - "[]" + "TFields[]" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "isRequired": true } @@ -266,7 +376,7 @@ }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable.order", + "id": "def-server.EntityArrayIterable.order", "type": "Function", "tags": [], "label": "order", @@ -274,51 +384,62 @@ "signature": [ "() => \"asc\" | \"desc\"" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable.Symbol.asyncIterator", + "id": "def-server.EntityArrayIterable.ratePerMinute", + "type": "Function", + "tags": [], + "label": "ratePerMinute", + "description": [], + "signature": [ + "() => number" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.EntityArrayIterable.Symbol.asyncIterator", "type": "Function", "tags": [], "label": "[Symbol.asyncIterator]", "description": [], "signature": [ - "() => AsyncIterator<", - "ApmFields", - ", any, undefined>" + "() => AsyncIterator" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable.Symbol.iterator", + "id": "def-server.EntityArrayIterable.Symbol.iterator", "type": "Function", "tags": [], "label": "[Symbol.iterator]", "description": [], "signature": [ - "() => Iterator<", - "ApmFields", - ", any, undefined>" + "() => Iterator" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable.concat", + "id": "def-server.EntityArrayIterable.merge", "type": "Function", "tags": [], - "label": "concat", + "label": "merge", "description": [], "signature": [ "(...iterables: ", @@ -326,18 +447,19 @@ "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - "[]) => ", - "SpanGeneratorsUnion" + "[]) => ", + "EntityStreams", + "" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [ { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable.concat.$1", + "id": "def-server.EntityArrayIterable.merge.$1", "type": "Array", "tags": [], "label": "iterables", @@ -347,12 +469,12 @@ "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - "[]" + "[]" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "isRequired": true } @@ -361,17 +483,15 @@ }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanArrayIterable.toArray", + "id": "def-server.EntityArrayIterable.toArray", "type": "Function", "tags": [], "label": "toArray", "description": [], "signature": [ - "() => ", - "ApmFields", - "[]" + "() => TFields[]" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [], "returnComment": [] @@ -569,57 +689,27 @@ }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.Fields", - "type": "Interface", - "tags": [], - "label": "Fields", - "description": [], - "path": "packages/elastic-apm-synthtrace/src/lib/entity.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.Fields.timestamp", - "type": "number", - "tags": [], - "label": "'@timestamp'", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "packages/elastic-apm-synthtrace/src/lib/entity.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanIterable", + "id": "def-server.EntityIterable", "type": "Interface", "tags": [], - "label": "SpanIterable", + "label": "EntityIterable", "description": [], "signature": [ { "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - " extends Iterable<", - "ApmFields", - ">,AsyncIterable<", - "ApmFields", - ">" + " extends Iterable,AsyncIterable" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [ { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanIterable.order", + "id": "def-server.EntityIterable.order", "type": "Function", "tags": [], "label": "order", @@ -627,34 +717,55 @@ "signature": [ "() => \"asc\" | \"desc\"" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanIterable.toArray", + "id": "def-server.EntityIterable.ratePerMinute", + "type": "Function", + "tags": [], + "label": "ratePerMinute", + "description": [], + "signature": [ + "() => number" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.EntityIterable.toArray", "type": "Function", "tags": [], "label": "toArray", "description": [], "signature": [ "() => ", - "ApmFields", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, "[]" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanIterable.concat", + "id": "def-server.EntityIterable.merge", "type": "Function", "tags": [], - "label": "concat", + "label": "merge", "description": [], "signature": [ "(...iterables: ", @@ -662,18 +773,19 @@ "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - "[]) => ", - "SpanGeneratorsUnion" + "[]) => ", + "EntityStreams", + "" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "children": [ { "parentPluginId": "@elastic/apm-synthtrace", - "id": "def-server.SpanIterable.concat.$1", + "id": "def-server.EntityIterable.merge.$1", "type": "Array", "tags": [], "label": "iterables", @@ -683,12 +795,12 @@ "pluginId": "@elastic/apm-synthtrace", "scope": "server", "docId": "kibElasticApmSynthtracePluginApi", - "section": "def-server.SpanIterable", - "text": "SpanIterable" + "section": "def-server.EntityIterable", + "text": "EntityIterable" }, - "[]" + "[]" ], - "path": "packages/elastic-apm-synthtrace/src/lib/span_iterable.ts", + "path": "packages/elastic-apm-synthtrace/src/lib/entity_iterable.ts", "deprecated": false, "isRequired": true } @@ -697,6 +809,32 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.Fields", + "type": "Interface", + "tags": [], + "label": "Fields", + "description": [], + "path": "packages/elastic-apm-synthtrace/src/lib/entity.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.Fields.timestamp", + "type": "number", + "tags": [], + "label": "'@timestamp'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/entity.ts", + "deprecated": false + } + ], + "initialIsOpen": false } ], "enums": [ @@ -712,7 +850,39 @@ "initialIsOpen": false } ], - "misc": [], + "misc": [ + { + "parentPluginId": "@elastic/apm-synthtrace", + "id": "def-server.ApmFields", + "type": "Type", + "tags": [], + "label": "ApmFields", + "description": [], + "signature": [ + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.Fields", + "text": "Fields" + }, + " & Partial<{ 'timestamp.us'?: number | undefined; 'agent.name': string; 'agent.version': string; 'container.id': string; 'ecs.version': string; 'event.outcome': string; 'event.ingested': number; 'error.id': string; 'error.exception': ", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmException", + "text": "ApmException" + }, + "[]; 'error.grouping_name': string; 'error.grouping_key': string; 'host.name': string; 'kubernetes.pod.uid': string; 'metricset.name': string; observer: ", + "Observer", + "; 'parent.id': string; 'processor.event': string; 'processor.name': string; 'trace.id': string; 'transaction.name': string; 'transaction.type': string; 'transaction.id': string; 'transaction.duration.us': number; 'transaction.duration.histogram': { values: number[]; counts: number[]; }; 'transaction.sampled': true; 'service.name': string; 'service.version': string; 'service.environment': string; 'service.node.name': string; 'service.runtime.name': string; 'service.runtime.version': string; 'service.framework.name': string; 'span.id': string; 'span.name': string; 'span.type': string; 'span.subtype': string; 'span.duration.us': number; 'span.destination.service.name': string; 'span.destination.service.resource': string; 'span.destination.service.type': string; 'span.destination.service.response_time.sum.us': number; 'span.destination.service.response_time.count': number; 'span.self_time.count': number; 'span.self_time.sum.us': number; 'cloud.provider': string; 'cloud.project.name': string; 'cloud.service.name': string; 'cloud.availability_zone': string; 'cloud.machine.type': string; 'cloud.region': string; 'host.os.platform': string; 'faas.id': string; 'faas.coldstart': boolean; 'faas.execution': string; 'faas.trigger.type': string; 'faas.trigger.request_id': string; }> & Partial<{ 'system.process.memory.size': number; 'system.memory.actual.free': number; 'system.memory.total': number; 'system.cpu.total.norm.pct': number; 'system.process.memory.rss.bytes': number; 'system.process.cpu.total.norm.pct': number; 'jvm.memory.heap.used': number; 'jvm.memory.non_heap.used': number; 'jvm.thread.count': number; }>" + ], + "path": "packages/elastic-apm-synthtrace/src/lib/apm/apm_fields.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [ { "parentPluginId": "@elastic/apm-synthtrace", @@ -830,7 +1000,13 @@ "description": [], "signature": [ "(events: ", - "ApmFields", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, "[]) => { 'metricset.name': string; 'transaction.duration.histogram': { values: number[]; counts: number[]; }; _doc_count: number; '@timestamp'?: number | undefined; 'timestamp.us'?: number | undefined; 'agent.name'?: string | undefined; 'agent.version'?: string | undefined; 'container.id'?: string | undefined; 'ecs.version'?: string | undefined; 'event.outcome'?: string | undefined; 'event.ingested'?: number | undefined; 'error.id'?: string | undefined; 'error.exception'?: ", { "pluginId": "@elastic/apm-synthtrace", @@ -855,7 +1031,13 @@ "label": "events", "description": [], "signature": [ - "ApmFields", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, "[]" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/processors/get_transaction_metrics.ts", @@ -872,7 +1054,13 @@ "description": [], "signature": [ "(events: ", - "ApmFields", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, "[]) => { \"metricset.name\": string; 'span.destination.service.response_time.sum.us': number; 'span.destination.service.response_time.count': number; '@timestamp'?: number | undefined; 'timestamp.us'?: number | undefined; 'agent.name'?: string | undefined; 'agent.version'?: string | undefined; 'container.id'?: string | undefined; 'ecs.version'?: string | undefined; 'event.outcome'?: string | undefined; 'event.ingested'?: number | undefined; 'error.id'?: string | undefined; 'error.exception'?: ", { "pluginId": "@elastic/apm-synthtrace", @@ -897,7 +1085,13 @@ "label": "events", "description": [], "signature": [ - "ApmFields", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, "[]" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/processors/get_span_destination_metrics.ts", @@ -929,9 +1123,21 @@ "description": [], "signature": [ "(events: ", - "ApmFields", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, "[]) => ", - "ApmFields", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, "[]" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/index.ts", @@ -946,7 +1152,13 @@ "label": "events", "description": [], "signature": [ - "ApmFields", + { + "pluginId": "@elastic/apm-synthtrace", + "scope": "server", + "docId": "kibElasticApmSynthtracePluginApi", + "section": "def-server.ApmFields", + "text": "ApmFields" + }, "[]" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/processors/get_breakdown_metrics.ts", @@ -962,9 +1174,9 @@ "label": "getApmWriteTargets", "description": [], "signature": [ - "({ client, forceDataStreams, }: { client: ", + "({ client, forceLegacyIndices, }: { client: ", "default", - "; forceDataStreams?: boolean | undefined; }) => Promise<", + "; forceLegacyIndices?: boolean | undefined; }) => Promise<", "ApmElasticsearchOutputWriteTargets", ">" ], @@ -982,7 +1194,7 @@ "signature": [ "{ client: ", "default", - "; forceDataStreams?: boolean | undefined; }" + "; forceLegacyIndices?: boolean | undefined; }" ], "path": "packages/elastic-apm-synthtrace/src/lib/apm/utils/get_apm_write_targets.ts", "deprecated": false diff --git a/api_docs/elastic_apm_synthtrace.mdx b/api_docs/elastic_apm_synthtrace.mdx index a1ce9ad2020bd..727d8b367a3a2 100644 --- a/api_docs/elastic_apm_synthtrace.mdx +++ b/api_docs/elastic_apm_synthtrace.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/elastic-apm-synthtrace title: "@elastic/apm-synthtrace" image: https://source.unsplash.com/400x175/?github summary: API docs for the @elastic/apm-synthtrace plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@elastic/apm-synthtrace'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 62 | 0 | 62 | 9 | +| 70 | 0 | 70 | 10 | ## Server @@ -37,3 +37,6 @@ Contact [Owner missing] for questions regarding this plugin. ### Enums +### Consts, variables and types + + diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index 4ff19a79a26b4..d8d5fd3006360 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -8749,7 +8749,7 @@ "section": "def-public.EmbeddableFactory", "text": "EmbeddableFactory" }, - ", \"type\" | \"create\" | \"isEditable\" | \"getDisplayName\"> & Partial, \"create\" | \"type\" | \"isEditable\" | \"getDisplayName\"> & Partial; readonly accessCheckTimeout: number; readonly accessCheckTimeoutWarning: number; }" + "{ readonly host?: string | undefined; readonly customHeaders?: Readonly<{} & {}> | undefined; readonly ssl: Readonly<{ certificateAuthorities?: string | string[] | undefined; } & { verificationMode: \"none\" | \"full\" | \"certificate\"; }>; readonly accessCheckTimeout: number; readonly accessCheckTimeoutWarning: number; }" ], "path": "x-pack/plugins/enterprise_search/server/index.ts", "deprecated": false, @@ -51,7 +51,9 @@ "Type", "; verificationMode: ", "Type", - "<\"none\" | \"full\" | \"certificate\">; }>; }>" + "<\"none\" | \"full\" | \"certificate\">; }>; customHeaders: ", + "Type", + " | undefined>; }>" ], "path": "x-pack/plugins/enterprise_search/server/index.ts", "deprecated": false, diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 8ea1f6d5c47b3..4e4c43e2977c1 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the enterpriseSearch plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] 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. --- diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 3f8b8a4e25633..937c0be2c8ba3 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github summary: API docs for the esUiShared plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] 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. --- diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index db8d13ecbffad..5e3d34fcae086 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github summary: API docs for the eventAnnotation plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] 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. --- diff --git a/api_docs/event_log.devdocs.json b/api_docs/event_log.devdocs.json index cf94115cf3b25..1a4840efc4729 100644 --- a/api_docs/event_log.devdocs.json +++ b/api_docs/event_log.devdocs.json @@ -1047,7 +1047,7 @@ "label": "data", "description": [], "signature": [ - "(Readonly<{ user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; error?: Readonly<{ message?: string | undefined; type?: string | undefined; id?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; tags?: string[] | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: number | undefined; number_of_scheduled_actions?: number | undefined; number_of_searches?: number | undefined; total_indexing_duration_ms?: number | undefined; es_search_duration_ms?: number | undefined; total_search_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: 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<{ id?: string | undefined; schedule_delay?: number | undefined; scheduled?: string | undefined; } & {}> | undefined; space_ids?: string[] | undefined; } & {}> | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: 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; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; category?: string[] | undefined; url?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: number | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: 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; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}> | undefined)[]" + "(Readonly<{ error?: Readonly<{ message?: string | undefined; id?: string | undefined; type?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: number | undefined; number_of_generated_actions?: number | undefined; number_of_new_alerts?: number | undefined; number_of_active_alerts?: number | undefined; number_of_recovered_alerts?: number | undefined; total_number_of_alerts?: number | undefined; number_of_searches?: number | undefined; total_indexing_duration_ms?: number | undefined; es_search_duration_ms?: number | undefined; total_search_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: 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<{ id?: string | undefined; schedule_delay?: number | undefined; scheduled?: string | undefined; } & {}> | undefined; space_ids?: string[] | undefined; } & {}> | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: 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; event?: Readonly<{ start?: string | undefined; id?: string | undefined; type?: string[] | undefined; outcome?: string | undefined; category?: string[] | undefined; url?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: number | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: 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; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}> | undefined)[]" ], "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", "deprecated": false @@ -1066,7 +1066,7 @@ "label": "IEvent", "description": [], "signature": [ - "DeepPartial | undefined; message?: string | undefined; error?: Readonly<{ message?: string | undefined; type?: string | undefined; id?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; tags?: string[] | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: number | undefined; number_of_scheduled_actions?: number | undefined; number_of_searches?: number | undefined; total_indexing_duration_ms?: number | undefined; es_search_duration_ms?: number | undefined; total_search_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: 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<{ id?: string | undefined; schedule_delay?: number | undefined; scheduled?: string | undefined; } & {}> | undefined; space_ids?: string[] | undefined; } & {}> | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: 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; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; category?: string[] | undefined; url?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: number | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: 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; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}>>> | undefined" + "DeepPartial | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: number | undefined; number_of_generated_actions?: number | undefined; number_of_new_alerts?: number | undefined; number_of_active_alerts?: number | undefined; number_of_recovered_alerts?: number | undefined; total_number_of_alerts?: number | undefined; number_of_searches?: number | undefined; total_indexing_duration_ms?: number | undefined; es_search_duration_ms?: number | undefined; total_search_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: 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<{ id?: string | undefined; schedule_delay?: number | undefined; scheduled?: string | undefined; } & {}> | undefined; space_ids?: string[] | undefined; } & {}> | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: 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; event?: Readonly<{ start?: string | undefined; id?: string | undefined; type?: string[] | undefined; outcome?: string | undefined; category?: string[] | undefined; url?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: number | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: 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; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, @@ -1080,7 +1080,7 @@ "label": "IValidatedEvent", "description": [], "signature": [ - "Readonly<{ user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; error?: Readonly<{ message?: string | undefined; type?: string | undefined; id?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; tags?: string[] | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: number | undefined; number_of_scheduled_actions?: number | undefined; number_of_searches?: number | undefined; total_indexing_duration_ms?: number | undefined; es_search_duration_ms?: number | undefined; total_search_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: 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<{ id?: string | undefined; schedule_delay?: number | undefined; scheduled?: string | undefined; } & {}> | undefined; space_ids?: string[] | undefined; } & {}> | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: 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; event?: Readonly<{ start?: string | undefined; type?: string[] | undefined; id?: string | undefined; outcome?: string | undefined; category?: string[] | undefined; url?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: number | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: 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; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}> | undefined" + "Readonly<{ error?: Readonly<{ message?: string | undefined; id?: string | undefined; type?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; user?: Readonly<{ name?: string | undefined; } & {}> | undefined; message?: string | undefined; tags?: string[] | undefined; kibana?: Readonly<{ alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; execution?: Readonly<{ status?: string | undefined; metrics?: Readonly<{ number_of_triggered_actions?: number | undefined; number_of_generated_actions?: number | undefined; number_of_new_alerts?: number | undefined; number_of_active_alerts?: number | undefined; number_of_recovered_alerts?: number | undefined; total_number_of_alerts?: number | undefined; number_of_searches?: number | undefined; total_indexing_duration_ms?: number | undefined; es_search_duration_ms?: number | undefined; total_search_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; } & {}> | undefined; uuid?: string | undefined; status_order?: number | undefined; } & {}> | undefined; rule_type_id?: string | undefined; } & {}> | undefined; } & {}> | undefined; version?: string | undefined; saved_objects?: Readonly<{ id?: string | undefined; type?: string | undefined; namespace?: string | undefined; rel?: 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<{ id?: string | undefined; schedule_delay?: number | undefined; scheduled?: string | undefined; } & {}> | undefined; space_ids?: string[] | undefined; } & {}> | undefined; log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; rule?: Readonly<{ id?: string | undefined; description?: 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; event?: Readonly<{ start?: string | undefined; id?: string | undefined; type?: string[] | undefined; outcome?: string | undefined; category?: string[] | undefined; url?: string | undefined; end?: string | undefined; original?: string | undefined; duration?: number | undefined; code?: string | undefined; action?: string | undefined; kind?: string | undefined; hash?: string | undefined; severity?: number | undefined; created?: string | undefined; dataset?: 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; timezone?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; } & {}> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 40049f0fbe11d..562f7fee9dbbb 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github summary: API docs for the eventLog plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] 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. --- diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 47da67003080d..22245b38031d1 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionError plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] 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. --- diff --git a/api_docs/expression_gauge.devdocs.json b/api_docs/expression_gauge.devdocs.json index 63e409a1a6c3a..111082f04d28a 100644 --- a/api_docs/expression_gauge.devdocs.json +++ b/api_docs/expression_gauge.devdocs.json @@ -103,13 +103,7 @@ "text": "Accessors" }, " | undefined, paletteParams?: ", - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", " | undefined, isRespectRanges?: boolean | undefined) => number" ], "path": "src/plugins/chart_expressions/expression_gauge/public/components/utils/accessors.ts", @@ -165,13 +159,7 @@ "label": "paletteParams", "description": [], "signature": [ - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", " | undefined" ], "path": "src/plugins/chart_expressions/expression_gauge/public/components/utils/accessors.ts", @@ -221,13 +209,7 @@ "text": "Accessors" }, " | undefined, paletteParams?: ", - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", " | undefined, isRespectRanges?: boolean | undefined) => any" ], "path": "src/plugins/chart_expressions/expression_gauge/public/components/utils/accessors.ts", @@ -283,13 +265,7 @@ "label": "paletteParams", "description": [], "signature": [ - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", " | undefined" ], "path": "src/plugins/chart_expressions/expression_gauge/public/components/utils/accessors.ts", @@ -551,196 +527,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.ColorStop", - "type": "Interface", - "tags": [], - "label": "ColorStop", - "description": [], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "expressionGauge", - "id": "def-common.ColorStop.color", - "type": "string", - "tags": [], - "label": "color", - "description": [], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.ColorStop.stop", - "type": "number", - "tags": [], - "label": "stop", - "description": [], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams", - "type": "Interface", - "tags": [], - "label": "CustomPaletteParams", - "description": [], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.reverse", - "type": "CompoundType", - "tags": [], - "label": "reverse", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.rangeType", - "type": "CompoundType", - "tags": [], - "label": "rangeType", - "description": [], - "signature": [ - "\"number\" | \"percent\" | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.continuity", - "type": "CompoundType", - "tags": [], - "label": "continuity", - "description": [], - "signature": [ - "\"above\" | \"below\" | \"none\" | \"all\" | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.progression", - "type": "string", - "tags": [], - "label": "progression", - "description": [], - "signature": [ - "\"fixed\" | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.rangeMin", - "type": "number", - "tags": [], - "label": "rangeMin", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.rangeMax", - "type": "number", - "tags": [], - "label": "rangeMax", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.stops", - "type": "Array", - "tags": [], - "label": "stops", - "description": [], - "signature": [ - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[] | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.colorStops", - "type": "Array", - "tags": [], - "label": "colorStops", - "description": [], - "signature": [ - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[] | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.CustomPaletteParams.steps", - "type": "number", - "tags": [], - "label": "steps", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "expressionGauge", "id": "def-common.GaugeExpressionProps", @@ -796,13 +582,7 @@ "; colorMode: ", "GaugeColorMode", "; palette?: ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<", { "pluginId": "charts", @@ -1014,21 +794,9 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<", - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", "> | undefined" ], "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", @@ -1208,13 +976,7 @@ "; colorMode: ", "GaugeColorMode", "; palette?: ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<", { "pluginId": "charts", @@ -1340,13 +1102,7 @@ "; chartsThemeService: ", "Theme", "; paletteService: ", - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.PaletteRegistry", - "text": "PaletteRegistry" - }, + "PaletteRegistry", "; uiState: ", { "pluginId": "visualizations", @@ -1416,36 +1172,6 @@ "path": "src/plugins/chart_expressions/expression_gauge/common/index.ts", "deprecated": false, "initialIsOpen": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.RequiredPaletteParamTypes", - "type": "Type", - "tags": [], - "label": "RequiredPaletteParamTypes", - "description": [], - "signature": [ - "{ name: string; reverse: boolean; rangeType: \"number\" | \"percent\"; continuity: \"above\" | \"below\" | \"none\" | \"all\"; progression: \"fixed\"; rangeMin: number; rangeMax: number; stops: ", - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[]; colorStops: ", - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[]; steps: number; }" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_renderers.ts", - "deprecated": false, - "initialIsOpen": false } ], "objects": [ diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index b99d793cc0063..f83a1b80f6f29 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionGauge plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] 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. --- @@ -18,7 +18,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 76 | 0 | 76 | 2 | +| 61 | 0 | 61 | 2 | ## Client diff --git a/api_docs/expression_heatmap.devdocs.json b/api_docs/expression_heatmap.devdocs.json index fa4e095495ed6..e686e8a1e7b76 100644 --- a/api_docs/expression_heatmap.devdocs.json +++ b/api_docs/expression_heatmap.devdocs.json @@ -121,196 +121,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.ColorStop", - "type": "Interface", - "tags": [], - "label": "ColorStop", - "description": [], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.ColorStop.color", - "type": "string", - "tags": [], - "label": "color", - "description": [], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.ColorStop.stop", - "type": "number", - "tags": [], - "label": "stop", - "description": [], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams", - "type": "Interface", - "tags": [], - "label": "CustomPaletteParams", - "description": [], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.reverse", - "type": "CompoundType", - "tags": [], - "label": "reverse", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.rangeType", - "type": "CompoundType", - "tags": [], - "label": "rangeType", - "description": [], - "signature": [ - "\"number\" | \"percent\" | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.continuity", - "type": "CompoundType", - "tags": [], - "label": "continuity", - "description": [], - "signature": [ - "\"above\" | \"below\" | \"none\" | \"all\" | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.progression", - "type": "string", - "tags": [], - "label": "progression", - "description": [], - "signature": [ - "\"fixed\" | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.rangeMin", - "type": "number", - "tags": [], - "label": "rangeMin", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.rangeMax", - "type": "number", - "tags": [], - "label": "rangeMax", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.stops", - "type": "Array", - "tags": [], - "label": "stops", - "description": [], - "signature": [ - { - "pluginId": "expressionHeatmap", - "scope": "common", - "docId": "kibExpressionHeatmapPluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[] | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.colorStops", - "type": "Array", - "tags": [], - "label": "colorStops", - "description": [], - "signature": [ - { - "pluginId": "expressionHeatmap", - "scope": "common", - "docId": "kibExpressionHeatmapPluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[] | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.CustomPaletteParams.steps", - "type": "number", - "tags": [], - "label": "steps", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "expressionHeatmap", "id": "def-common.FilterEvent", @@ -428,13 +238,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<", { "pluginId": "charts", @@ -805,13 +609,7 @@ "text": "Datatable" }, "; column: number; range: number[]; timeFieldName?: string | undefined; }) => void; paletteService: ", - { - "pluginId": "charts", - "scope": "public", - "docId": "kibChartsPluginApi", - "section": "def-public.PaletteRegistry", - "text": "PaletteRegistry" - }, + "PaletteRegistry", "; uiState: ", { "pluginId": "visualizations", @@ -853,36 +651,6 @@ "path": "src/plugins/chart_expressions/expression_heatmap/common/index.ts", "deprecated": false, "initialIsOpen": false - }, - { - "parentPluginId": "expressionHeatmap", - "id": "def-common.RequiredPaletteParamTypes", - "type": "Type", - "tags": [], - "label": "RequiredPaletteParamTypes", - "description": [], - "signature": [ - "{ name: string; reverse: boolean; rangeType: \"number\" | \"percent\"; continuity: \"above\" | \"below\" | \"none\" | \"all\"; progression: \"fixed\"; rangeMin: number; rangeMax: number; stops: ", - { - "pluginId": "expressionHeatmap", - "scope": "common", - "docId": "kibExpressionHeatmapPluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[]; colorStops: ", - { - "pluginId": "expressionHeatmap", - "scope": "common", - "docId": "kibExpressionHeatmapPluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[]; steps: number; }" - ], - "path": "src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts", - "deprecated": false, - "initialIsOpen": false } ], "objects": [ diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index aad7b2efe25d8..d828747b22637 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionHeatmap plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] 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. --- @@ -18,7 +18,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 119 | 0 | 115 | 3 | +| 104 | 0 | 100 | 3 | ## Client diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index feea2fe660d34..093aecd94cd99 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionImage plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] 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. --- diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 8affa769b01a2..527d9a85c187c 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionMetric plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] 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. --- diff --git a/api_docs/expression_metric_vis.devdocs.json b/api_docs/expression_metric_vis.devdocs.json index 43cb1a3470887..de4956164a459 100644 --- a/api_docs/expression_metric_vis.devdocs.json +++ b/api_docs/expression_metric_vis.devdocs.json @@ -150,13 +150,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<", { "pluginId": "charts", diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index a428ff8611edf..e4d8c09eb36cd 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionMetricVis plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] 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. --- diff --git a/api_docs/expression_partition_vis.devdocs.json b/api_docs/expression_partition_vis.devdocs.json index 6511db71b8625..4953f5401fb20 100644 --- a/api_docs/expression_partition_vis.devdocs.json +++ b/api_docs/expression_partition_vis.devdocs.json @@ -609,13 +609,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }>" ], "path": "src/plugins/chart_expressions/expression_partition_vis/common/types/expression_renderers.ts", diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 2ed4287363bf1..97c89c561e56c 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionPartitionVis plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] 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. --- diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 30b19d8b19abb..5b0af3d5efbc8 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionRepeatImage plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] 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. --- diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 8e270f3640f04..c7eca19a624cb 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionRevealImage plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] 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. --- diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 54a9aa6e92925..f3ee5306578c3 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionShape plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] 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. --- diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index e3f34e10096c9..8331a345d07cc 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionTagcloud plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/expression_x_y.devdocs.json b/api_docs/expression_x_y.devdocs.json index c8e2d0f579833..7064fd2035207 100644 --- a/api_docs/expression_x_y.devdocs.json +++ b/api_docs/expression_x_y.devdocs.json @@ -452,13 +452,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }>" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", @@ -3086,7 +3080,7 @@ "label": "types", "description": [], "signature": [ - "(\"palette\" | \"system_palette\")[]" + "(\"system_palette\" | \"palette\")[]" ], "path": "src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer_config.ts", "deprecated": false @@ -3156,13 +3150,7 @@ "text": "XScaleType" }, "; isHistogram: boolean; palette: ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }>; yConfig?: ", { "pluginId": "expressionXY", diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 1bb894548102d..90fa5545dffd1 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionXY plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] 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. --- diff --git a/api_docs/expressions.devdocs.json b/api_docs/expressions.devdocs.json index 5da80bd20a369..193a9d90ba337 100644 --- a/api_docs/expressions.devdocs.json +++ b/api_docs/expressions.devdocs.json @@ -6361,7 +6361,13 @@ "description": [], "signature": [ "(nodeRef: React.RefObject, {\n debounce,\n expression,\n hasCustomErrorRenderer,\n onData$,\n onEvent,\n onRender$,\n reload$,\n ...loaderParams\n }: ", - "ExpressionRendererParams", + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionRendererParams", + "text": "ExpressionRendererParams" + }, ") => ExpressionRendererState" ], "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", @@ -6389,7 +6395,13 @@ "label": "{\n debounce,\n expression,\n hasCustomErrorRenderer,\n onData$,\n onEvent,\n onRender$,\n reload$,\n ...loaderParams\n }", "description": [], "signature": [ - "ExpressionRendererParams" + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionRendererParams", + "text": "ExpressionRendererParams" + } ], "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", "deprecated": false, @@ -7877,35 +7889,35 @@ "references": [ { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/functions/filters.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts" + "path": "x-pack/plugins/canvas/common/functions/filters.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts" }, { "plugin": "visTypeXy", @@ -8612,6 +8624,230 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams", + "type": "Interface", + "tags": [], + "label": "ExpressionRendererParams", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionRendererParams", + "text": "ExpressionRendererParams" + }, + " extends ", + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.IExpressionLoaderParams", + "text": "IExpressionLoaderParams" + } + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.debounce", + "type": "number", + "tags": [], + "label": "debounce", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false + }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.expression", + "type": "CompoundType", + "tags": [], + "label": "expression", + "description": [], + "signature": [ + "string | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionAstExpression", + "text": "ExpressionAstExpression" + } + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false + }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.hasCustomErrorRenderer", + "type": "CompoundType", + "tags": [], + "label": "hasCustomErrorRenderer", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false + }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.onData$", + "type": "Function", + "tags": [], + "label": "onData$", + "description": [], + "signature": [ + "((data: TData, adapters?: TInspectorAdapters | undefined, partial?: boolean | undefined) => void) | undefined" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.onData$.$1", + "type": "Uncategorized", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "TData" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.onData$.$2", + "type": "Uncategorized", + "tags": [], + "label": "adapters", + "description": [], + "signature": [ + "TInspectorAdapters | undefined" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.onData$.$3", + "type": "CompoundType", + "tags": [], + "label": "partial", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.onEvent", + "type": "Function", + "tags": [], + "label": "onEvent", + "description": [], + "signature": [ + "((event: ", + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionRendererEvent", + "text": "ExpressionRendererEvent" + }, + ") => void) | undefined" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.onEvent.$1", + "type": "Object", + "tags": [], + "label": "event", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionRendererEvent", + "text": "ExpressionRendererEvent" + } + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.onRender$", + "type": "Function", + "tags": [], + "label": "onRender$", + "description": [], + "signature": [ + "((item: number) => void) | undefined" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.onRender$.$1", + "type": "number", + "tags": [], + "label": "item", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "expressions", + "id": "def-public.ExpressionRendererParams.reload$", + "type": "Object", + "tags": [], + "label": "reload$", + "description": [ + "\nAn observable which can be used to re-run the expression without destroying the component" + ], + "signature": [ + "Observable", + " | undefined" + ], + "path": "src/plugins/expressions/public/react_expression_renderer/use_expression_renderer.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "expressions", "id": "def-public.ExpressionRenderError", @@ -10366,7 +10602,13 @@ "text": "ReactExpressionRendererProps" }, " extends Omit<", - "ExpressionRendererParams", + { + "pluginId": "expressions", + "scope": "public", + "docId": "kibExpressionsPluginApi", + "section": "def-public.ExpressionRendererParams", + "text": "ExpressionRendererParams" + }, ", \"hasCustomErrorRenderer\">" ], "path": "src/plugins/expressions/public/react_expression_renderer/react_expression_renderer.tsx", @@ -11266,7 +11508,7 @@ "\nAllowed column names in a PointSeries" ], "signature": [ - "\"color\" | \"y\" | \"x\" | \"size\" | \"text\"" + "\"color\" | \"size\" | \"text\" | \"y\" | \"x\"" ], "path": "src/plugins/expressions/common/expression_types/specs/pointseries.ts", "deprecated": false, @@ -17996,35 +18238,35 @@ "references": [ { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/functions/filters.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts" + "path": "x-pack/plugins/canvas/common/functions/filters.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts" }, { "plugin": "visTypeXy", @@ -20218,7 +20460,7 @@ "\nAllowed column names in a PointSeries" ], "signature": [ - "\"color\" | \"y\" | \"x\" | \"size\" | \"text\"" + "\"color\" | \"size\" | \"text\" | \"y\" | \"x\"" ], "path": "src/plugins/expressions/common/expression_types/specs/pointseries.ts", "deprecated": false, @@ -29735,35 +29977,35 @@ "references": [ { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/functions/filters.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/essql.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts" + "path": "x-pack/plugins/canvas/common/functions/filters.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts" }, { "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts" + "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts" }, { "plugin": "visTypeXy", @@ -34299,7 +34541,7 @@ "\nAllowed column names in a PointSeries" ], "signature": [ - "\"color\" | \"y\" | \"x\" | \"size\" | \"text\"" + "\"color\" | \"size\" | \"text\" | \"y\" | \"x\"" ], "path": "src/plugins/expressions/common/expression_types/specs/pointseries.ts", "deprecated": false, @@ -38006,7 +38248,15 @@ "section": "def-common.DatatableRow", "text": "DatatableRow" }, - "[]; type: \"datatable\"; meta?: ", + "[] | (", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableRow", + "text": "DatatableRow" + }, + " | { [x: string]: any; })[]; type: \"datatable\"; meta?: ", "DatatableMeta", " | undefined; }>" ], diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 8470b4f8a9643..48f344a1fc219 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressions plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] 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. --- @@ -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 | |-------------------|-----------|------------------------|-----------------| -| 2145 | 17 | 1701 | 6 | +| 2158 | 17 | 1713 | 5 | ## Client diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 19443c000875b..27dc3a6e8652a 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github summary: API docs for the features plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] 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. --- diff --git a/api_docs/field_formats.devdocs.json b/api_docs/field_formats.devdocs.json index 3128c6077b0c5..fbe312ee376af 100644 --- a/api_docs/field_formats.devdocs.json +++ b/api_docs/field_formats.devdocs.json @@ -4807,7 +4807,7 @@ "label": "FieldFormatsContentType", "description": [], "signature": [ - "\"html\" | \"text\"" + "\"text\" | \"html\"" ], "path": "src/plugins/field_formats/common/types.ts", "deprecated": false, @@ -5083,7 +5083,7 @@ "label": "HTML_CONTEXT_TYPE", "description": [], "signature": [ - "\"html\" | \"text\"" + "\"text\" | \"html\"" ], "path": "src/plugins/field_formats/common/content_types/html_content_type.ts", "deprecated": false, @@ -5361,7 +5361,7 @@ "label": "TEXT_CONTEXT_TYPE", "description": [], "signature": [ - "\"html\" | \"text\"" + "\"text\" | \"html\"" ], "path": "src/plugins/field_formats/common/content_types/text_content_type.ts", "deprecated": false, diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 41c16cfcde6a2..c425ca2c5924c 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github summary: API docs for the fieldFormats plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 5361e280670e0..670175e6463d6 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github summary: API docs for the fileUpload plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] 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. --- diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 71cb3650bbbce..530b55d549f63 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -6882,7 +6882,7 @@ "label": "runExternalCallbacks", "description": [], "signature": [ - "(externalCallbackType: A, packagePolicy: A extends \"postPackagePolicyDelete\" ? ", + "(externalCallbackType: A, packagePolicy: A extends \"postPackagePolicyDelete\" ? ", { "pluginId": "fleet", "scope": "common", @@ -6890,6 +6890,14 @@ "section": "def-common.DeletePackagePoliciesResponse", "text": "DeletePackagePoliciesResponse" }, + " : A extends \"packagePolicyPostCreate\" ? ", + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.PackagePolicy", + "text": "PackagePolicy" + }, " : ", { "pluginId": "fleet", @@ -6914,7 +6922,15 @@ "section": "def-server.KibanaRequest", "text": "KibanaRequest" }, - ") => Promise) => Promise) => Promise<", + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.PackagePolicy", + "text": "PackagePolicy" + }, + ">" + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "fleet", + "id": "def-server.PostPackagePolicyPostCreateCallback.$1", + "type": "Object", + "tags": [], + "label": "packagePolicy", + "description": [], + "signature": [ + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.PackagePolicy", + "text": "PackagePolicy" + } + ], + "path": "x-pack/plugins/fleet/server/types/extensions.ts", + "deprecated": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.PostPackagePolicyPostCreateCallback.$2", + "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.PostPackagePolicyPostCreateCallback.$3", + "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.PutPackagePolicyUpdateCallback", @@ -11410,7 +11543,7 @@ "\nLst checkin status" ], "signature": [ - "\"online\" | \"error\" | \"updating\" | \"degraded\" | undefined" + "\"error\" | \"online\" | \"updating\" | \"degraded\" | undefined" ], "path": "x-pack/plugins/fleet/common/types/models/agent.ts", "deprecated": false @@ -12800,7 +12933,20 @@ "label": "missing_requirements", "description": [], "signature": [ - "(\"fleet_server\" | \"security_required\" | \"tls_required\" | \"api_keys\" | \"fleet_admin_user\" | \"encrypted_saved_object_encryption_key_required\")[]" + "(\"fleet_server\" | \"security_required\" | \"tls_required\" | \"api_keys\" | \"fleet_admin_user\")[]" + ], + "path": "x-pack/plugins/fleet/common/types/rest_spec/fleet_setup.ts", + "deprecated": false + }, + { + "parentPluginId": "fleet", + "id": "def-common.GetFleetStatusResponse.missing_optional_features", + "type": "Array", + "tags": [], + "label": "missing_optional_features", + "description": [], + "signature": [ + "\"encrypted_saved_object_encryption_key_required\"[]" ], "path": "x-pack/plugins/fleet/common/types/rest_spec/fleet_setup.ts", "deprecated": false @@ -13411,7 +13557,7 @@ "label": "query", "description": [], "signature": [ - "{ category?: string | undefined; experimental?: boolean | undefined; }" + "{ category?: string | undefined; experimental?: boolean | undefined; excludeInstallStatus?: boolean | undefined; }" ], "path": "x-pack/plugins/fleet/common/types/rest_spec/epm.ts", "deprecated": false @@ -18630,7 +18776,7 @@ "label": "AgentStatus", "description": [], "signature": [ - "\"offline\" | \"online\" | \"error\" | \"warning\" | \"inactive\" | \"enrolling\" | \"unenrolling\" | \"updating\" | \"degraded\"" + "\"error\" | \"offline\" | \"online\" | \"warning\" | \"inactive\" | \"enrolling\" | \"unenrolling\" | \"updating\" | \"degraded\"" ], "path": "x-pack/plugins/fleet/common/types/models/agent.ts", "deprecated": false, @@ -19661,6 +19807,14 @@ "label": "Installable", "description": [], "signature": [ + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.InstallStatusExcluded", + "text": "InstallStatusExcluded" + }, + " | ", { "pluginId": "fleet", "scope": "common", @@ -19838,6 +19992,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "fleet", + "id": "def-common.InstallStatusExcluded", + "type": "Type", + "tags": [], + "label": "InstallStatusExcluded", + "description": [], + "signature": [ + "T & { status: undefined; }" + ], + "path": "x-pack/plugins/fleet/common/types/models/epm.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "fleet", "id": "def-common.InstallType", @@ -20194,7 +20362,7 @@ "section": "def-common.NewOutput", "text": "NewOutput" }, - " & { output_id?: string | undefined; }" + " & { output_id?: string | undefined; ssl?: string | undefined; }" ], "path": "x-pack/plugins/fleet/common/types/models/output.ts", "deprecated": false, @@ -20749,7 +20917,7 @@ "label": "RegistrySearchResult", "description": [], "signature": [ - "{ download: string; type?: \"integration\" | undefined; title: string; description: string; icons?: (", + "{ download: string; title: string; type?: \"integration\" | undefined; description: string; icons?: (", { "pluginId": "fleet", "scope": "common", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 35b1cf07adef1..221ed6ae0e6e0 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github summary: API docs for the fleet plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] 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. --- @@ -18,7 +18,7 @@ Contact [Fleet](https://github.com/orgs/elastic/teams/fleet) for questions regar | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1379 | 8 | 1262 | 9 | +| 1385 | 8 | 1268 | 10 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 9f756367f808c..31f9aa31263a9 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the globalSearch plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] 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. --- diff --git a/api_docs/home.devdocs.json b/api_docs/home.devdocs.json index 56a7ef14f9710..516a1e6965511 100644 --- a/api_docs/home.devdocs.json +++ b/api_docs/home.devdocs.json @@ -368,20 +368,14 @@ { "parentPluginId": "home", "id": "def-public.FeatureCatalogueEntry.category", - "type": "Enum", + "type": "CompoundType", "tags": [], "label": "category", "description": [ "{@link FeatureCatalogueCategory} to display this feature in." ], "signature": [ - { - "pluginId": "home", - "scope": "public", - "docId": "kibHomePluginApi", - "section": "def-public.FeatureCatalogueCategory", - "text": "FeatureCatalogueCategory" - } + "\"data\" | \"other\" | \"admin\"" ], "path": "src/plugins/home/public/services/feature_catalogue/feature_catalogue_registry.ts", "deprecated": false @@ -682,19 +676,7 @@ "initialIsOpen": false } ], - "enums": [ - { - "parentPluginId": "home", - "id": "def-public.FeatureCatalogueCategory", - "type": "Enum", - "tags": [], - "label": "FeatureCatalogueCategory", - "description": [], - "path": "src/plugins/home/public/services/feature_catalogue/feature_catalogue_registry.ts", - "deprecated": false, - "initialIsOpen": false - } - ], + "enums": [], "misc": [ { "parentPluginId": "home", @@ -718,6 +700,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "home", + "id": "def-public.FeatureCatalogueCategory", + "type": "Type", + "tags": [], + "label": "FeatureCatalogueCategory", + "description": [], + "signature": [ + "\"data\" | \"other\" | \"admin\"" + ], + "path": "src/plugins/home/public/services/feature_catalogue/feature_catalogue_registry.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "home", "id": "def-public.FeatureCatalogueSetup", @@ -1577,7 +1573,7 @@ "label": "InstructionSetSchema", "description": [], "signature": [ - "{ readonly title?: string | undefined; readonly callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; readonly statusCheck?: Readonly<{ title?: string | undefined; error?: string | undefined; text?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; readonly instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }" + "{ readonly title?: string | undefined; readonly callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; readonly statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; readonly instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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, @@ -1591,7 +1587,7 @@ "label": "InstructionsSchema", "description": [], "signature": [ - "{ readonly params?: Readonly<{ defaultValue?: any; } & { label: string; type: \"string\" | \"number\"; id: string; }>[] | undefined; readonly instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; error?: string | undefined; text?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }" + "{ readonly params?: Readonly<{ defaultValue?: any; } & { label: string; id: string; type: \"string\" | \"number\"; }>[] | undefined; readonly instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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, @@ -1607,7 +1603,7 @@ "signature": [ "{ getSampleDatasets: () => ", "Writable", - "[]; defaultIndex: string; previewImagePath: string; overviewDashboard: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>[]; addSavedObjectsToSampleDataset: (id: string, savedObjects: ", + "[]; defaultIndex: string; previewImagePath: string; overviewDashboard: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>[]; addSavedObjectsToSampleDataset: (id: string, savedObjects: ", "SavedObject", "[]) => void; addAppLinksToSampleDataset: (id: string, appLinks: ", { @@ -1641,7 +1637,7 @@ "signature": [ "() => ", "Writable", - "[]; defaultIndex: string; previewImagePath: string; overviewDashboard: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>" + "[]; defaultIndex: string; previewImagePath: string; overviewDashboard: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>" ], "path": "src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts", "deprecated": false, @@ -1695,7 +1691,7 @@ "section": "def-server.TutorialContext", "text": "TutorialContext" }, - ") => Readonly<{ isBeta?: boolean | undefined; savedObjects?: any[] | undefined; euiIconType?: string | undefined; previewImagePath?: string | undefined; moduleName?: string | undefined; completionTimeMinutes?: number | undefined; elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { label: string; type: \"string\" | \"number\"; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; error?: string | undefined; text?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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; } & { label: string; type: \"string\" | \"number\"; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; error?: string | undefined; text?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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; integrationBrowserCategories?: string[] | undefined; eprPackageOverlap?: string | undefined; } & { id: string; name: string; category: \"other\" | \"security\" | \"metrics\" | \"logging\"; shortDescription: string; longDescription: string; onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { label: string; type: \"string\" | \"number\"; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; error?: string | undefined; text?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }>" + ") => Readonly<{ isBeta?: boolean | undefined; savedObjects?: any[] | undefined; euiIconType?: string | undefined; previewImagePath?: string | undefined; moduleName?: string | undefined; completionTimeMinutes?: number | undefined; elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { label: string; id: string; type: \"string\" | \"number\"; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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; } & { label: string; id: string; type: \"string\" | \"number\"; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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; integrationBrowserCategories?: string[] | undefined; eprPackageOverlap?: string | undefined; } & { id: string; name: string; category: \"other\" | \"security\" | \"metrics\" | \"logging\"; shortDescription: string; longDescription: string; onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { label: string; id: string; type: \"string\" | \"number\"; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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, @@ -1731,7 +1727,7 @@ "label": "TutorialSchema", "description": [], "signature": [ - "{ readonly isBeta?: boolean | undefined; readonly savedObjects?: any[] | undefined; readonly euiIconType?: string | undefined; readonly previewImagePath?: string | undefined; readonly moduleName?: string | undefined; readonly completionTimeMinutes?: number | undefined; readonly elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { label: string; type: \"string\" | \"number\"; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; error?: string | undefined; text?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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; } & { label: string; type: \"string\" | \"number\"; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; error?: string | undefined; text?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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 integrationBrowserCategories?: string[] | undefined; readonly eprPackageOverlap?: string | undefined; readonly id: string; readonly name: string; readonly category: \"other\" | \"security\" | \"metrics\" | \"logging\"; readonly shortDescription: string; readonly longDescription: string; readonly onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { label: string; type: \"string\" | \"number\"; id: string; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ title?: string | undefined; error?: string | undefined; text?: string | undefined; success?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { id: string; instructions: Readonly<{ title?: string | undefined; commands?: string[] | undefined; textPre?: string | undefined; textPost?: string | undefined; customComponentName?: string | undefined; } & {}>[]; }>[]; }>[]; }>; }" + "{ readonly isBeta?: boolean | undefined; readonly savedObjects?: any[] | undefined; readonly euiIconType?: string | undefined; readonly previewImagePath?: string | undefined; readonly moduleName?: string | undefined; readonly completionTimeMinutes?: number | undefined; readonly elasticCloud?: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { label: string; id: string; type: \"string\" | \"number\"; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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; } & { label: string; id: string; type: \"string\" | \"number\"; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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 integrationBrowserCategories?: string[] | undefined; readonly eprPackageOverlap?: string | undefined; readonly id: string; readonly name: string; readonly category: \"other\" | \"security\" | \"metrics\" | \"logging\"; readonly shortDescription: string; readonly longDescription: string; readonly onPrem: Readonly<{ params?: Readonly<{ defaultValue?: any; } & { label: string; id: string; type: \"string\" | \"number\"; }>[] | undefined; } & { instructionSets: Readonly<{ title?: string | undefined; callOut?: Readonly<{ message?: string | undefined; iconType?: string | undefined; } & { title: string; }> | undefined; statusCheck?: Readonly<{ error?: string | undefined; success?: string | undefined; text?: string | undefined; title?: string | undefined; btnLabel?: string | undefined; } & { esHitsCheck: Readonly<{} & { query: Record; index: string | string[]; }>; }> | undefined; } & { instructionVariants: Readonly<{ initialSelected?: boolean | undefined; } & { 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, @@ -1990,7 +1986,7 @@ "signature": [ "{ getSampleDatasets: () => ", "Writable", - "[]; defaultIndex: string; previewImagePath: string; overviewDashboard: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>[]; addSavedObjectsToSampleDataset: (id: string, savedObjects: ", + "[]; defaultIndex: string; previewImagePath: string; overviewDashboard: string; dataIndices: Readonly<{} & { id: string; fields: Record; timeFields: string[]; dataPath: string; currentTimeMarker: string; preserveDayOfWeekTimeOfDay: boolean; }>[]; }>>[]; addSavedObjectsToSampleDataset: (id: string, savedObjects: ", "SavedObject", "[]) => void; addAppLinksToSampleDataset: (id: string, appLinks: ", { diff --git a/api_docs/home.mdx b/api_docs/home.mdx index ba9950de8c4df..2f65dcfe6a656 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github summary: API docs for the home plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] 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. --- @@ -40,9 +40,6 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que ### Interfaces -### Enums - - ### Consts, variables and types diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 4b3d1ee7c566a..3b508d1e26456 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the indexLifecycleManagement plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] 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. --- diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 9350e37eebf19..521963fb92b77 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the indexManagement plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] 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. --- diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 1ad1b38648945..599b5bd6cfcab 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github summary: API docs for the infra plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] 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. --- diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 5ebe20d7baa93..fff575d6b0e7c 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github summary: API docs for the inspector plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] 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. --- diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 2e1ad77a61fb9..869fe720402e9 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github summary: API docs for the interactiveSetup plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 28ed37ce7ba84..b937c8289d677 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ace plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] 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. --- diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index feba71871e675..09fb9c17c487d 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/alerts plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] 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. --- diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 523542b3a852d..045b97520eb11 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] 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. --- diff --git a/api_docs/elastic_analytics.devdocs.json b/api_docs/kbn_analytics_client.devdocs.json similarity index 68% rename from api_docs/elastic_analytics.devdocs.json rename to api_docs/kbn_analytics_client.devdocs.json index 0d1df6975ed2f..b2111b6f6fbfd 100644 --- a/api_docs/elastic_analytics.devdocs.json +++ b/api_docs/kbn_analytics_client.devdocs.json @@ -1,5 +1,5 @@ { - "id": "@elastic/analytics", + "id": "@kbn/analytics-client", "client": { "classes": [], "functions": [], @@ -12,7 +12,7 @@ "classes": [], "functions": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.createAnalytics", "type": "Function", "tags": [], @@ -23,26 +23,26 @@ "signature": [ "(initContext: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.AnalyticsClientInitContext", "text": "AnalyticsClientInitContext" }, ") => ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.IAnalyticsClient", "text": "IAnalyticsClient" } ], - "path": "packages/elastic-analytics/src/index.ts", + "path": "packages/analytics/client/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.createAnalytics.$1", "type": "Object", "tags": [], @@ -52,14 +52,14 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.AnalyticsClientInitContext", "text": "AnalyticsClientInitContext" } ], - "path": "packages/elastic-analytics/src/index.ts", + "path": "packages/analytics/client/src/index.ts", "deprecated": false, "isRequired": true } @@ -70,7 +70,7 @@ ], "interfaces": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.AnalyticsClientInitContext", "type": "Interface", "tags": [], @@ -78,11 +78,11 @@ "description": [ "\nGeneral settings of the analytics client" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.AnalyticsClientInitContext.isDev", "type": "boolean", "tags": [], @@ -90,11 +90,11 @@ "description": [ "\nBoolean indicating if it's running in developer mode." ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.AnalyticsClientInitContext.sendTo", "type": "CompoundType", "tags": [], @@ -105,11 +105,11 @@ "signature": [ "\"staging\" | \"production\"" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.AnalyticsClientInitContext.logger", "type": "Object", "tags": [], @@ -120,14 +120,14 @@ "signature": [ "Logger" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.ContextProviderOpts", "type": "Interface", "tags": [], @@ -137,19 +137,19 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.ContextProviderOpts", "text": "ContextProviderOpts" }, "" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.ContextProviderOpts.name", "type": "string", "tags": [], @@ -157,11 +157,11 @@ "description": [ "\nThe name of the provider." ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.ContextProviderOpts.context$", "type": "Object", "tags": [], @@ -173,11 +173,11 @@ "Observable", "" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.ContextProviderOpts.schema", "type": "Object", "tags": [], @@ -188,22 +188,22 @@ "signature": [ "{ [Key in keyof Required]: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaValue", "text": "SchemaValue" }, "; }" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.Event", "type": "Interface", "tags": [], @@ -211,11 +211,11 @@ "description": [ "\nDefinition of the full event structure" ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.Event.timestamp", "type": "string", "tags": [], @@ -223,11 +223,11 @@ "description": [ "\nThe time the event was generated in ISO format." ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.Event.event_type", "type": "string", "tags": [], @@ -235,11 +235,11 @@ "description": [ "\nThe event type." ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.Event.properties", "type": "Object", "tags": [], @@ -250,11 +250,11 @@ "signature": [ "{ [x: string]: unknown; }" ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.Event.context", "type": "Object", "tags": [], @@ -264,31 +264,123 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.EventContext", "text": "EventContext" } ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.EventContext", "type": "Interface", "tags": [], "label": "EventContext", - "description": [], - "path": "packages/elastic-analytics/src/events/types.ts", + "description": [ + "\nDefinition of the context that can be appended to the events through the {@link IAnalyticsClient.registerContextProvider}." + ], + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", + "id": "def-server.EventContext.userId", + "type": "string", + "tags": [], + "label": "userId", + "description": [ + "\nThe unique user ID." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/client/src/events/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-client", + "id": "def-server.EventContext.cloudId", + "type": "string", + "tags": [], + "label": "cloudId", + "description": [ + "\nThe Cloud ID." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/client/src/events/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-client", + "id": "def-server.EventContext.version", + "type": "string", + "tags": [], + "label": "version", + "description": [ + "\nThe product's version." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/client/src/events/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-client", + "id": "def-server.EventContext.pageName", + "type": "string", + "tags": [], + "label": "pageName", + "description": [ + "\nThe name of the current page." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/client/src/events/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-client", + "id": "def-server.EventContext.applicationId", + "type": "string", + "tags": [], + "label": "applicationId", + "description": [ + "\nThe current application ID." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/client/src/events/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-client", + "id": "def-server.EventContext.entityId", + "type": "string", + "tags": [], + "label": "entityId", + "description": [ + "\nThe current entity ID (dashboard ID, visualization ID, etc.)." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/client/src/events/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-client", "id": "def-server.EventContext.Unnamed", "type": "IndexSignature", "tags": [], @@ -297,14 +389,14 @@ "signature": [ "[key: string]: unknown" ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.EventTypeOpts", "type": "Interface", "tags": [], @@ -314,19 +406,19 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.EventTypeOpts", "text": "EventTypeOpts" }, "" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.EventTypeOpts.eventType", "type": "string", "tags": [], @@ -334,11 +426,11 @@ "description": [ "\nThe event type's unique name." ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.EventTypeOpts.schema", "type": "Object", "tags": [], @@ -349,22 +441,22 @@ "signature": [ "{ [Key in keyof Required]: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaValue", "text": "SchemaValue" }, "; }" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient", "type": "Interface", "tags": [], @@ -372,11 +464,11 @@ "description": [ "\nAnalytics client's public APIs" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.reportEvent", "type": "Function", "tags": [], @@ -387,11 +479,11 @@ "signature": [ ">(eventType: string, eventData: EventTypeData) => void" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.reportEvent.$1", "type": "string", "tags": [], @@ -402,12 +494,12 @@ "signature": [ "string" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.reportEvent.$2", "type": "Uncategorized", "tags": [], @@ -418,7 +510,7 @@ "signature": [ "EventTypeData" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": true } @@ -426,7 +518,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.registerEventType", "type": "Function", "tags": [], @@ -437,19 +529,19 @@ "signature": [ "(eventTypeOps: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.EventTypeOpts", "text": "EventTypeOpts" }, ") => void" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.registerEventType.$1", "type": "Object", "tags": [], @@ -457,15 +549,15 @@ "description": [], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.EventTypeOpts", "text": "EventTypeOpts" }, "" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": true } @@ -473,7 +565,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.registerShipper", "type": "Function", "tags": [], @@ -484,35 +576,35 @@ "signature": [ "(Shipper: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.ShipperClassConstructor", "text": "ShipperClassConstructor" }, ", shipperConfig: ShipperConfig, opts?: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.RegisterShipperOpts", "text": "RegisterShipperOpts" }, " | undefined) => void" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.registerShipper.$1", "type": "Object", "tags": [], @@ -522,20 +614,20 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.ShipperClassConstructor", "text": "ShipperClassConstructor" }, "" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.registerShipper.$2", "type": "Uncategorized", "tags": [], @@ -546,12 +638,12 @@ "signature": [ "ShipperConfig" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.registerShipper.$3", "type": "Object", "tags": [], @@ -561,15 +653,15 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.RegisterShipperOpts", "text": "RegisterShipperOpts" }, " | undefined" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": false } @@ -577,7 +669,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.optIn", "type": "Function", "tags": [], @@ -588,19 +680,19 @@ "signature": [ "(optInConfig: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.OptInConfig", "text": "OptInConfig" }, ") => void" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.optIn.$1", "type": "Object", "tags": [], @@ -610,14 +702,14 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.OptInConfig", "text": "OptInConfig" } ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": true } @@ -625,7 +717,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.registerContextProvider", "type": "Function", "tags": [], @@ -636,19 +728,19 @@ "signature": [ "(contextProviderOpts: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.ContextProviderOpts", "text": "ContextProviderOpts" }, ") => void" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.registerContextProvider.$1", "type": "Object", "tags": [], @@ -658,15 +750,15 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.ContextProviderOpts", "text": "ContextProviderOpts" }, "" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": true } @@ -674,7 +766,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.removeContextProvider", "type": "Function", "tags": [], @@ -685,11 +777,11 @@ "signature": [ "(contextProviderName: string) => void" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.removeContextProvider.$1", "type": "string", "tags": [], @@ -700,7 +792,7 @@ "signature": [ "string" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "isRequired": true } @@ -708,7 +800,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IAnalyticsClient.telemetryCounter$", "type": "Object", "tags": [], @@ -720,22 +812,22 @@ "Observable", "<", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.TelemetryCounter", "text": "TelemetryCounter" }, ">" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IShipper", "type": "Interface", "tags": [], @@ -743,11 +835,11 @@ "description": [ "\nBasic structure of a Shipper" ], - "path": "packages/elastic-analytics/src/shippers/types.ts", + "path": "packages/analytics/client/src/shippers/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IShipper.reportEvents", "type": "Function", "tags": [], @@ -758,19 +850,19 @@ "signature": [ "(events: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.Event", "text": "Event" }, "[]) => void" ], - "path": "packages/elastic-analytics/src/shippers/types.ts", + "path": "packages/analytics/client/src/shippers/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IShipper.reportEvents.$1", "type": "Array", "tags": [], @@ -780,15 +872,15 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.Event", "text": "Event" }, "[]" ], - "path": "packages/elastic-analytics/src/shippers/types.ts", + "path": "packages/analytics/client/src/shippers/types.ts", "deprecated": false, "isRequired": true } @@ -796,7 +888,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IShipper.optIn", "type": "Function", "tags": [], @@ -807,11 +899,11 @@ "signature": [ "(isOptedIn: boolean) => void" ], - "path": "packages/elastic-analytics/src/shippers/types.ts", + "path": "packages/analytics/client/src/shippers/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IShipper.optIn.$1", "type": "boolean", "tags": [], @@ -822,7 +914,7 @@ "signature": [ "boolean" ], - "path": "packages/elastic-analytics/src/shippers/types.ts", + "path": "packages/analytics/client/src/shippers/types.ts", "deprecated": false, "isRequired": true } @@ -830,7 +922,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IShipper.extendContext", "type": "Function", "tags": [], @@ -841,19 +933,19 @@ "signature": [ "((newContext: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.EventContext", "text": "EventContext" }, ") => void) | undefined" ], - "path": "packages/elastic-analytics/src/shippers/types.ts", + "path": "packages/analytics/client/src/shippers/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IShipper.extendContext.$1", "type": "Object", "tags": [], @@ -861,14 +953,14 @@ "description": [], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.EventContext", "text": "EventContext" } ], - "path": "packages/elastic-analytics/src/shippers/types.ts", + "path": "packages/analytics/client/src/shippers/types.ts", "deprecated": false, "isRequired": true } @@ -876,7 +968,7 @@ "returnComment": [] }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.IShipper.telemetryCounter$", "type": "Object", "tags": [], @@ -888,22 +980,22 @@ "Observable", "<", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.TelemetryCounter", "text": "TelemetryCounter" }, "> | undefined" ], - "path": "packages/elastic-analytics/src/shippers/types.ts", + "path": "packages/analytics/client/src/shippers/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.OptInConfig", "type": "Interface", "tags": [], @@ -911,11 +1003,11 @@ "description": [ "\n" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.OptInConfig.global", "type": "Object", "tags": [], @@ -925,18 +1017,18 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.OptInConfigPerType", "text": "OptInConfigPerType" } ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.OptInConfig.event_types", "type": "Object", "tags": [], @@ -947,22 +1039,22 @@ "signature": [ "Record | undefined" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.OptInConfigPerType", "type": "Interface", "tags": [], @@ -970,11 +1062,11 @@ "description": [ "\nSets whether a type of event is enabled/disabled globally or per shipper." ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.OptInConfigPerType.enabled", "type": "boolean", "tags": [], @@ -982,11 +1074,11 @@ "description": [ "\nThe event type is globally enabled." ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.OptInConfigPerType.shippers", "type": "Object", "tags": [], @@ -997,14 +1089,14 @@ "signature": [ "Record | undefined" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.RegisterShipperOpts", "type": "Interface", "tags": [], @@ -1012,13 +1104,13 @@ "description": [ "\nOptional options to register a shipper" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaArray", "type": "Interface", "tags": [], @@ -1028,27 +1120,27 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaArray", "text": "SchemaArray" }, " extends ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaMeta", "text": "SchemaMeta" }, "" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaArray.type", "type": "string", "tags": [], @@ -1057,11 +1149,11 @@ "signature": [ "\"array\"" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaArray.items", "type": "CompoundType", "tags": [], @@ -1070,70 +1162,70 @@ "signature": [ "{ type: \"pass_through\"; _meta: { description: string; } & ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaMetaOptional", "text": "SchemaMetaOptional" }, "; } | (unknown extends Value ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaArray", "text": "SchemaArray" }, " | ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaObject", "text": "SchemaObject" }, " | ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaChildValue", "text": "SchemaChildValue" }, " : NonNullable extends (infer U)[] ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaArray", "text": "SchemaArray" }, " : NonNullable extends object ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaObject", "text": "SchemaObject" }, " : ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaChildValue", "text": "SchemaChildValue" }, ")" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaChildValue", "type": "Interface", "tags": [], @@ -1141,19 +1233,19 @@ "description": [], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaChildValue", "text": "SchemaChildValue" }, "" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaChildValue.type", "type": "Uncategorized", "tags": [], @@ -1162,34 +1254,34 @@ "signature": [ "NonNullable extends string ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.AllowedSchemaStringTypes", "text": "AllowedSchemaStringTypes" }, " : NonNullable extends number ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.AllowedSchemaNumberTypes", "text": "AllowedSchemaNumberTypes" }, " : NonNullable extends boolean ? \"boolean\" : ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.AllowedSchemaTypes", "text": "AllowedSchemaTypes" } ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaChildValue._meta", "type": "CompoundType", "tags": [], @@ -1198,22 +1290,22 @@ "signature": [ "{ description: string; } & ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaMetaOptional", "text": "SchemaMetaOptional" }, "" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaMeta", "type": "Interface", "tags": [], @@ -1223,19 +1315,19 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaMeta", "text": "SchemaMeta" }, "" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaMeta._meta", "type": "CompoundType", "tags": [], @@ -1244,22 +1336,22 @@ "signature": [ "({ description?: string | undefined; } & ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaMetaOptional", "text": "SchemaMetaOptional" }, ") | undefined" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaObject", "type": "Interface", "tags": [], @@ -1269,27 +1361,27 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaObject", "text": "SchemaObject" }, " extends ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaMeta", "text": "SchemaMeta" }, "" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaObject.properties", "type": "Object", "tags": [], @@ -1298,22 +1390,22 @@ "signature": [ "{ [Key in keyof Required]: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaValue", "text": "SchemaValue" }, "; }" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.ShipperClassConstructor", "type": "Interface", "tags": [], @@ -1323,19 +1415,19 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.ShipperClassConstructor", "text": "ShipperClassConstructor" }, "" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.ShipperClassConstructor.shipperName", "type": "string", "tags": [], @@ -1343,11 +1435,11 @@ "description": [ "\nThe shipper's unique name" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.ShipperClassConstructor.Unnamed", "type": "Any", "tags": [], @@ -1358,14 +1450,14 @@ "signature": [ "any" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false } ], "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.TelemetryCounter", "type": "Interface", "tags": [], @@ -1373,11 +1465,11 @@ "description": [ "\nShape of the events emitted by the telemetryCounter$ observable" ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.TelemetryCounter.type", "type": "Enum", "tags": [], @@ -1387,18 +1479,18 @@ ], "signature": [ { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.TelemetryCounterType", "text": "TelemetryCounterType" } ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.TelemetryCounter.source", "type": "string", "tags": [], @@ -1406,11 +1498,11 @@ "description": [ "\nWho emitted the event? It can be \"client\" or the name of the shipper." ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.TelemetryCounter.event_type", "type": "string", "tags": [], @@ -1418,11 +1510,11 @@ "description": [ "\nThe event type the success/failure/drop event refers to." ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.TelemetryCounter.code", "type": "string", "tags": [], @@ -1430,11 +1522,11 @@ "description": [ "\nCode to provide additional information about the success or failure. Examples are 200/400/504/ValidationError/UnknownError" ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.TelemetryCounter.count", "type": "number", "tags": [], @@ -1442,7 +1534,7 @@ "description": [ "\nThe number of events that this counter refers to." ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false } ], @@ -1451,7 +1543,7 @@ ], "enums": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.TelemetryCounterType", "type": "Enum", "tags": [], @@ -1459,14 +1551,14 @@ "description": [ "\nTypes of the Telemetry Counter: It allows to differentiate what happened to the events" ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false, "initialIsOpen": false } ], "misc": [ { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.AllowedSchemaBooleanTypes", "type": "Type", "tags": [], @@ -1477,12 +1569,12 @@ "signature": [ "\"boolean\"" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.AllowedSchemaNumberTypes", "type": "Type", "tags": [], @@ -1493,12 +1585,12 @@ "signature": [ "\"date\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"double\"" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.AllowedSchemaStringTypes", "type": "Type", "tags": [], @@ -1507,14 +1599,14 @@ "Types matching string values" ], "signature": [ - "\"keyword\" | \"date\" | \"text\"" + "\"keyword\" | \"text\" | \"date\"" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.AllowedSchemaTypes", "type": "Type", "tags": [], @@ -1523,14 +1615,14 @@ "\nPossible type values in the schema" ], "signature": [ - "\"boolean\" | \"keyword\" | \"date\" | \"text\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"double\"" + "\"boolean\" | \"keyword\" | \"text\" | \"date\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"double\"" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.EventType", "type": "Type", "tags": [], @@ -1541,12 +1633,12 @@ "signature": [ "string" ], - "path": "packages/elastic-analytics/src/events/types.ts", + "path": "packages/analytics/client/src/events/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.PossibleSchemaTypes", "type": "Type", "tags": [], @@ -1557,35 +1649,35 @@ "signature": [ "Value extends string ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.AllowedSchemaStringTypes", "text": "AllowedSchemaStringTypes" }, " : Value extends number ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.AllowedSchemaNumberTypes", "text": "AllowedSchemaNumberTypes" }, " : Value extends boolean ? \"boolean\" : ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.AllowedSchemaTypes", "text": "AllowedSchemaTypes" } ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.RootSchema", "type": "Type", "tags": [], @@ -1596,20 +1688,20 @@ "signature": [ "{ [Key in keyof Required]: ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaValue", "text": "SchemaValue" }, "; }" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaMetaOptional", "type": "Type", "tags": [], @@ -1620,12 +1712,12 @@ "signature": [ "unknown extends Value ? { optional?: boolean | undefined; } : undefined extends Value ? { optional: true; } : { optional?: false | undefined; }" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.SchemaValue", "type": "Type", "tags": [], @@ -1636,68 +1728,68 @@ "signature": [ "{ type: \"pass_through\"; _meta: { description: string; } & ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaMetaOptional", "text": "SchemaMetaOptional" }, "; } | (unknown extends Value ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaArray", "text": "SchemaArray" }, " | ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaObject", "text": "SchemaObject" }, " | ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaChildValue", "text": "SchemaChildValue" }, " : NonNullable extends (infer U)[] ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaArray", "text": "SchemaArray" }, " : NonNullable extends object ? ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaObject", "text": "SchemaObject" }, " : ", { - "pluginId": "@elastic/analytics", + "pluginId": "@kbn/analytics-client", "scope": "server", - "docId": "kibElasticAnalyticsPluginApi", + "docId": "kibKbnAnalyticsClientPluginApi", "section": "def-server.SchemaChildValue", "text": "SchemaChildValue" }, ")" ], - "path": "packages/elastic-analytics/src/schema/types.ts", + "path": "packages/analytics/client/src/schema/types.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/analytics", + "parentPluginId": "@kbn/analytics-client", "id": "def-server.ShipperName", "type": "Type", "tags": [], @@ -1708,7 +1800,7 @@ "signature": [ "string" ], - "path": "packages/elastic-analytics/src/analytics_client/types.ts", + "path": "packages/analytics/client/src/analytics_client/types.ts", "deprecated": false, "initialIsOpen": false } diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx new file mode 100644 index 0000000000000..e51ae9a874e9f --- /dev/null +++ b/api_docs/kbn_analytics_client.mdx @@ -0,0 +1,36 @@ +--- +id: kibKbnAnalyticsClientPluginApi +slug: /kibana-dev-docs/api/kbn-analytics-client +title: "@kbn/analytics-client" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/analytics-client plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] +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 kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 88 | 1 | 10 | 0 | + +## Server + +### Functions + + +### Interfaces + + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/kbn_analytics_shippers_fullstory.devdocs.json b/api_docs/kbn_analytics_shippers_fullstory.devdocs.json new file mode 100644 index 0000000000000..3f79e43e3a09c --- /dev/null +++ b/api_docs/kbn_analytics_shippers_fullstory.devdocs.json @@ -0,0 +1,314 @@ +{ + "id": "@kbn/analytics-shippers-fullstory", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper", + "type": "Class", + "tags": [], + "label": "FullStoryShipper", + "description": [], + "signature": [ + { + "pluginId": "@kbn/analytics-shippers-fullstory", + "scope": "server", + "docId": "kibKbnAnalyticsShippersFullstoryPluginApi", + "section": "def-server.FullStoryShipper", + "text": "FullStoryShipper" + }, + " implements ", + "IShipper" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.shipperName", + "type": "string", + "tags": [], + "label": "shipperName", + "description": [], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + { + "pluginId": "@kbn/analytics-shippers-fullstory", + "scope": "server", + "docId": "kibKbnAnalyticsShippersFullstoryPluginApi", + "section": "def-server.FullStorySnippetConfig", + "text": "FullStorySnippetConfig" + } + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "initContext", + "description": [], + "signature": [ + "AnalyticsClientInitContext" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.extendContext", + "type": "Function", + "tags": [], + "label": "extendContext", + "description": [], + "signature": [ + "(newContext: ", + "EventContext", + ") => void" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.extendContext.$1", + "type": "Object", + "tags": [], + "label": "newContext", + "description": [], + "signature": [ + "EventContext" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.optIn", + "type": "Function", + "tags": [], + "label": "optIn", + "description": [], + "signature": [ + "(isOptedIn: boolean) => void" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.optIn.$1", + "type": "boolean", + "tags": [], + "label": "isOptedIn", + "description": [], + "signature": [ + "boolean" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.reportEvents", + "type": "Function", + "tags": [], + "label": "reportEvents", + "description": [], + "signature": [ + "(events: ", + "Event", + "[]) => void" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipper.reportEvents.$1", + "type": "Array", + "tags": [], + "label": "events", + "description": [], + "signature": [ + "Event", + "[]" + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStorySnippetConfig", + "type": "Interface", + "tags": [], + "label": "FullStorySnippetConfig", + "description": [], + "path": "packages/analytics/shippers/fullstory/src/load_snippet.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStorySnippetConfig.fullStoryOrgId", + "type": "string", + "tags": [], + "label": "fullStoryOrgId", + "description": [ + "\nThe FullStory account id." + ], + "path": "packages/analytics/shippers/fullstory/src/load_snippet.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStorySnippetConfig.host", + "type": "string", + "tags": [], + "label": "host", + "description": [ + "\nThe host to send the data to. Used to overcome AdBlockers by using custom DNSs.\nIf not specified, it defaults to `fullstory.com`." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/shippers/fullstory/src/load_snippet.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStorySnippetConfig.scriptUrl", + "type": "string", + "tags": [], + "label": "scriptUrl", + "description": [ + "\nThe URL to load the FullStory client from. Falls back to `edge.fullstory.com/s/fs.js` if not specified." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/shippers/fullstory/src/load_snippet.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStorySnippetConfig.debug", + "type": "CompoundType", + "tags": [], + "label": "debug", + "description": [ + "\nWhether the debug logs should be printed to the console." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/analytics/shippers/fullstory/src/load_snippet.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStorySnippetConfig.namespace", + "type": "string", + "tags": [], + "label": "namespace", + "description": [ + "\nThe name of the variable where the API is stored: `window[namespace]`. Defaults to `FS`." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/analytics/shippers/fullstory/src/load_snippet.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/analytics-shippers-fullstory", + "id": "def-server.FullStoryShipperConfig", + "type": "Type", + "tags": [], + "label": "FullStoryShipperConfig", + "description": [], + "signature": [ + { + "pluginId": "@kbn/analytics-shippers-fullstory", + "scope": "server", + "docId": "kibKbnAnalyticsShippersFullstoryPluginApi", + "section": "def-server.FullStorySnippetConfig", + "text": "FullStorySnippetConfig" + } + ], + "path": "packages/analytics/shippers/fullstory/src/fullstory_shipper.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx new file mode 100644 index 0000000000000..326388928255e --- /dev/null +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -0,0 +1,33 @@ +--- +id: kibKbnAnalyticsShippersFullstoryPluginApi +slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory +title: "@kbn/analytics-shippers-fullstory" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/analytics-shippers-fullstory plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] +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 kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 18 | 0 | 13 | 0 | + +## Server + +### Classes + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 2ed7dbdbfda88..5e544916f7581 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/apm-config-loader plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] 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. --- diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 49fb44941d1dc..6b8bd73db26cd 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/apm-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] 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. --- diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 6acea95d20cc4..91196a5c6fff9 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/axe-config plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] 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. --- diff --git a/api_docs/kbn_bazel_packages.devdocs.json b/api_docs/kbn_bazel_packages.devdocs.json index babc54a49973c..993554aca7636 100644 --- a/api_docs/kbn_bazel_packages.devdocs.json +++ b/api_docs/kbn_bazel_packages.devdocs.json @@ -29,7 +29,7 @@ "tags": [], "label": "fromDir", "description": [ - "\nCreate a BazelPackage object from a package directory. Reads some files from the package and returns\na Promise for a BazelPackage instance" + "\nCreate a BazelPackage object from a package directory. Reads some files from the package and returns\na Promise for a BazelPackage instance." ], "signature": [ "(dir: string) => Promise<", @@ -154,6 +154,23 @@ "children": [], "returnComment": [] }, + { + "parentPluginId": "@kbn/bazel-packages", + "id": "def-server.BazelPackage.isDevOnly", + "type": "Function", + "tags": [], + "label": "isDevOnly", + "description": [ + "\nReturns true if the package is not intended to be in the build" + ], + "signature": [ + "() => boolean" + ], + "path": "packages/kbn-bazel-packages/src/bazel_package.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "@kbn/bazel-packages", "id": "def-server.BazelPackage.inspect.custom", @@ -176,17 +193,46 @@ } ], "functions": [ + { + "parentPluginId": "@kbn/bazel-packages", + "id": "def-server.discoverBazelPackageLocations", + "type": "Function", + "tags": [], + "label": "discoverBazelPackageLocations", + "description": [], + "signature": [ + "(repoRoot: string) => string[]" + ], + "path": "packages/kbn-bazel-packages/src/discover_packages.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/bazel-packages", + "id": "def-server.discoverBazelPackageLocations.$1", + "type": "string", + "tags": [], + "label": "repoRoot", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-bazel-packages/src/discover_packages.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/bazel-packages", "id": "def-server.discoverBazelPackages", "type": "Function", "tags": [], "label": "discoverBazelPackages", - "description": [ - "\nSearch the local Kibana repo for bazel packages and return an array of BazelPackage objects\nrepresenting each package found." - ], + "description": [], "signature": [ - "() => Promise<", + "(repoRoot: string) => Promise<", { "pluginId": "@kbn/bazel-packages", "scope": "server", @@ -198,6 +244,57 @@ ], "path": "packages/kbn-bazel-packages/src/discover_packages.ts", "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/bazel-packages", + "id": "def-server.discoverBazelPackages.$1", + "type": "string", + "tags": [], + "label": "repoRoot", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-bazel-packages/src/discover_packages.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/bazel-packages", + "id": "def-server.getAllBazelPackageDirs", + "type": "Function", + "tags": [], + "label": "getAllBazelPackageDirs", + "description": [ + "\nResolve all the BAZEL_PACKAGE_DIRS to absolute paths" + ], + "signature": [ + "() => EntryInternal[] & string[]" + ], + "path": "packages/kbn-bazel-packages/src/bazel_package_dirs.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/bazel-packages", + "id": "def-server.getAllRepoRelativeBazelPackageDirs", + "type": "Function", + "tags": [], + "label": "getAllRepoRelativeBazelPackageDirs", + "description": [ + "\nResolve all the BAZEL_PACKAGE_DIRS to repo-relative paths" + ], + "signature": [ + "() => string[]" + ], + "path": "packages/kbn-bazel-packages/src/bazel_package_dirs.ts", + "deprecated": false, "children": [], "returnComment": [], "initialIsOpen": false @@ -213,7 +310,7 @@ "tags": [], "label": "BAZEL_PACKAGE_DIRS", "description": [ - "\nThis is a list of repo-relative paths to directories containing packages. Do not\ninclude `**` in these, one or two `*` segments is acceptable, we need this search\nto be super fast so please avoid deep recursive searching.\n\n eg. src/vis-editors => would find a package at src/vis-editors/foo/package.json\n src/vis-editors/* => would find a package at src/vis-editors/foo/bar/package.json" + "\nThis is a list of repo-relative paths to directories containing packages. Do not\ninclude `**` in these, one or two `*` segments is acceptable, we need this search\nto be super fast so please avoid deep recursive searching.\n\n eg. src/vis_editors => would find a package at src/vis_editors/foo/package.json\n src/vis_editors/* => would find a package at src/vis_editors/foo/bar/package.json" ], "signature": [ "string[]" diff --git a/api_docs/kbn_bazel_packages.mdx b/api_docs/kbn_bazel_packages.mdx index 4cecba08dd051..a6dbbd7872270 100644 --- a/api_docs/kbn_bazel_packages.mdx +++ b/api_docs/kbn_bazel_packages.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-bazel-packages title: "@kbn/bazel-packages" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/bazel-packages plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-packages'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 12 | 0 | 5 | 1 | +| 18 | 0 | 9 | 1 | ## Server diff --git a/api_docs/kbn_bazel_runner.devdocs.json b/api_docs/kbn_bazel_runner.devdocs.json new file mode 100644 index 0000000000000..e5f5473949f65 --- /dev/null +++ b/api_docs/kbn_bazel_runner.devdocs.json @@ -0,0 +1,90 @@ +{ + "id": "@kbn/bazel-runner", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/bazel-runner", + "id": "def-server.runBazel", + "type": "Function", + "tags": [], + "label": "runBazel", + "description": [], + "signature": [ + "(options: BazelRunOptions) => Promise" + ], + "path": "packages/kbn-bazel-runner/src/bazel_runner.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/bazel-runner", + "id": "def-server.runBazel.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "BazelRunOptions" + ], + "path": "packages/kbn-bazel-runner/src/bazel_runner.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/bazel-runner", + "id": "def-server.runIBazel", + "type": "Function", + "tags": [], + "label": "runIBazel", + "description": [], + "signature": [ + "(options: BazelRunOptions) => Promise" + ], + "path": "packages/kbn-bazel-runner/src/bazel_runner.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/bazel-runner", + "id": "def-server.runIBazel.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "BazelRunOptions" + ], + "path": "packages/kbn-bazel-runner/src/bazel_runner.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_bazel_runner.mdx b/api_docs/kbn_bazel_runner.mdx new file mode 100644 index 0000000000000..e26e06d6d8241 --- /dev/null +++ b/api_docs/kbn_bazel_runner.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnBazelRunnerPluginApi +slug: /kibana-dev-docs/api/kbn-bazel-runner +title: "@kbn/bazel-runner" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/bazel-runner plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-runner'] +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 kbnBazelRunnerObj from './kbn_bazel_runner.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 4 | 0 | 4 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_ci_stats_client.devdocs.json b/api_docs/kbn_ci_stats_client.devdocs.json new file mode 100644 index 0000000000000..bc6b6ba628f44 --- /dev/null +++ b/api_docs/kbn_ci_stats_client.devdocs.json @@ -0,0 +1,158 @@ +{ + "id": "@kbn/ci-stats-client", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/ci-stats-client", + "id": "def-server.CiStatsClient", + "type": "Class", + "tags": [], + "label": "CiStatsClient", + "description": [], + "path": "packages/kbn-ci-stats-client/src/ci_stats_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-client", + "id": "def-server.CiStatsClient.fromEnv", + "type": "Function", + "tags": [], + "label": "fromEnv", + "description": [ + "\nCreate a CiStatsReporter by inspecting the ENV for the necessary config" + ], + "signature": [ + "(log: ", + "ToolingLog", + ") => ", + { + "pluginId": "@kbn/ci-stats-client", + "scope": "server", + "docId": "kibKbnCiStatsClientPluginApi", + "section": "def-server.CiStatsClient", + "text": "CiStatsClient" + } + ], + "path": "packages/kbn-ci-stats-client/src/ci_stats_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-client", + "id": "def-server.CiStatsClient.fromEnv.$1", + "type": "Object", + "tags": [], + "label": "log", + "description": [], + "signature": [ + "ToolingLog" + ], + "path": "packages/kbn-ci-stats-client/src/ci_stats_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-client", + "id": "def-server.CiStatsClient.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-ci-stats-client/src/ci_stats_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-client", + "id": "def-server.CiStatsClient.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "Config", + " | undefined" + ], + "path": "packages/kbn-ci-stats-client/src/ci_stats_client.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-client", + "id": "def-server.CiStatsClient.isEnabled", + "type": "Function", + "tags": [], + "label": "isEnabled", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "packages/kbn-ci-stats-client/src/ci_stats_client.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-client", + "id": "def-server.CiStatsClient.getLatestTestGroupStats", + "type": "Function", + "tags": [], + "label": "getLatestTestGroupStats", + "description": [], + "signature": [ + "(options: LatestTestGroupStatsOptions) => Promise" + ], + "path": "packages/kbn-ci-stats-client/src/ci_stats_client.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-client", + "id": "def-server.CiStatsClient.getLatestTestGroupStats.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "LatestTestGroupStatsOptions" + ], + "path": "packages/kbn-ci-stats-client/src/ci_stats_client.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_ci_stats_client.mdx b/api_docs/kbn_ci_stats_client.mdx new file mode 100644 index 0000000000000..7e081672825d1 --- /dev/null +++ b/api_docs/kbn_ci_stats_client.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCiStatsClientPluginApi +slug: /kibana-dev-docs/api/kbn-ci-stats-client +title: "@kbn/ci-stats-client" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/ci-stats-client plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-client'] +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 kbnCiStatsClientObj from './kbn_ci_stats_client.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 8 | 0 | 7 | 0 | + +## Server + +### Classes + + diff --git a/api_docs/kbn_ci_stats_core.devdocs.json b/api_docs/kbn_ci_stats_core.devdocs.json new file mode 100644 index 0000000000000..d088822187665 --- /dev/null +++ b/api_docs/kbn_ci_stats_core.devdocs.json @@ -0,0 +1,139 @@ +{ + "id": "@kbn/ci-stats-core", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/ci-stats-core", + "id": "def-server.parseConfig", + "type": "Function", + "tags": [], + "label": "parseConfig", + "description": [], + "signature": [ + "(log: ", + "ToolingLog", + ") => ", + { + "pluginId": "@kbn/ci-stats-core", + "scope": "server", + "docId": "kibKbnCiStatsCorePluginApi", + "section": "def-server.Config", + "text": "Config" + }, + " | undefined" + ], + "path": "packages/kbn-ci-stats-core/src/ci_stats_config.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-core", + "id": "def-server.parseConfig.$1", + "type": "Object", + "tags": [], + "label": "log", + "description": [], + "signature": [ + "ToolingLog" + ], + "path": "packages/kbn-ci-stats-core/src/ci_stats_config.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/ci-stats-core", + "id": "def-server.CiStatsMetadata", + "type": "Interface", + "tags": [], + "label": "CiStatsMetadata", + "description": [ + "Container for metadata that can be attached to different ci-stats objects" + ], + "path": "packages/kbn-ci-stats-core/src/ci_stats_metadata.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-core", + "id": "def-server.CiStatsMetadata.Unnamed", + "type": "IndexSignature", + "tags": [], + "label": "[key: string]: string | number | boolean | string[] | undefined", + "description": [ + "\nArbitrary key-value pairs which can be attached to CiStatsTiming and CiStatsMetric\nobjects stored in the ci-stats service" + ], + "signature": [ + "[key: string]: string | number | boolean | string[] | undefined" + ], + "path": "packages/kbn-ci-stats-core/src/ci_stats_metadata.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-core", + "id": "def-server.Config", + "type": "Interface", + "tags": [], + "label": "Config", + "description": [ + "\nInformation about how CiStatsReporter should talk to the ci-stats service. Normally\nit is read from a JSON environment variable using the `parseConfig()` function\nexported by this module." + ], + "path": "packages/kbn-ci-stats-core/src/ci_stats_config.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-core", + "id": "def-server.Config.apiToken", + "type": "string", + "tags": [], + "label": "apiToken", + "description": [ + "ApiToken necessary for writing build data to ci-stats service" + ], + "path": "packages/kbn-ci-stats-core/src/ci_stats_config.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-core", + "id": "def-server.Config.buildId", + "type": "string", + "tags": [], + "label": "buildId", + "description": [ + "\nuuid which should be obtained by first creating a build with the\nci-stats service and then passing it to all subsequent steps" + ], + "path": "packages/kbn-ci-stats-core/src/ci_stats_config.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/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx new file mode 100644 index 0000000000000..a309e10212e64 --- /dev/null +++ b/api_docs/kbn_ci_stats_core.mdx @@ -0,0 +1,30 @@ +--- +id: kibKbnCiStatsCorePluginApi +slug: /kibana-dev-docs/api/kbn-ci-stats-core +title: "@kbn/ci-stats-core" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/ci-stats-core plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] +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 kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 7 | 0 | 2 | 0 | + +## Server + +### Functions + + +### Interfaces + + diff --git a/api_docs/kbn_ci_stats_reporter.devdocs.json b/api_docs/kbn_ci_stats_reporter.devdocs.json new file mode 100644 index 0000000000000..f579d304c08db --- /dev/null +++ b/api_docs/kbn_ci_stats_reporter.devdocs.json @@ -0,0 +1,968 @@ +{ + "id": "@kbn/ci-stats-reporter", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter", + "type": "Class", + "tags": [], + "label": "CiStatsReporter", + "description": [ + "Object that helps report data to the ci-stats service" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.fromEnv", + "type": "Function", + "tags": [], + "label": "fromEnv", + "description": [ + "\nCreate a CiStatsReporter by inspecting the ENV for the necessary config" + ], + "signature": [ + "(log: ", + "ToolingLog", + ") => ", + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.CiStatsReporter", + "text": "CiStatsReporter" + } + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.fromEnv.$1", + "type": "Object", + "tags": [], + "label": "log", + "description": [], + "signature": [ + "ToolingLog" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "Config", + " | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "log", + "description": [], + "signature": [ + "ToolingLog" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.isEnabled", + "type": "Function", + "tags": [], + "label": "isEnabled", + "description": [ + "\nDetermine if CI_STATS is explicitly disabled by the environment. To determine\nif the CiStatsReporter has enough information in the environment to send metrics\nfor builds use #hasBuildConfig()." + ], + "signature": [ + "() => boolean" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.hasBuildConfig", + "type": "Function", + "tags": [], + "label": "hasBuildConfig", + "description": [ + "\nDetermines if the CiStatsReporter is disabled by the environment, or properly\nconfigured and able to send stats" + ], + "signature": [ + "() => boolean" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.timings", + "type": "Function", + "tags": [], + "label": "timings", + "description": [ + "\nReport timings data to the ci-stats service. If running in CI then the reporter\nwill include the buildId in the report with the access token, otherwise the timings\ndata will be recorded as anonymous timing data." + ], + "signature": [ + "(options: ", + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.TimingsOptions", + "text": "TimingsOptions" + }, + ") => Promise" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.timings.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.TimingsOptions", + "text": "TimingsOptions" + } + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.metrics", + "type": "Function", + "tags": [], + "label": "metrics", + "description": [ + "\nReport metrics data to the ci-stats service. If running outside of CI this method\ndoes nothing as metrics can only be reported when associated with a specific CI build." + ], + "signature": [ + "(metrics: ", + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.CiStatsMetric", + "text": "CiStatsMetric" + }, + "[], options?: ", + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.MetricsOptions", + "text": "MetricsOptions" + }, + " | undefined) => Promise" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.metrics.$1", + "type": "Array", + "tags": [], + "label": "metrics", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.CiStatsMetric", + "text": "CiStatsMetric" + }, + "[]" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.metrics.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.MetricsOptions", + "text": "MetricsOptions" + }, + " | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.reportTests", + "type": "Function", + "tags": [], + "label": "reportTests", + "description": [ + "\nSend test reports to ci-stats" + ], + "signature": [ + "({ group, testRuns }: ", + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.CiStatsReportTestsOptions", + "text": "CiStatsReportTestsOptions" + }, + ") => Promise" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.reportTests.$1", + "type": "Object", + "tags": [], + "label": "{ group, testRuns }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.CiStatsReportTestsOptions", + "text": "CiStatsReportTestsOptions" + } + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.getTimeReporter", + "type": "Function", + "tags": [], + "label": "getTimeReporter", + "description": [], + "signature": [ + "(log: ", + "ToolingLog", + ", group: string) => (startTime: number, id: string, meta: Record) => Promise" + ], + "path": "packages/kbn-ci-stats-reporter/src/report_time.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.getTimeReporter.$1", + "type": "Object", + "tags": [], + "label": "log", + "description": [], + "signature": [ + "ToolingLog" + ], + "path": "packages/kbn-ci-stats-reporter/src/report_time.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.getTimeReporter.$2", + "type": "string", + "tags": [], + "label": "group", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ci-stats-reporter/src/report_time.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsMetric", + "type": "Interface", + "tags": [], + "label": "CiStatsMetric", + "description": [ + "A ci-stats metric record" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsMetric.group", + "type": "string", + "tags": [], + "label": "group", + "description": [ + "Top-level categorization for the metric, e.g. \"page load bundle size\"" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsMetric.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "Specific sub-set of the \"group\", e.g. \"dashboard\"" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsMetric.value", + "type": "number", + "tags": [], + "label": "value", + "description": [ + "integer value recorded as the value of this metric" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsMetric.limit", + "type": "number", + "tags": [], + "label": "limit", + "description": [ + "optional limit which will generate an error on PRs when the metric exceeds the limit" + ], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsMetric.limitConfigPath", + "type": "string", + "tags": [], + "label": "limitConfigPath", + "description": [ + "\npath, relative to the repo, where the config file contianing limits\nis kept. Linked from PR comments instructing contributors how to fix\ntheir PRs." + ], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsMetric.meta", + "type": "Object", + "tags": [], + "label": "meta", + "description": [ + "Arbitrary key-value pairs which can be used for additional filtering/reporting" + ], + "signature": [ + "CiStatsMetadata", + " | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReportTestsOptions", + "type": "Interface", + "tags": [], + "label": "CiStatsReportTestsOptions", + "description": [ + "Options for reporting tests to ci-stats" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReportTestsOptions.group", + "type": "Object", + "tags": [], + "label": "group", + "description": [ + "\nInformation about the group of tests that were run" + ], + "signature": [ + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.CiStatsTestGroupInfo", + "text": "CiStatsTestGroupInfo" + } + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReportTestsOptions.testRuns", + "type": "Array", + "tags": [], + "label": "testRuns", + "description": [ + "\nInformation about each test that ran, including failure information" + ], + "signature": [ + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.CiStatsTestRun", + "text": "CiStatsTestRun" + }, + "[]" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestGroupInfo", + "type": "Interface", + "tags": [], + "label": "CiStatsTestGroupInfo", + "description": [], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestGroupInfo.startTime", + "type": "string", + "tags": [], + "label": "startTime", + "description": [ + "\nISO-8601 formatted datetime representing when the group of tests started running" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestGroupInfo.durationMs", + "type": "number", + "tags": [], + "label": "durationMs", + "description": [ + "\nThe number of miliseconds that the tests ran for" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestGroupInfo.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nThe type of tests run in this group, any value is valid but test groups are groupped by type in the UI so use something consistent" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestGroupInfo.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nThe name of this specific group (within the \"type\")" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestGroupInfo.meta", + "type": "Object", + "tags": [], + "label": "meta", + "description": [ + "\nArbitrary metadata associated with this group. We currently look for a ciGroup metadata property for highlighting that when appropriate" + ], + "signature": [ + "CiStatsMetadata" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun", + "type": "Interface", + "tags": [], + "label": "CiStatsTestRun", + "description": [], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.startTime", + "type": "string", + "tags": [], + "label": "startTime", + "description": [ + "\nISO-8601 formatted datetime representing when the tests started running" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.durationMs", + "type": "number", + "tags": [], + "label": "durationMs", + "description": [ + "\nDuration of the tests in milliseconds" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.seq", + "type": "number", + "tags": [], + "label": "seq", + "description": [ + "\nA sequence number, this is used to order the tests in a specific test run" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [ + "\nThe type of this \"test run\", usually this is just \"test\" but when reporting issues in hooks it can be set to the type of hook" + ], + "signature": [ + "\"after all hook\" | \"after each hook\" | \"before all hook\" | \"before each hook\" | \"test\"" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.result", + "type": "CompoundType", + "tags": [], + "label": "result", + "description": [ + "\n\"fail\", \"pass\" or \"skip\", the result of the tests" + ], + "signature": [ + "\"fail\" | \"pass\" | \"skip\"" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.suites", + "type": "Array", + "tags": [], + "label": "suites", + "description": [ + "\nThe list of suite names containing this test, the first being the outermost suite" + ], + "signature": [ + "string[]" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nThe name of this specific test run" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.file", + "type": "string", + "tags": [], + "label": "file", + "description": [ + "\nRelative path from the root of the repo contianing this test" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.error", + "type": "string", + "tags": [], + "label": "error", + "description": [ + "\nError message if the test failed" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.stdout", + "type": "string", + "tags": [], + "label": "stdout", + "description": [ + "\nDebug output/stdout produced by the test" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestRun.screenshots", + "type": "Array", + "tags": [], + "label": "screenshots", + "description": [ + "\nScreenshots captured during the test run" + ], + "signature": [ + "{ name: string; base64Png: string; }[] | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTiming", + "type": "Interface", + "tags": [], + "label": "CiStatsTiming", + "description": [ + "A ci-stats timing event" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTiming.group", + "type": "string", + "tags": [], + "label": "group", + "description": [ + "Top-level categorization for the timing, e.g. \"scripts/foo\", process type, etc." + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTiming.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "Specific timing (witin the \"group\" being tracked) e.g. \"total\"" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTiming.ms", + "type": "number", + "tags": [], + "label": "ms", + "description": [ + "time in milliseconds which should be recorded" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTiming.meta", + "type": "Object", + "tags": [], + "label": "meta", + "description": [ + "hash of key-value pairs which will be stored with the timing for additional filtering and reporting" + ], + "signature": [ + "CiStatsMetadata", + " | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.MetricsOptions", + "type": "Interface", + "tags": [], + "label": "MetricsOptions", + "description": [ + "Options for reporting metrics to ci-stats" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.MetricsOptions.defaultMeta", + "type": "Object", + "tags": [], + "label": "defaultMeta", + "description": [ + "Default metadata to add to each metric" + ], + "signature": [ + "CiStatsMetadata", + " | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.TimingsOptions", + "type": "Interface", + "tags": [], + "label": "TimingsOptions", + "description": [ + "Options for reporting timings to ci-stats" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.TimingsOptions.timings", + "type": "Array", + "tags": [], + "label": "timings", + "description": [ + "list of timings to record" + ], + "signature": [ + { + "pluginId": "@kbn/ci-stats-reporter", + "scope": "server", + "docId": "kibKbnCiStatsReporterPluginApi", + "section": "def-server.CiStatsTiming", + "text": "CiStatsTiming" + }, + "[]" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.TimingsOptions.upstreamBranch", + "type": "string", + "tags": [], + "label": "upstreamBranch", + "description": [ + "master, 7.x, etc, automatically detected from package.json if not specified" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.TimingsOptions.kibanaUuid", + "type": "CompoundType", + "tags": [], + "label": "kibanaUuid", + "description": [ + "value of data/uuid, automatically loaded if not specified" + ], + "signature": [ + "string | null | undefined" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestResult", + "type": "Type", + "tags": [], + "label": "CiStatsTestResult", + "description": [], + "signature": [ + "\"fail\" | \"pass\" | \"skip\"" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsTestType", + "type": "Type", + "tags": [], + "label": "CiStatsTestType", + "description": [], + "signature": [ + "\"after all hook\" | \"after each hook\" | \"before all hook\" | \"before each hook\" | \"test\"" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx new file mode 100644 index 0000000000000..0cc182de00726 --- /dev/null +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -0,0 +1,36 @@ +--- +id: kibKbnCiStatsReporterPluginApi +slug: /kibana-dev-docs/api/kbn-ci-stats-reporter +title: "@kbn/ci-stats-reporter" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/ci-stats-reporter plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] +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 kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 59 | 0 | 15 | 0 | + +## Server + +### Functions + + +### Classes + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index c3491abc76979..5f3a928f804bc 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/cli-dev-mode plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] 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. --- diff --git a/api_docs/kbn_coloring.devdocs.json b/api_docs/kbn_coloring.devdocs.json new file mode 100644 index 0000000000000..b6c631706bfaf --- /dev/null +++ b/api_docs/kbn_coloring.devdocs.json @@ -0,0 +1,1791 @@ +{ + "id": "@kbn/coloring", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.checkIsMaxContinuity", + "type": "Function", + "tags": [], + "label": "checkIsMaxContinuity", + "description": [], + "signature": [ + "(continuity: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteContinuity", + "text": "PaletteContinuity" + }, + " | undefined) => boolean" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.checkIsMaxContinuity.$1", + "type": "CompoundType", + "tags": [], + "label": "continuity", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteContinuity", + "text": "PaletteContinuity" + }, + " | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.checkIsMinContinuity", + "type": "Function", + "tags": [], + "label": "checkIsMinContinuity", + "description": [], + "signature": [ + "(continuity: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteContinuity", + "text": "PaletteContinuity" + }, + " | undefined) => boolean" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.checkIsMinContinuity.$1", + "type": "CompoundType", + "tags": [], + "label": "continuity", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteContinuity", + "text": "PaletteContinuity" + }, + " | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomizablePalette", + "type": "Function", + "tags": [], + "label": "CustomizablePalette", + "description": [ + "\nA `CustomizablePalette` component that is wrapped by the `withSuspense` HOC. This component can\nbe used directly by consumers and will load the `KibanaPageTemplateSolutionNavAvatarLazy` component lazily with\na predefined fallback and error boundary." + ], + "signature": [ + "React.ForwardRefExoticComponent<", + "CustomizablePaletteProps", + " & React.RefAttributes<{}>>" + ], + "path": "packages/kbn-coloring/src/shared_components/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomizablePalette.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomizablePaletteLazy", + "type": "Function", + "tags": [], + "label": "CustomizablePaletteLazy", + "description": [ + "\nThe Lazily-loaded `CustomizablePalette` component. Consumers should use `React.Suspense` or\nthe withSuspense` HOC to load this component." + ], + "signature": [ + "React.ExoticComponent<", + "CustomizablePaletteProps", + "> & { readonly _result: ({ palettes, activePalette, setPalette, dataBounds, showExtraActions, showRangeTypeSelector, disableSwitchingContinuity, }: ", + "CustomizablePaletteProps", + ") => JSX.Element; }" + ], + "path": "packages/kbn-coloring/src/shared_components/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomizablePaletteLazy.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getDataMinMax", + "type": "Function", + "tags": [], + "label": "getDataMinMax", + "description": [], + "signature": [ + "(rangeType: \"number\" | \"percent\" | undefined, dataBounds: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + }, + ") => { min: number; max: number; }" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getDataMinMax.$1", + "type": "CompoundType", + "tags": [], + "label": "rangeType", + "description": [], + "signature": [ + "\"number\" | \"percent\" | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getDataMinMax.$2", + "type": "Object", + "tags": [], + "label": "dataBounds", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getFallbackDataBounds", + "type": "Function", + "tags": [], + "label": "getFallbackDataBounds", + "description": [], + "signature": [ + "(rangeType?: \"number\" | \"percent\" | undefined) => ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getFallbackDataBounds.$1", + "type": "CompoundType", + "tags": [], + "label": "rangeType", + "description": [], + "signature": [ + "\"number\" | \"percent\" | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getPaletteStops", + "type": "Function", + "tags": [], + "label": "getPaletteStops", + "description": [ + "\nThis is a generic function to compute stops from the current parameters." + ], + "signature": [ + "(palettes: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + }, + ", activePaletteParams: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.CustomPaletteParams", + "text": "CustomPaletteParams" + }, + ", {\n prevPalette,\n dataBounds,\n mapFromMinValue,\n defaultPaletteName,\n }: { prevPalette?: string | undefined; dataBounds: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + }, + "; mapFromMinValue?: boolean | undefined; defaultPaletteName?: string | undefined; }) => { stop: number; color: string; }[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getPaletteStops.$1", + "type": "Object", + "tags": [], + "label": "palettes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getPaletteStops.$2", + "type": "Object", + "tags": [], + "label": "activePaletteParams", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.CustomPaletteParams", + "text": "CustomPaletteParams" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getPaletteStops.$3", + "type": "Object", + "tags": [], + "label": "{\n prevPalette,\n dataBounds,\n mapFromMinValue,\n defaultPaletteName,\n }", + "description": [], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getPaletteStops.$3.prevPalette", + "type": "string", + "tags": [], + "label": "prevPalette", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getPaletteStops.$3.dataBounds", + "type": "Object", + "tags": [], + "label": "dataBounds", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getPaletteStops.$3.mapFromMinValue", + "type": "CompoundType", + "tags": [], + "label": "mapFromMinValue", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getPaletteStops.$3.defaultPaletteName", + "type": "string", + "tags": [], + "label": "defaultPaletteName", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getStepValue", + "type": "Function", + "tags": [], + "label": "getStepValue", + "description": [], + "signature": [ + "(colorStops: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[], newColorStops: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[], max: number) => number" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getStepValue.$1", + "type": "Array", + "tags": [], + "label": "colorStops", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getStepValue.$2", + "type": "Array", + "tags": [], + "label": "newColorStops", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getStepValue.$3", + "type": "number", + "tags": [], + "label": "max", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.remapStopsByNewInterval", + "type": "Function", + "tags": [], + "label": "remapStopsByNewInterval", + "description": [], + "signature": [ + "(controlStops: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[], {\n newInterval,\n oldInterval,\n newMin,\n oldMin,\n }: { newInterval: number; oldInterval: number; newMin: number; oldMin: number; }) => { color: string; stop: number; }[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.remapStopsByNewInterval.$1", + "type": "Array", + "tags": [], + "label": "controlStops", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.remapStopsByNewInterval.$2", + "type": "Object", + "tags": [], + "label": "{\n newInterval,\n oldInterval,\n newMin,\n oldMin,\n }", + "description": [], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.remapStopsByNewInterval.$2.newInterval", + "type": "number", + "tags": [], + "label": "newInterval", + "description": [], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.remapStopsByNewInterval.$2.oldInterval", + "type": "number", + "tags": [], + "label": "oldInterval", + "description": [], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.remapStopsByNewInterval.$2.newMin", + "type": "number", + "tags": [], + "label": "newMin", + "description": [], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.remapStopsByNewInterval.$2.oldMin", + "type": "number", + "tags": [], + "label": "oldMin", + "description": [], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.reversePalette", + "type": "Function", + "tags": [], + "label": "reversePalette", + "description": [], + "signature": [ + "(paletteColorRepresentation: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[]) => { color: string; stop: number; }[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.reversePalette.$1", + "type": "Array", + "tags": [], + "label": "paletteColorRepresentation", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.roundValue", + "type": "Function", + "tags": [], + "label": "roundValue", + "description": [], + "signature": [ + "(value: number, fractionDigits: number) => number" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.roundValue.$1", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.roundValue.$2", + "type": "number", + "tags": [], + "label": "fractionDigits", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.shiftPalette", + "type": "Function", + "tags": [], + "label": "shiftPalette", + "description": [], + "signature": [ + "(stops: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[], max: number) => { stop: number; color: string; }[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.shiftPalette.$1", + "type": "Array", + "tags": [], + "label": "stops", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.shiftPalette.$2", + "type": "number", + "tags": [], + "label": "max", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.ChartColorConfiguration", + "type": "Interface", + "tags": [], + "label": "ChartColorConfiguration", + "description": [ + "\nInformation about the structure of a chart to determine the color of a series within it." + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.ChartColorConfiguration.totalSeries", + "type": "number", + "tags": [], + "label": "totalSeries", + "description": [ + "\nOverall number of series in the current chart" + ], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.ChartColorConfiguration.maxDepth", + "type": "number", + "tags": [], + "label": "maxDepth", + "description": [ + "\nMax nesting depth of the series tree" + ], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.ChartColorConfiguration.behindText", + "type": "CompoundType", + "tags": [], + "label": "behindText", + "description": [ + "\nFlag whether the color will be used behind text. The palette can use this information to\nadjust colors for better a11y. Might be ignored depending on the palette." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.ChartColorConfiguration.syncColors", + "type": "CompoundType", + "tags": [], + "label": "syncColors", + "description": [ + "\nFlag whether a color assignment to a given key should be remembered and re-used the next time the key shows up.\nThis setting might be ignored based on the palette." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.ColorStop", + "type": "Interface", + "tags": [], + "label": "ColorStop", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.ColorStop.color", + "type": "string", + "tags": [], + "label": "color", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.ColorStop.stop", + "type": "number", + "tags": [], + "label": "stop", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams", + "type": "Interface", + "tags": [], + "label": "CustomPaletteParams", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.reverse", + "type": "CompoundType", + "tags": [], + "label": "reverse", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.rangeType", + "type": "CompoundType", + "tags": [], + "label": "rangeType", + "description": [], + "signature": [ + "\"number\" | \"percent\" | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.continuity", + "type": "CompoundType", + "tags": [], + "label": "continuity", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteContinuity", + "text": "PaletteContinuity" + }, + " | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.progression", + "type": "string", + "tags": [], + "label": "progression", + "description": [], + "signature": [ + "\"fixed\" | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.rangeMin", + "type": "number", + "tags": [], + "label": "rangeMin", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.rangeMax", + "type": "number", + "tags": [], + "label": "rangeMax", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.stops", + "type": "Array", + "tags": [], + "label": "stops", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[] | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.colorStops", + "type": "Array", + "tags": [], + "label": "colorStops", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[] | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.steps", + "type": "number", + "tags": [], + "label": "steps", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CustomPaletteParams.maxSteps", + "type": "number", + "tags": [], + "label": "maxSteps", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DataBounds", + "type": "Interface", + "tags": [], + "label": "DataBounds", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DataBounds.min", + "type": "number", + "tags": [], + "label": "min", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DataBounds.max", + "type": "number", + "tags": [], + "label": "max", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DataBounds.fallback", + "type": "CompoundType", + "tags": [], + "label": "fallback", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition", + "type": "Interface", + "tags": [], + "label": "PaletteDefinition", + "description": [ + "\nDefinition of a global palette.\n\nA palette controls the appearance of Lens charts on an editor level.\nThe palette wont get reset when switching charts.\n\nA palette can hold internal state (e.g. for customizations) and also includes\nan editor component to edit the internal state." + ], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteDefinition", + "text": "PaletteDefinition" + }, + "" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nUnique id of the palette (this will be persisted along with the visualization state)" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.title", + "type": "string", + "tags": [], + "label": "title", + "description": [ + "\nUser facing title (should be i18n-ized)" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.internal", + "type": "CompoundType", + "tags": [], + "label": "internal", + "description": [ + "\nFlag indicating whether users should be able to pick this palette manually." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.toExpression", + "type": "Function", + "tags": [], + "label": "toExpression", + "description": [ + "\nSerialize the internal state of the palette into an expression function.\nThis function should be used to pass the palette to the expression function applying color and other styles" + ], + "signature": [ + "(state?: T | undefined) => ", + "Ast" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.toExpression.$1", + "type": "Uncategorized", + "tags": [], + "label": "state", + "description": [ + "The internal state of the palette" + ], + "signature": [ + "T | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getCategoricalColor", + "type": "Function", + "tags": [], + "label": "getCategoricalColor", + "description": [ + "\nColor a series according to the internal rules of the palette." + ], + "signature": [ + "(series: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.SeriesLayer", + "text": "SeriesLayer" + }, + "[], chartConfiguration?: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ChartColorConfiguration", + "text": "ChartColorConfiguration" + }, + " | undefined, state?: T | undefined) => string | null" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getCategoricalColor.$1", + "type": "Array", + "tags": [], + "label": "series", + "description": [ + "The current series along with its ancestors." + ], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.SeriesLayer", + "text": "SeriesLayer" + }, + "[]" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getCategoricalColor.$2", + "type": "Object", + "tags": [], + "label": "chartConfiguration", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ChartColorConfiguration", + "text": "ChartColorConfiguration" + }, + " | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getCategoricalColor.$3", + "type": "Uncategorized", + "tags": [], + "label": "state", + "description": [ + "The internal state of the palette" + ], + "signature": [ + "T | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getCategoricalColors", + "type": "Function", + "tags": [], + "label": "getCategoricalColors", + "description": [ + "\nGet a spectrum of colors of the current palette.\nThis can be used if the chart wants to control color assignment locally." + ], + "signature": [ + "(size: number, state?: T | undefined) => string[]" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getCategoricalColors.$1", + "type": "number", + "tags": [], + "label": "size", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getCategoricalColors.$2", + "type": "Uncategorized", + "tags": [], + "label": "state", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.canDynamicColoring", + "type": "CompoundType", + "tags": [], + "label": "canDynamicColoring", + "description": [ + "\nDefine whether a palette supports dynamic coloring (i.e. gradient colors mapped to number values)" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getColorForValue", + "type": "Function", + "tags": [], + "label": "getColorForValue", + "description": [ + "\nGet the assigned color for the given value based on its data domain and state settings.\nThis can be used for dynamic coloring based on uniform color distribution or custom stops." + ], + "signature": [ + "((value: number | undefined, state: T, { min, max }: { min: number; max: number; }) => string | undefined) | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getColorForValue.$1", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getColorForValue.$2", + "type": "Uncategorized", + "tags": [], + "label": "state", + "description": [], + "signature": [ + "T" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getColorForValue.$3", + "type": "Object", + "tags": [], + "label": "{ min, max }", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getColorForValue.$3.min", + "type": "number", + "tags": [], + "label": "min", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteDefinition.getColorForValue.$3.max", + "type": "number", + "tags": [], + "label": "max", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteOutput", + "type": "Interface", + "tags": [], + "label": "PaletteOutput", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteOutput", + "text": "PaletteOutput" + }, + "" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteOutput.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"system_palette\" | \"palette\"" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteOutput.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteOutput.params", + "type": "Uncategorized", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteRegistry", + "type": "Interface", + "tags": [], + "label": "PaletteRegistry", + "description": [], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteRegistry.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "(name: string) => ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteDefinition", + "text": "PaletteDefinition" + }, + "" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteRegistry.get.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteRegistry.getAll", + "type": "Function", + "tags": [], + "label": "getAll", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteDefinition", + "text": "PaletteDefinition" + }, + "[]" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.SeriesLayer", + "type": "Interface", + "tags": [], + "label": "SeriesLayer", + "description": [ + "\nInformation about a series in a chart used to determine its color.\nSeries layers can be nested, this means each series layer can have an ancestor." + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.SeriesLayer.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nName of the series (can be used for lookup-based coloring)" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.SeriesLayer.rankAtDepth", + "type": "number", + "tags": [], + "label": "rankAtDepth", + "description": [ + "\nRank of the series compared to siblings with the same ancestor" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.SeriesLayer.totalSeriesAtDepth", + "type": "number", + "tags": [], + "label": "totalSeriesAtDepth", + "description": [ + "\nTotal number of series with the same ancestor" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.CUSTOM_PALETTE", + "type": "string", + "tags": [], + "label": "CUSTOM_PALETTE", + "description": [], + "signature": [ + "\"custom\"" + ], + "path": "packages/kbn-coloring/src/palettes/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DEFAULT_COLOR_STEPS", + "type": "number", + "tags": [], + "label": "DEFAULT_COLOR_STEPS", + "description": [], + "signature": [ + "5" + ], + "path": "packages/kbn-coloring/src/palettes/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DEFAULT_CONTINUITY", + "type": "string", + "tags": [], + "label": "DEFAULT_CONTINUITY", + "description": [], + "signature": [ + "\"above\"" + ], + "path": "packages/kbn-coloring/src/palettes/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DEFAULT_MAX_STOP", + "type": "number", + "tags": [], + "label": "DEFAULT_MAX_STOP", + "description": [], + "signature": [ + "100" + ], + "path": "packages/kbn-coloring/src/palettes/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DEFAULT_MIN_STOP", + "type": "number", + "tags": [], + "label": "DEFAULT_MIN_STOP", + "description": [], + "signature": [ + "0" + ], + "path": "packages/kbn-coloring/src/palettes/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DEFAULT_PALETTE_NAME", + "type": "string", + "tags": [], + "label": "DEFAULT_PALETTE_NAME", + "description": [], + "signature": [ + "\"positive\"" + ], + "path": "packages/kbn-coloring/src/palettes/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.DEFAULT_RANGE_TYPE", + "type": "string", + "tags": [], + "label": "DEFAULT_RANGE_TYPE", + "description": [], + "signature": [ + "\"percent\"" + ], + "path": "packages/kbn-coloring/src/palettes/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.FIXED_PROGRESSION", + "type": "string", + "tags": [], + "label": "FIXED_PROGRESSION", + "description": [], + "signature": [ + "\"fixed\"" + ], + "path": "packages/kbn-coloring/src/palettes/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.PaletteContinuity", + "type": "Type", + "tags": [], + "label": "PaletteContinuity", + "description": [], + "signature": [ + "\"above\" | \"below\" | \"none\" | \"all\"" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.RequiredPaletteParamTypes", + "type": "Type", + "tags": [], + "label": "RequiredPaletteParamTypes", + "description": [], + "signature": [ + "{ name: string; reverse: boolean; rangeMin: number; rangeType: \"number\" | \"percent\"; continuity: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteContinuity", + "text": "PaletteContinuity" + }, + "; progression: \"fixed\"; rangeMax: number; stops: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[]; colorStops: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[]; steps: number; maxSteps?: number | undefined; }" + ], + "path": "packages/kbn-coloring/src/palettes/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx new file mode 100644 index 0000000000000..6138cd2a95837 --- /dev/null +++ b/api_docs/kbn_coloring.mdx @@ -0,0 +1,33 @@ +--- +id: kibKbnColoringPluginApi +slug: /kibana-dev-docs/api/kbn-coloring +title: "@kbn/coloring" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/coloring plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] +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 kbnColoringObj from './kbn_coloring.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 106 | 0 | 80 | 1 | + +## Common + +### Functions + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_config.devdocs.json b/api_docs/kbn_config.devdocs.json index 383df777d15f6..f87e73f517cbe 100644 --- a/api_docs/kbn_config.devdocs.json +++ b/api_docs/kbn_config.devdocs.json @@ -55,37 +55,6 @@ } ], "functions": [ - { - "parentPluginId": "@kbn/config", - "id": "def-server.getPluginSearchPaths", - "type": "Function", - "tags": [], - "label": "getPluginSearchPaths", - "description": [], - "signature": [ - "({ rootDir, oss, examples }: SearchOptions) => string[]" - ], - "path": "packages/kbn-config/src/plugins/plugin_search_paths.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/config", - "id": "def-server.getPluginSearchPaths.$1", - "type": "Object", - "tags": [], - "label": "{ rootDir, oss, examples }", - "description": [], - "signature": [ - "SearchOptions" - ], - "path": "packages/kbn-config/src/plugins/plugin_search_paths.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/config", "id": "def-server.hasConfigPathIntersection", diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index ae52de0962bce..1ce3218bfedb3 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 66 | 0 | 46 | 2 | +| 64 | 0 | 44 | 2 | ## Server diff --git a/api_docs/kbn_config_schema.devdocs.json b/api_docs/kbn_config_schema.devdocs.json index b2c350d51f4ce..b765279edb5d2 100644 --- a/api_docs/kbn_config_schema.devdocs.json +++ b/api_docs/kbn_config_schema.devdocs.json @@ -1031,6 +1031,29 @@ ], "returnComment": [] }, + { + "parentPluginId": "@kbn/config-schema", + "id": "def-server.Type.getSchemaStructure", + "type": "Function", + "tags": [], + "label": "getSchemaStructure", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/config-schema", + "scope": "server", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-server.SchemaStructureEntry", + "text": "SchemaStructureEntry" + }, + "[]" + ], + "path": "packages/kbn-config-schema/src/types/type.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "@kbn/config-schema", "id": "def-server.Type.handleError", @@ -1207,7 +1230,44 @@ "initialIsOpen": false } ], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "@kbn/config-schema", + "id": "def-server.SchemaStructureEntry", + "type": "Interface", + "tags": [], + "label": "SchemaStructureEntry", + "description": [], + "path": "packages/kbn-config-schema/src/types/type.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/config-schema", + "id": "def-server.SchemaStructureEntry.path", + "type": "Array", + "tags": [], + "label": "path", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-config-schema/src/types/type.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/config-schema", + "id": "def-server.SchemaStructureEntry.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "packages/kbn-config-schema/src/types/type.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], "enums": [], "misc": [ { diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 2eebafa2279fe..784035631256b 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config-schema plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 125 | 3 | 123 | 17 | +| 129 | 3 | 127 | 17 | ## Server @@ -31,6 +31,9 @@ Contact [Owner missing] for questions regarding this plugin. ### Classes +### Interfaces + + ### Consts, variables and types diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index de871c1b01bbd..f044e9213163c 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/crypto plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] 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. --- diff --git a/api_docs/elastic_datemath.devdocs.json b/api_docs/kbn_datemath.devdocs.json similarity index 71% rename from api_docs/elastic_datemath.devdocs.json rename to api_docs/kbn_datemath.devdocs.json index 166f816481b33..4905365143524 100644 --- a/api_docs/elastic_datemath.devdocs.json +++ b/api_docs/kbn_datemath.devdocs.json @@ -1,5 +1,5 @@ { - "id": "@elastic/datemath", + "id": "@kbn/datemath", "client": { "classes": [], "functions": [], @@ -12,7 +12,7 @@ "classes": [], "functions": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.parse", "type": "Function", "tags": [], @@ -21,11 +21,11 @@ "signature": [ "(input: string, options: { roundUp?: boolean | undefined; momentInstance?: typeof moment | undefined; forceNow?: Date | undefined; }) => moment.Moment | undefined" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.parse.$1", "type": "string", "tags": [], @@ -34,22 +34,22 @@ "signature": [ "string" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.parse.$2", "type": "Object", "tags": [], "label": "options", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.parse.$2.roundUp", "type": "CompoundType", "tags": [], @@ -58,11 +58,11 @@ "signature": [ "boolean | undefined" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.parse.$2.momentInstance", "type": "Function", "tags": [], @@ -71,11 +71,11 @@ "signature": [ "typeof moment | undefined" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.parse.$2.forceNow", "type": "Object", "tags": [], @@ -84,7 +84,7 @@ "signature": [ "Date | undefined" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] @@ -98,7 +98,7 @@ "enums": [], "misc": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.Unit", "type": "Type", "tags": [], @@ -107,12 +107,12 @@ "signature": [ "\"y\" | \"M\" | \"w\" | \"d\" | \"h\" | \"m\" | \"s\" | \"ms\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.units", "type": "Array", "tags": [], @@ -120,20 +120,20 @@ "description": [], "signature": [ { - "pluginId": "@elastic/datemath", + "pluginId": "@kbn/datemath", "scope": "server", - "docId": "kibElasticDatemathPluginApi", + "docId": "kibKbnDatemathPluginApi", "section": "def-server.Unit", "text": "Unit" }, "[]" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsAsc", "type": "Array", "tags": [], @@ -141,20 +141,20 @@ "description": [], "signature": [ { - "pluginId": "@elastic/datemath", + "pluginId": "@kbn/datemath", "scope": "server", - "docId": "kibElasticDatemathPluginApi", + "docId": "kibKbnDatemathPluginApi", "section": "def-server.Unit", "text": "Unit" }, "[]" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsDesc", "type": "Array", "tags": [], @@ -162,20 +162,20 @@ "description": [], "signature": [ { - "pluginId": "@elastic/datemath", + "pluginId": "@kbn/datemath", "scope": "server", - "docId": "kibElasticDatemathPluginApi", + "docId": "kibKbnDatemathPluginApi", "section": "def-server.Unit", "text": "Unit" }, "[]" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "initialIsOpen": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.UnitsMap", "type": "Type", "tags": [], @@ -184,44 +184,44 @@ "signature": [ "{ y: { weight: number; type: \"calendar\" | \"fixed\" | \"mixed\"; base: number; }; M: { weight: number; type: \"calendar\" | \"fixed\" | \"mixed\"; base: number; }; w: { weight: number; type: \"calendar\" | \"fixed\" | \"mixed\"; base: number; }; d: { weight: number; type: \"calendar\" | \"fixed\" | \"mixed\"; base: number; }; h: { weight: number; type: \"calendar\" | \"fixed\" | \"mixed\"; base: number; }; m: { weight: number; type: \"calendar\" | \"fixed\" | \"mixed\"; base: number; }; s: { weight: number; type: \"calendar\" | \"fixed\" | \"mixed\"; base: number; }; ms: { weight: number; type: \"calendar\" | \"fixed\" | \"mixed\"; base: number; }; }" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "initialIsOpen": false } ], "objects": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap", "type": "Object", "tags": [], "label": "unitsMap", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.ms", "type": "Object", "tags": [], "label": "ms", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.ms.weight", "type": "number", "tags": [], "label": "weight", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.ms.type", "type": "string", "tags": [], @@ -230,43 +230,43 @@ "signature": [ "\"fixed\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.ms.base", "type": "number", "tags": [], "label": "base", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.s", "type": "Object", "tags": [], "label": "s", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.s.weight", "type": "number", "tags": [], "label": "weight", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.s.type", "type": "string", "tags": [], @@ -275,43 +275,43 @@ "signature": [ "\"fixed\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.s.base", "type": "number", "tags": [], "label": "base", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.m", "type": "Object", "tags": [], "label": "m", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.m.weight", "type": "number", "tags": [], "label": "weight", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.m.type", "type": "string", "tags": [], @@ -320,43 +320,43 @@ "signature": [ "\"mixed\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.m.base", "type": "number", "tags": [], "label": "base", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.h", "type": "Object", "tags": [], "label": "h", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.h.weight", "type": "number", "tags": [], "label": "weight", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.h.type", "type": "string", "tags": [], @@ -365,43 +365,43 @@ "signature": [ "\"mixed\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.h.base", "type": "number", "tags": [], "label": "base", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.d", "type": "Object", "tags": [], "label": "d", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.d.weight", "type": "number", "tags": [], "label": "weight", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.d.type", "type": "string", "tags": [], @@ -410,43 +410,43 @@ "signature": [ "\"mixed\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.d.base", "type": "number", "tags": [], "label": "base", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.w", "type": "Object", "tags": [], "label": "w", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.w.weight", "type": "number", "tags": [], "label": "weight", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.w.type", "type": "string", "tags": [], @@ -455,43 +455,43 @@ "signature": [ "\"calendar\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.w.base", "type": "number", "tags": [], "label": "base", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.M", "type": "Object", "tags": [], "label": "M", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.M.weight", "type": "number", "tags": [], "label": "weight", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.M.type", "type": "string", "tags": [], @@ -500,23 +500,23 @@ "signature": [ "\"calendar\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.M.base", "type": "number", "tags": [], "label": "base", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.y", "type": "Object", "tags": [], @@ -524,21 +524,21 @@ "description": [ "// q: { weight: 8, type: 'calendar' }, // TODO: moment duration does not support quarter" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false, "children": [ { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.y.weight", "type": "number", "tags": [], "label": "weight", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.y.type", "type": "string", "tags": [], @@ -547,17 +547,17 @@ "signature": [ "\"calendar\"" ], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false }, { - "parentPluginId": "@elastic/datemath", + "parentPluginId": "@kbn/datemath", "id": "def-server.unitsMap.y.base", "type": "number", "tags": [], "label": "base", "description": [], - "path": "packages/elastic-datemath/src/index.ts", + "path": "packages/kbn-datemath/src/index.ts", "deprecated": false } ] diff --git a/api_docs/elastic_datemath.mdx b/api_docs/kbn_datemath.mdx similarity index 54% rename from api_docs/elastic_datemath.mdx rename to api_docs/kbn_datemath.mdx index 14fd7fef84034..782b942ba952b 100644 --- a/api_docs/elastic_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -1,14 +1,14 @@ --- -id: kibElasticDatemathPluginApi -slug: /kibana-dev-docs/api/elastic-datemath -title: "@elastic/datemath" +id: kibKbnDatemathPluginApi +slug: /kibana-dev-docs/api/kbn-datemath +title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @elastic/datemath plugin -date: 2022-04-05 -tags: ['contributor', 'dev', 'apidocs', 'kibana', '@elastic/datemath'] +summary: API docs for the @kbn/datemath plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] 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 elasticDatemathObj from './elastic_datemath.devdocs.json'; +import kbnDatemathObj from './kbn_datemath.devdocs.json'; elasticsearch datemath parser, used in kibana @@ -23,11 +23,11 @@ Contact [Owner missing] for questions regarding this plugin. ## Server ### Objects - + ### Functions - + ### Consts, variables and types - + diff --git a/api_docs/kbn_dev_utils.devdocs.json b/api_docs/kbn_dev_utils.devdocs.json index c45d0515c0bb4..7ffb74a9f9220 100644 --- a/api_docs/kbn_dev_utils.devdocs.json +++ b/api_docs/kbn_dev_utils.devdocs.json @@ -12,61 +12,42 @@ "classes": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsClient", + "id": "def-server.ProcRunner", "type": "Class", - "tags": [], - "label": "CiStatsClient", - "description": [], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts", + "tags": [ + "class" + ], + "label": "ProcRunner", + "description": [ + "\n Helper for starting and managing processes. In many ways it resembles the\n API from `grunt_run`, processes are named and can be started, waited for,\n backgrounded once they log something matching a RegExp...\n" + ], + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsClient.fromEnv", + "id": "def-server.ProcRunner.Unnamed", "type": "Function", "tags": [], - "label": "fromEnv", - "description": [ - "\nCreate a CiStatsReporter by inspecting the ENV for the necessary config" - ], + "label": "Constructor", + "description": [], "signature": [ - "(log: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - }, - ") => ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsClient", - "text": "CiStatsClient" - } + "any" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts", + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsClient.fromEnv.$1", + "id": "def-server.ProcRunner.Unnamed.$1", "type": "Object", "tags": [], "label": "log", "description": [], "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - } + "ToolingLog" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts", + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, "isRequired": true } @@ -75,157 +56,181 @@ }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsClient.Unnamed", + "id": "def-server.ProcRunner.run", "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], + "tags": [ + "property", + "property", + "property", + "property", + "return" + ], + "label": "run", + "description": [ + "\n Start a process, tracking it by `name`" + ], "signature": [ - "any" + "(name: string, options: RunOptions) => Promise" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts", + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsClient.Unnamed.$1", + "id": "def-server.ProcRunner.run.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.ProcRunner.run.$2", "type": "Object", "tags": [], - "label": "config", + "label": "options", "description": [], "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Config", - "text": "Config" - }, - " | undefined" + "RunOptions" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts", + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsClient.isEnabled", + "id": "def-server.ProcRunner.stop", "type": "Function", "tags": [], - "label": "isEnabled", - "description": [], - "signature": [ - "() => boolean" + "label": "stop", + "description": [ + "\n Stop a named proc" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsClient.getLatestTestGroupStats", - "type": "Function", - "tags": [], - "label": "getLatestTestGroupStats", - "description": [], "signature": [ - "(options: LatestTestGroupStatsOptions) => Promise" + "(name: string, signal?: NodeJS.Signals) => Promise" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts", + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsClient.getLatestTestGroupStats.$1", - "type": "Object", + "id": "def-server.ProcRunner.stop.$1", + "type": "string", "tags": [], - "label": "options", + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.ProcRunner.stop.$2", + "type": "CompoundType", + "tags": [], + "label": "signal", "description": [], "signature": [ - "LatestTestGroupStatsOptions" + "NodeJS.Signals" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts", + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, "isRequired": true } ], "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter", - "type": "Class", - "tags": [], - "label": "CiStatsReporter", - "description": [ - "Object that helps report data to the ci-stats service" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.fromEnv", + "id": "def-server.ProcRunner.waitForAllToStop", "type": "Function", - "tags": [], - "label": "fromEnv", + "tags": [ + "return" + ], + "label": "waitForAllToStop", "description": [ - "\nCreate a CiStatsReporter by inspecting the ENV for the necessary config" + "\n Wait for all running processes to stop naturally" ], "signature": [ - "(log: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - }, - ") => ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsReporter", - "text": "CiStatsReporter" - } + "() => Promise" + ], + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.ProcRunner.teardown", + "type": "Function", + "tags": [ + "return" + ], + "label": "teardown", + "description": [ + "\n Close the ProcRunner and stop all running\n processes with `signal`\n" + ], + "signature": [ + "(signal?: \"exit\" | NodeJS.Signals) => Promise" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.fromEnv.$1", - "type": "Object", + "id": "def-server.ProcRunner.teardown.$1", + "type": "CompoundType", "tags": [], - "label": "log", + "label": "signal", "description": [], "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - } + "\"exit\" | NodeJS.Signals" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", "deprecated": false, "isRequired": true } ], "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.RunWithCommands", + "type": "Class", + "tags": [], + "label": "RunWithCommands", + "description": [], + "signature": [ + { + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.RunWithCommands", + "text": "RunWithCommands" }, + "" + ], + "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.Unnamed", + "id": "def-server.RunWithCommands.Unnamed", "type": "Function", "tags": [], "label": "Constructor", @@ -233,47 +238,48 @@ "signature": [ "any" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.Unnamed.$1", + "id": "def-server.RunWithCommands.Unnamed.$1", "type": "Object", "tags": [], - "label": "config", + "label": "options", "description": [], "signature": [ { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Config", - "text": "Config" + "section": "def-server.RunWithCommandsOptions", + "text": "RunWithCommandsOptions" }, - " | undefined" + "" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", "deprecated": false, - "isRequired": false + "isRequired": true }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.Unnamed.$2", - "type": "Object", + "id": "def-server.RunWithCommands.Unnamed.$2", + "type": "Array", "tags": [], - "label": "log", + "label": "commands", "description": [], "signature": [ { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - } + "section": "def-server.Command", + "text": "Command" + }, + "[]" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", "deprecated": false, "isRequired": true } @@ -282,139 +288,36 @@ }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.isEnabled", - "type": "Function", - "tags": [], - "label": "isEnabled", - "description": [ - "\nDetermine if CI_STATS is explicitly disabled by the environment. To determine\nif the CiStatsReporter has enough information in the environment to send metrics\nfor builds use #hasBuildConfig()." - ], - "signature": [ - "() => boolean" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.hasBuildConfig", - "type": "Function", - "tags": [], - "label": "hasBuildConfig", - "description": [ - "\nDetermines if the CiStatsReporter is disabled by the environment, or properly\nconfigured and able to send stats" - ], - "signature": [ - "() => boolean" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.timings", + "id": "def-server.RunWithCommands.command", "type": "Function", "tags": [], - "label": "timings", - "description": [ - "\nReport timings data to the ci-stats service. If running in CI then the reporter\nwill include the buildId in the report with the access token, otherwise the timings\ndata will be recorded as anonymous timing data." - ], + "label": "command", + "description": [], "signature": [ "(options: ", { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.TimingsOptions", - "text": "TimingsOptions" + "section": "def-server.Command", + "text": "Command" }, - ") => Promise" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.timings.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.TimingsOptions", - "text": "TimingsOptions" - } - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.metrics", - "type": "Function", - "tags": [], - "label": "metrics", - "description": [ - "\nReport metrics data to the ci-stats service. If running outside of CI this method\ndoes nothing as metrics can only be reported when associated with a specific CI build." - ], - "signature": [ - "(metrics: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsMetric", - "text": "CiStatsMetric" - }, - "[], options?: ", + ") => ", { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.MetricsOptions", - "text": "MetricsOptions" + "section": "def-server.RunWithCommands", + "text": "RunWithCommands" }, - " | undefined) => Promise" + "" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.metrics.$1", - "type": "Array", - "tags": [], - "label": "metrics", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsMetric", - "text": "CiStatsMetric" - }, - "[]" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.metrics.$2", + "id": "def-server.RunWithCommands.command.$1", "type": "Object", "tags": [], "label": "options", @@ -424,1968 +327,138 @@ "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.MetricsOptions", - "text": "MetricsOptions" + "section": "def-server.Command", + "text": "Command" }, - " | undefined" + "" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.reportTests", + "id": "def-server.RunWithCommands.execute", "type": "Function", "tags": [], - "label": "reportTests", - "description": [ - "\nSend test reports to ci-stats" - ], + "label": "execute", + "description": [], "signature": [ - "({ group, testRuns }: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsReportTestsOptions", - "text": "CiStatsReportTestsOptions" - }, - ") => Promise" + "() => Promise" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReporter.reportTests.$1", - "type": "Object", - "tags": [], - "label": "{ group, testRuns }", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsReportTestsOptions", - "text": "CiStatsReportTestsOptions" - } - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "isRequired": true - } - ], + "children": [], "returnComment": [] } ], "initialIsOpen": false - }, + } + ], + "functions": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner", - "type": "Class", - "tags": [ - "class" - ], - "label": "ProcRunner", - "description": [ - "\n Helper for starting and managing processes. In many ways it resembles the\n API from `grunt_run`, processes are named and can be started, waited for,\n backgrounded once they log something matching a RegExp...\n" + "id": "def-server.combineErrors", + "type": "Function", + "tags": [], + "label": "combineErrors", + "description": [], + "signature": [ + "(errors: (Error | FailError)[]) => Error" ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", + "path": "packages/kbn-dev-utils/src/run/fail.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.Unnamed", - "type": "Function", + "id": "def-server.combineErrors.$1", + "type": "Array", "tags": [], - "label": "Constructor", + "label": "errors", "description": [], "signature": [ - "any" + "(Error | FailError)[]" ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", + "path": "packages/kbn-dev-utils/src/run/fail.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "log", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - } - ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.createFailError", + "type": "Function", + "tags": [], + "label": "createFailError", + "description": [], + "signature": [ + "(reason: string, options: FailErrorOptions) => FailError" + ], + "path": "packages/kbn-dev-utils/src/run/fail.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.run", - "type": "Function", - "tags": [ - "property", - "property", - "property", - "property", - "return" - ], - "label": "run", - "description": [ - "\n Start a process, tracking it by `name`" - ], + "id": "def-server.createFailError.$1", + "type": "string", + "tags": [], + "label": "reason", + "description": [], "signature": [ - "(name: string, options: RunOptions) => Promise" + "string" ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", + "path": "packages/kbn-dev-utils/src/run/fail.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.run.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.run.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "RunOptions" - ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "isRequired": true }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.stop", - "type": "Function", + "id": "def-server.createFailError.$2", + "type": "Object", "tags": [], - "label": "stop", - "description": [ - "\n Stop a named proc" + "label": "options", + "description": [], + "signature": [ + "FailErrorOptions" ], + "path": "packages/kbn-dev-utils/src/run/fail.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.createFlagError", + "type": "Function", + "tags": [], + "label": "createFlagError", + "description": [], + "signature": [ + "(reason: string) => FailError" + ], + "path": "packages/kbn-dev-utils/src/run/fail.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.createFlagError.$1", + "type": "string", + "tags": [], + "label": "reason", + "description": [], "signature": [ - "(name: string, signal?: NodeJS.Signals) => Promise" + "string" ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.stop.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.stop.$2", - "type": "CompoundType", - "tags": [], - "label": "signal", - "description": [], - "signature": [ - "NodeJS.Signals" - ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.waitForAllToStop", - "type": "Function", - "tags": [ - "return" - ], - "label": "waitForAllToStop", - "description": [ - "\n Wait for all running processes to stop naturally" - ], - "signature": [ - "() => Promise" - ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.teardown", - "type": "Function", - "tags": [ - "return" - ], - "label": "teardown", - "description": [ - "\n Close the ProcRunner and stop all running\n processes with `signal`\n" - ], - "signature": [ - "(signal?: \"exit\" | NodeJS.Signals) => Promise" - ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ProcRunner.teardown.$1", - "type": "CompoundType", - "tags": [], - "label": "signal", - "description": [], - "signature": [ - "\"exit\" | NodeJS.Signals" - ], - "path": "packages/kbn-dev-utils/src/proc_runner/proc_runner.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.RunWithCommands", - "type": "Class", - "tags": [], - "label": "RunWithCommands", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.RunWithCommands", - "text": "RunWithCommands" - }, - "" - ], - "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.RunWithCommands.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.RunWithCommands.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.RunWithCommandsOptions", - "text": "RunWithCommandsOptions" - }, - "" - ], - "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.RunWithCommands.Unnamed.$2", - "type": "Array", - "tags": [], - "label": "commands", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Command", - "text": "Command" - }, - "[]" - ], - "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.RunWithCommands.command", - "type": "Function", - "tags": [], - "label": "command", - "description": [], - "signature": [ - "(options: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Command", - "text": "Command" - }, - ") => ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.RunWithCommands", - "text": "RunWithCommands" - }, - "" - ], - "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.RunWithCommands.command.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Command", - "text": "Command" - }, - "" - ], - "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.RunWithCommands.execute", - "type": "Function", - "tags": [], - "label": "execute", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog", - "type": "Class", - "tags": [], - "label": "ToolingLog", - "description": [], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "writerConfig", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLogTextWriterConfig", - "text": "ToolingLogTextWriterConfig" - }, - " | undefined" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLogOptions", - "text": "ToolingLogOptions" - }, - " | undefined" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.getIndent", - "type": "Function", - "tags": [], - "label": "getIndent", - "description": [ - "\nGet the current indentation level of the ToolingLog" - ], - "signature": [ - "() => number" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.indent", - "type": "Function", - "tags": [], - "label": "indent", - "description": [], - "signature": [ - "{ (delta: number): void; (delta: number, block: () => Promise): Promise; (delta: number, block: () => T): T; }" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.indent.$1", - "type": "number", - "tags": [], - "label": "delta", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.indent.$2", - "type": "Function", - "tags": [], - "label": "block", - "description": [], - "signature": [ - "(() => T | Promise) | undefined" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.verbose", - "type": "Function", - "tags": [], - "label": "verbose", - "description": [], - "signature": [ - "(...args: any[]) => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.verbose.$1", - "type": "Array", - "tags": [], - "label": "args", - "description": [], - "signature": [ - "any[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.debug", - "type": "Function", - "tags": [], - "label": "debug", - "description": [], - "signature": [ - "(...args: any[]) => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.debug.$1", - "type": "Array", - "tags": [], - "label": "args", - "description": [], - "signature": [ - "any[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.info", - "type": "Function", - "tags": [], - "label": "info", - "description": [], - "signature": [ - "(...args: any[]) => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.info.$1", - "type": "Array", - "tags": [], - "label": "args", - "description": [], - "signature": [ - "any[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.success", - "type": "Function", - "tags": [], - "label": "success", - "description": [], - "signature": [ - "(...args: any[]) => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.success.$1", - "type": "Array", - "tags": [], - "label": "args", - "description": [], - "signature": [ - "any[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.warning", - "type": "Function", - "tags": [], - "label": "warning", - "description": [], - "signature": [ - "(...args: any[]) => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.warning.$1", - "type": "Array", - "tags": [], - "label": "args", - "description": [], - "signature": [ - "any[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.error", - "type": "Function", - "tags": [], - "label": "error", - "description": [], - "signature": [ - "(error: string | Error) => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.error.$1", - "type": "CompoundType", - "tags": [], - "label": "error", - "description": [], - "signature": [ - "string | Error" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.write", - "type": "Function", - "tags": [], - "label": "write", - "description": [], - "signature": [ - "(...args: any[]) => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.write.$1", - "type": "Array", - "tags": [], - "label": "args", - "description": [], - "signature": [ - "any[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.getWriters", - "type": "Function", - "tags": [], - "label": "getWriters", - "description": [], - "signature": [ - "() => ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Writer", - "text": "Writer" - }, - "[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.setWriters", - "type": "Function", - "tags": [], - "label": "setWriters", - "description": [], - "signature": [ - "(writers: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Writer", - "text": "Writer" - }, - "[]) => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.setWriters.$1", - "type": "Array", - "tags": [], - "label": "writers", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Writer", - "text": "Writer" - }, - "[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.getWritten$", - "type": "Function", - "tags": [], - "label": "getWritten$", - "description": [], - "signature": [ - "() => ", - "Observable", - "<", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - }, - ">" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.withType", - "type": "Function", - "tags": [], - "label": "withType", - "description": [ - "\nCreate a new ToolingLog which sets a different \"type\", allowing messages to be filtered out by \"source\"" - ], - "signature": [ - "(type: string) => ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - } - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLog.withType.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "A string that will be passed along with messages from this logger which can be used to filter messages with `ignoreSources`" - ], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogCollectingWriter", - "type": "Class", - "tags": [], - "label": "ToolingLogCollectingWriter", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLogCollectingWriter", - "text": "ToolingLogCollectingWriter" - }, - " extends ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLogTextWriter", - "text": "ToolingLogTextWriter" - } - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogCollectingWriter.messages", - "type": "Array", - "tags": [], - "label": "messages", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogCollectingWriter.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogCollectingWriter.Unnamed.$1", - "type": "CompoundType", - "tags": [], - "label": "level", - "description": [], - "signature": [ - "\"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\"" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogCollectingWriter.write", - "type": "Function", - "tags": [], - "label": "write", - "description": [ - "\nCalled by ToolingLog, extends messages with the source if message includes one." - ], - "signature": [ - "(msg: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - }, - ") => boolean" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogCollectingWriter.write.$1", - "type": "Object", - "tags": [], - "label": "msg", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - } - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter", - "type": "Class", - "tags": [], - "label": "ToolingLogTextWriter", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLogTextWriter", - "text": "ToolingLogTextWriter" - }, - " implements ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Writer", - "text": "Writer" - } - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.level", - "type": "Object", - "tags": [], - "label": "level", - "description": [], - "signature": [ - "{ name: \"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\"; flags: { error: boolean; info: boolean; success: boolean; warning: boolean; debug: boolean; silent: boolean; verbose: boolean; }; }" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.writeTo", - "type": "Object", - "tags": [], - "label": "writeTo", - "description": [], - "signature": [ - "{ write(msg: string): void; }" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLogTextWriterConfig", - "text": "ToolingLogTextWriterConfig" - } - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.write", - "type": "Function", - "tags": [], - "label": "write", - "description": [], - "signature": [ - "(msg: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - }, - ") => boolean" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.write.$1", - "type": "Object", - "tags": [], - "label": "msg", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - } - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.write", - "type": "Function", - "tags": [], - "label": "write", - "description": [], - "signature": [ - "(writeTo: { write(msg: string): void; }, prefix: string, msg: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - }, - ") => void" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.write.$1", - "type": "Object", - "tags": [], - "label": "writeTo", - "description": [], - "signature": [ - "{ write(msg: string): void; }" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.write.$2", - "type": "string", - "tags": [], - "label": "prefix", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriter.write.$3", - "type": "Object", - "tags": [], - "label": "msg", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - } - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.combineErrors", - "type": "Function", - "tags": [], - "label": "combineErrors", - "description": [], - "signature": [ - "(errors: (Error | FailError)[]) => Error" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.combineErrors.$1", - "type": "Array", - "tags": [], - "label": "errors", - "description": [], - "signature": [ - "(Error | FailError)[]" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createAbsolutePathSerializer", - "type": "Function", - "tags": [], - "label": "createAbsolutePathSerializer", - "description": [], - "signature": [ - "(rootPath: string, replacement: string) => { test: (value: any) => boolean; serialize: (value: string) => string; }" - ], - "path": "packages/kbn-dev-utils/src/serializers/absolute_path_serializer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createAbsolutePathSerializer.$1", - "type": "string", - "tags": [], - "label": "rootPath", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/serializers/absolute_path_serializer.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createAbsolutePathSerializer.$2", - "type": "string", - "tags": [], - "label": "replacement", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/serializers/absolute_path_serializer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createAnyInstanceSerializer", - "type": "Function", - "tags": [], - "label": "createAnyInstanceSerializer", - "description": [], - "signature": [ - "(Class: Function, name: string | ((instance: any) => string) | undefined) => { test: (v: any) => boolean; serialize: (v: any) => string; }" - ], - "path": "packages/kbn-dev-utils/src/serializers/any_instance_serizlizer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createAnyInstanceSerializer.$1", - "type": "Object", - "tags": [], - "label": "Class", - "description": [], - "signature": [ - "Function" - ], - "path": "packages/kbn-dev-utils/src/serializers/any_instance_serizlizer.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createAnyInstanceSerializer.$2", - "type": "CompoundType", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string | ((instance: any) => string) | undefined" - ], - "path": "packages/kbn-dev-utils/src/serializers/any_instance_serizlizer.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createFailError", - "type": "Function", - "tags": [], - "label": "createFailError", - "description": [], - "signature": [ - "(reason: string, options: FailErrorOptions) => FailError" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createFailError.$1", - "type": "string", - "tags": [], - "label": "reason", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createFailError.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "FailErrorOptions" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createFlagError", - "type": "Function", - "tags": [], - "label": "createFlagError", - "description": [], - "signature": [ - "(reason: string) => FailError" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createFlagError.$1", - "type": "string", - "tags": [], - "label": "reason", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createRecursiveSerializer", - "type": "Function", - "tags": [], - "label": "createRecursiveSerializer", - "description": [], - "signature": [ - "(test: (v: any) => boolean, print: (v: any, printRaw: (v: string) => RawPrint) => string | RawPrint) => { test: (v: any) => boolean; serialize: (v: any, ...rest: any[]) => any; }" - ], - "path": "packages/kbn-dev-utils/src/serializers/recursive_serializer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createRecursiveSerializer.$1", - "type": "Function", - "tags": [], - "label": "test", - "description": [], - "signature": [ - "(v: any) => boolean" - ], - "path": "packages/kbn-dev-utils/src/serializers/recursive_serializer.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createRecursiveSerializer.$2", - "type": "Function", - "tags": [], - "label": "print", - "description": [], - "signature": [ - "(v: any, printRaw: (v: string) => RawPrint) => string | RawPrint" - ], - "path": "packages/kbn-dev-utils/src/serializers/recursive_serializer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createReplaceSerializer", - "type": "Function", - "tags": [], - "label": "createReplaceSerializer", - "description": [], - "signature": [ - "(toReplace: string | RegExp, replaceWith: string | Replacer) => { test: (v: any) => boolean; serialize: (v: any, ...rest: any[]) => any; }" - ], - "path": "packages/kbn-dev-utils/src/serializers/replace_serializer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createReplaceSerializer.$1", - "type": "CompoundType", - "tags": [], - "label": "toReplace", - "description": [], - "signature": [ - "string | RegExp" - ], - "path": "packages/kbn-dev-utils/src/serializers/replace_serializer.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createReplaceSerializer.$2", - "type": "CompoundType", - "tags": [], - "label": "replaceWith", - "description": [], - "signature": [ - "string | Replacer" - ], - "path": "packages/kbn-dev-utils/src/serializers/replace_serializer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.createStripAnsiSerializer", - "type": "Function", - "tags": [], - "label": "createStripAnsiSerializer", - "description": [], - "signature": [ - "() => { test: (v: any) => boolean; serialize: (v: any, ...rest: any[]) => any; }" - ], - "path": "packages/kbn-dev-utils/src/serializers/strip_ansi_serializer.ts", - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.diffStrings", - "type": "Function", - "tags": [], - "label": "diffStrings", - "description": [ - "\nProduces a diff string which is nicely formatted to show the differences between two strings. This will\nbe a multi-line string so it's generally a good idea to include a `\\n` before this first line of the diff\nif you are concatenating it with another message." - ], - "signature": [ - "(expected: string, received: string) => string | undefined" - ], - "path": "packages/kbn-dev-utils/src/diff_strings.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.diffStrings.$1", - "type": "string", - "tags": [], - "label": "expected", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/diff_strings.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.diffStrings.$2", - "type": "string", - "tags": [], - "label": "received", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/diff_strings.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.extract", - "type": "Function", - "tags": [], - "label": "extract", - "description": [ - "\nExtract tar and zip archives using a single function, supporting stripComponents\nfor both archive types, only tested with familiar archives we create so might not\nsupport some weird exotic zip features we don't use in our own snapshot/build tooling" - ], - "signature": [ - "({\n archivePath,\n targetDir,\n stripComponents = 0,\n setModifiedTimes,\n}: Options) => Promise" - ], - "path": "packages/kbn-dev-utils/src/extract.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.extract.$1", - "type": "Object", - "tags": [], - "label": "{\n archivePath,\n targetDir,\n stripComponents = 0,\n setModifiedTimes,\n}", - "description": [], - "signature": [ - "Options" - ], - "path": "packages/kbn-dev-utils/src/extract.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.getFlags", - "type": "Function", - "tags": [], - "label": "getFlags", - "description": [], - "signature": [ - "(argv: string[], flagOptions: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.FlagOptions", - "text": "FlagOptions" - }, - " | undefined, defaultLogLevel: string) => ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Flags", - "text": "Flags" - } - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.getFlags.$1", - "type": "Array", - "tags": [], - "label": "argv", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.getFlags.$2", - "type": "Object", - "tags": [], - "label": "flagOptions", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.FlagOptions", - "text": "FlagOptions" - }, - " | undefined" - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.getFlags.$3", - "type": "string", - "tags": [], - "label": "defaultLogLevel", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.getTimeReporter", - "type": "Function", - "tags": [], - "label": "getTimeReporter", - "description": [], - "signature": [ - "(log: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - }, - ", group: string) => (startTime: number, id: string, meta: Record) => Promise" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.getTimeReporter.$1", - "type": "Object", - "tags": [], - "label": "log", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - } - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.getTimeReporter.$2", - "type": "string", - "tags": [], - "label": "group", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.isAxiosRequestError", - "type": "Function", - "tags": [], - "label": "isAxiosRequestError", - "description": [], - "signature": [ - "(error: any) => error is ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.AxiosRequestError", - "text": "AxiosRequestError" - } - ], - "path": "packages/kbn-dev-utils/src/axios/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.isAxiosRequestError.$1", - "type": "Any", - "tags": [], - "label": "error", - "description": [], - "signature": [ - "any" - ], - "path": "packages/kbn-dev-utils/src/axios/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.isAxiosResponseError", - "type": "Function", - "tags": [], - "label": "isAxiosResponseError", - "description": [], - "signature": [ - "(error: any) => error is ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.AxiosResponseError", - "text": "AxiosResponseError" - }, - "" - ], - "path": "packages/kbn-dev-utils/src/axios/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.isAxiosResponseError.$1", - "type": "Any", - "tags": [], - "label": "error", - "description": [], - "signature": [ - "any" - ], - "path": "packages/kbn-dev-utils/src/axios/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.isFailError", - "type": "Function", - "tags": [], - "label": "isFailError", - "description": [], - "signature": [ - "(error: any) => boolean" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.isFailError.$1", - "type": "Any", - "tags": [], - "label": "error", - "description": [], - "signature": [ - "any" - ], - "path": "packages/kbn-dev-utils/src/run/fail.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.mergeFlagOptions", - "type": "Function", - "tags": [], - "label": "mergeFlagOptions", - "description": [], - "signature": [ - "(global: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.FlagOptions", - "text": "FlagOptions" - }, - ", local: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.FlagOptions", - "text": "FlagOptions" - }, - ") => ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.FlagOptions", - "text": "FlagOptions" - } - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.mergeFlagOptions.$1", - "type": "Object", - "tags": [], - "label": "global", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.FlagOptions", - "text": "FlagOptions" - } - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.mergeFlagOptions.$2", - "type": "Object", - "tags": [], - "label": "local", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.FlagOptions", - "text": "FlagOptions" - } - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.observeLines", - "type": "Function", - "tags": [ - "return" - ], - "label": "observeLines", - "description": [ - "\n Creates an Observable from a Readable Stream that:\n - splits data from `readable` into lines\n - completes when `readable` emits \"end\"\n - fails if `readable` emits \"errors\"\n" - ], - "signature": [ - "(readable: ", - "Readable", - ") => ", - "Observable", - "" - ], - "path": "packages/kbn-dev-utils/src/stdio/observe_lines.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.observeLines.$1", - "type": "Object", - "tags": [], - "label": "readable", - "description": [], - "signature": [ - "Readable" - ], - "path": "packages/kbn-dev-utils/src/stdio/observe_lines.ts", + "path": "packages/kbn-dev-utils/src/run/fail.ts", "deprecated": false, "isRequired": true } @@ -2395,315 +468,44 @@ }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.observeReadable", + "id": "def-server.diffStrings", "type": "Function", "tags": [], - "label": "observeReadable", + "label": "diffStrings", "description": [ - "\n Produces an Observable from a ReadableSteam that:\n - completes on the first \"end\" event\n - fails on the first \"error\" event" - ], - "signature": [ - "(readable: ", - "Readable", - ") => ", - "Observable", - "" - ], - "path": "packages/kbn-dev-utils/src/stdio/observe_readable.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.observeReadable.$1", - "type": "Object", - "tags": [], - "label": "readable", - "description": [], - "signature": [ - "Readable" - ], - "path": "packages/kbn-dev-utils/src/stdio/observe_readable.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.parseLogLevel", - "type": "Function", - "tags": [], - "label": "parseLogLevel", - "description": [], - "signature": [ - "(name: \"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\") => { name: \"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\"; flags: { error: boolean; info: boolean; success: boolean; warning: boolean; debug: boolean; silent: boolean; verbose: boolean; }; }" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/log_levels.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.parseLogLevel.$1", - "type": "CompoundType", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "\"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\"" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/log_levels.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.pickLevelFromFlags", - "type": "Function", - "tags": [], - "label": "pickLevelFromFlags", - "description": [], - "signature": [ - "(flags: Record, options: { default?: \"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\" | undefined; }) => \"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\"" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/log_levels.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.pickLevelFromFlags.$1", - "type": "Object", - "tags": [], - "label": "flags", - "description": [], - "signature": [ - "Record" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/log_levels.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.pickLevelFromFlags.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "packages/kbn-dev-utils/src/tooling_log/log_levels.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.pickLevelFromFlags.$2.default", - "type": "CompoundType", - "tags": [], - "label": "default", - "description": [], - "signature": [ - "\"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\" | undefined" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/log_levels.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.run", - "type": "Function", - "tags": [], - "label": "run", - "description": [], - "signature": [ - "(fn: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.RunFn", - "text": "RunFn" - }, - ", options: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.RunOptions", - "text": "RunOptions" - }, - ") => Promise" - ], - "path": "packages/kbn-dev-utils/src/run/run.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.run.$1", - "type": "Function", - "tags": [], - "label": "fn", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.RunFn", - "text": "RunFn" - } - ], - "path": "packages/kbn-dev-utils/src/run/run.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.run.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.RunOptions", - "text": "RunOptions" - } - ], - "path": "packages/kbn-dev-utils/src/run/run.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.runPluginListCli", - "type": "Function", - "tags": [], - "label": "runPluginListCli", - "description": [], - "signature": [ - "() => void" - ], - "path": "packages/kbn-dev-utils/src/plugin_list/run_plugin_list_cli.ts", - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.runUpdateVscodeConfigCli", - "type": "Function", - "tags": [], - "label": "runUpdateVscodeConfigCli", - "description": [], - "signature": [ - "() => void" - ], - "path": "packages/kbn-dev-utils/src/vscode_config/update_vscode_config_cli.ts", - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.shipCiStatsCli", - "type": "Function", - "tags": [], - "label": "shipCiStatsCli", - "description": [], - "signature": [ - "() => void" + "\nProduces a diff string which is nicely formatted to show the differences between two strings. This will\nbe a multi-line string so it's generally a good idea to include a `\\n` before this first line of the diff\nif you are concatenating it with another message." ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ship_ci_stats_cli.ts", - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.sortPackageJson", - "type": "Function", - "tags": [], - "label": "sortPackageJson", - "description": [], "signature": [ - "(json: string) => string" + "(expected: string, received: string) => string | undefined" ], - "path": "packages/kbn-dev-utils/src/sort_package_json.ts", + "path": "packages/kbn-dev-utils/src/diff_strings.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.sortPackageJson.$1", + "id": "def-server.diffStrings.$1", "type": "string", "tags": [], - "label": "json", + "label": "expected", "description": [], "signature": [ "string" ], - "path": "packages/kbn-dev-utils/src/sort_package_json.ts", + "path": "packages/kbn-dev-utils/src/diff_strings.ts", "deprecated": false, "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.transformFileStream", - "type": "Function", - "tags": [], - "label": "transformFileStream", - "description": [ - "\nCreate a transform stream that processes Vinyl fs streams and\ncalls a function for each file, allowing the function to either\nmutate the file, replace it with another file (return a new File\nobject), or drop it from the stream (return null)" - ], - "signature": [ - "(fn: (file: BufferedFile) => void | ", - "node_modules/@types/vinyl/index", - " | Promise | null) => ", - "Transform" - ], - "path": "packages/kbn-dev-utils/src/streams.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.transformFileStream.$1", - "type": "Function", + "id": "def-server.diffStrings.$2", + "type": "string", "tags": [], - "label": "fn", + "label": "received", "description": [], "signature": [ - "(file: BufferedFile) => void | ", - "node_modules/@types/vinyl/index", - " | Promise | null" + "string" ], - "path": "packages/kbn-dev-utils/src/streams.ts", + "path": "packages/kbn-dev-utils/src/diff_strings.ts", "deprecated": false, "isRequired": true } @@ -2713,32 +515,30 @@ }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.transformFileWithBabel", + "id": "def-server.extract", "type": "Function", "tags": [], - "label": "transformFileWithBabel", + "label": "extract", "description": [ - "\nReturns a promise that resolves when the file has been\nmutated so the contents of the file are tranformed with\nbabel, include inline sourcemaps, and the filename has\nbeen updated to use .js.\n\nIf the file was previously transformed with this function\nthe promise will just resolve immediately." + "\nExtract tar and zip archives using a single function, supporting stripComponents\nfor both archive types, only tested with familiar archives we create so might not\nsupport some weird exotic zip features we don't use in our own snapshot/build tooling" ], "signature": [ - "(file: ", - "node_modules/@types/vinyl/index", - ") => Promise" + "({\n archivePath,\n targetDir,\n stripComponents = 0,\n setModifiedTimes,\n}: Options) => Promise" ], - "path": "packages/kbn-dev-utils/src/babel.ts", + "path": "packages/kbn-dev-utils/src/extract.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.transformFileWithBabel.$1", + "id": "def-server.extract.$1", "type": "Object", "tags": [], - "label": "file", + "label": "{\n archivePath,\n targetDir,\n stripComponents = 0,\n setModifiedTimes,\n}", "description": [], "signature": [ - "node_modules/@types/vinyl/index" + "Options" ], - "path": "packages/kbn-dev-utils/src/babel.ts", + "path": "packages/kbn-dev-utils/src/extract.ts", "deprecated": false, "isRequired": true } @@ -2748,131 +548,132 @@ }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.withProcRunner", + "id": "def-server.getFlags", "type": "Function", - "tags": [ - "return" - ], - "label": "withProcRunner", - "description": [ - "\n Create a ProcRunner and pass it to an async function. When\n the async function finishes the ProcRunner is torn-down\n automatically\n" - ], + "tags": [], + "label": "getFlags", + "description": [], "signature": [ - "(log: ", + "(argv: string[], flagOptions: ", { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" + "section": "def-server.FlagOptions", + "text": "FlagOptions" }, - ", fn: (procs: ", + " | undefined, defaultLogLevel: string) => ", { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ProcRunner", - "text": "ProcRunner" - }, - ") => Promise) => Promise" + "section": "def-server.Flags", + "text": "Flags" + } ], - "path": "packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts", + "path": "packages/kbn-dev-utils/src/run/flags.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.withProcRunner.$1", - "type": "Object", + "id": "def-server.getFlags.$1", + "type": "Array", "tags": [], - "label": "log", + "label": "argv", "description": [], "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - } + "string[]" ], - "path": "packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts", + "path": "packages/kbn-dev-utils/src/run/flags.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.withProcRunner.$2", - "type": "Function", + "id": "def-server.getFlags.$2", + "type": "Object", "tags": [], - "label": "fn", + "label": "flagOptions", "description": [], "signature": [ - "(procs: ", { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ProcRunner", - "text": "ProcRunner" + "section": "def-server.FlagOptions", + "text": "FlagOptions" }, - ") => Promise" + " | undefined" ], - "path": "packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts", + "path": "packages/kbn-dev-utils/src/run/flags.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.getFlags.$3", + "type": "string", + "tags": [], + "label": "defaultLogLevel", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-dev-utils/src/run/flags.ts", "deprecated": false, "isRequired": true } ], "returnComment": [], "initialIsOpen": false - } - ], - "interfaces": [ + }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.AxiosRequestError", - "type": "Interface", + "id": "def-server.isAxiosRequestError", + "type": "Function", "tags": [], - "label": "AxiosRequestError", + "label": "isAxiosRequestError", "description": [], "signature": [ + "(error: any) => error is ", { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", "section": "def-server.AxiosRequestError", "text": "AxiosRequestError" - }, - " extends ", - "AxiosError", - "" + } ], "path": "packages/kbn-dev-utils/src/axios/errors.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.AxiosRequestError.response", - "type": "Uncategorized", + "id": "def-server.isAxiosRequestError.$1", + "type": "Any", "tags": [], - "label": "response", + "label": "error", "description": [], "signature": [ - "undefined" + "any" ], "path": "packages/kbn-dev-utils/src/axios/errors.ts", - "deprecated": false + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.AxiosResponseError", - "type": "Interface", + "id": "def-server.isAxiosResponseError", + "type": "Function", "tags": [], - "label": "AxiosResponseError", + "label": "isAxiosResponseError", "description": [], "signature": [ + "(error: any) => error is ", { "pluginId": "@kbn/dev-utils", "scope": "server", @@ -2880,486 +681,479 @@ "section": "def-server.AxiosResponseError", "text": "AxiosResponseError" }, - " extends ", - "AxiosError", - "" + "" ], "path": "packages/kbn-dev-utils/src/axios/errors.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.AxiosResponseError.response", - "type": "Object", + "id": "def-server.isAxiosResponseError.$1", + "type": "Any", "tags": [], - "label": "response", + "label": "error", "description": [], "signature": [ - "AxiosResponse", - "" + "any" ], "path": "packages/kbn-dev-utils/src/axios/errors.ts", - "deprecated": false + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsMetric", - "type": "Interface", + "id": "def-server.isFailError", + "type": "Function", "tags": [], - "label": "CiStatsMetric", - "description": [ - "A ci-stats metric record" + "label": "isFailError", + "description": [], + "signature": [ + "(error: any) => boolean" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/fail.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsMetric.group", - "type": "string", + "id": "def-server.isFailError.$1", + "type": "Any", "tags": [], - "label": "group", - "description": [ - "Top-level categorization for the metric, e.g. \"page load bundle size\"" + "label": "error", + "description": [], + "signature": [ + "any" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false - }, + "path": "packages/kbn-dev-utils/src/run/fail.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.mergeFlagOptions", + "type": "Function", + "tags": [], + "label": "mergeFlagOptions", + "description": [], + "signature": [ + "(global: ", { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsMetric.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "Specific sub-set of the \"group\", e.g. \"dashboard\"" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.FlagOptions", + "text": "FlagOptions" }, + ", local: ", { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsMetric.value", - "type": "number", - "tags": [], - "label": "value", - "description": [ - "integer value recorded as the value of this metric" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.FlagOptions", + "text": "FlagOptions" }, + ") => ", { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsMetric.limit", - "type": "number", - "tags": [], - "label": "limit", - "description": [ - "optional limit which will generate an error on PRs when the metric exceeds the limit" - ], - "signature": [ - "number | undefined" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false - }, + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.FlagOptions", + "text": "FlagOptions" + } + ], + "path": "packages/kbn-dev-utils/src/run/flags.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsMetric.limitConfigPath", - "type": "string", + "id": "def-server.mergeFlagOptions.$1", + "type": "Object", "tags": [], - "label": "limitConfigPath", - "description": [ - "\npath, relative to the repo, where the config file contianing limits\nis kept. Linked from PR comments instructing contributors how to fix\ntheir PRs." - ], + "label": "global", + "description": [], "signature": [ - "string | undefined" + { + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.FlagOptions", + "text": "FlagOptions" + } ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false + "path": "packages/kbn-dev-utils/src/run/flags.ts", + "deprecated": false, + "isRequired": true }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsMetric.meta", + "id": "def-server.mergeFlagOptions.$2", "type": "Object", "tags": [], - "label": "meta", - "description": [ - "Arbitrary key-value pairs which can be used for additional filtering/reporting" - ], + "label": "local", + "description": [], "signature": [ - "CiStatsMetadata", - " | undefined" + { + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.FlagOptions", + "text": "FlagOptions" + } ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false + "path": "packages/kbn-dev-utils/src/run/flags.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReportTestsOptions", - "type": "Interface", + "id": "def-server.run", + "type": "Function", "tags": [], - "label": "CiStatsReportTestsOptions", - "description": [ - "Options for reporting tests to ci-stats" + "label": "run", + "description": [], + "signature": [ + "(fn: ", + { + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.RunFn", + "text": "RunFn" + }, + ", options: ", + { + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.RunOptions", + "text": "RunOptions" + }, + ") => Promise" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/run.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReportTestsOptions.group", - "type": "Object", + "id": "def-server.run.$1", + "type": "Function", "tags": [], - "label": "group", - "description": [ - "\nInformation about the group of tests that were run" - ], + "label": "fn", + "description": [], "signature": [ { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsTestGroupInfo", - "text": "CiStatsTestGroupInfo" + "section": "def-server.RunFn", + "text": "RunFn" } ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false + "path": "packages/kbn-dev-utils/src/run/run.ts", + "deprecated": false, + "isRequired": true }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsReportTestsOptions.testRuns", - "type": "Array", + "id": "def-server.run.$2", + "type": "Object", "tags": [], - "label": "testRuns", - "description": [ - "\nInformation about each test that ran, including failure information" - ], + "label": "options", + "description": [], "signature": [ { "pluginId": "@kbn/dev-utils", "scope": "server", "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsTestRun", - "text": "CiStatsTestRun" - }, - "[]" + "section": "def-server.RunOptions", + "text": "RunOptions" + } ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false + "path": "packages/kbn-dev-utils/src/run/run.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestGroupInfo", - "type": "Interface", + "id": "def-server.runPluginListCli", + "type": "Function", + "tags": [], + "label": "runPluginListCli", + "description": [], + "signature": [ + "() => void" + ], + "path": "packages/kbn-dev-utils/src/plugin_list/run_plugin_list_cli.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.runUpdateVscodeConfigCli", + "type": "Function", + "tags": [], + "label": "runUpdateVscodeConfigCli", + "description": [], + "signature": [ + "() => void" + ], + "path": "packages/kbn-dev-utils/src/vscode_config/update_vscode_config_cli.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.shipCiStatsCli", + "type": "Function", "tags": [], - "label": "CiStatsTestGroupInfo", + "label": "shipCiStatsCli", "description": [], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", + "signature": [ + "() => void" + ], + "path": "packages/kbn-dev-utils/src/ship_ci_stats_cli.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.transformFileStream", + "type": "Function", + "tags": [], + "label": "transformFileStream", + "description": [ + "\nCreate a transform stream that processes Vinyl fs streams and\ncalls a function for each file, allowing the function to either\nmutate the file, replace it with another file (return a new File\nobject), or drop it from the stream (return null)" + ], + "signature": [ + "(fn: (file: BufferedFile) => void | ", + "node_modules/@types/vinyl/index", + " | Promise | null) => ", + "Transform" + ], + "path": "packages/kbn-dev-utils/src/streams.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestGroupInfo.startTime", - "type": "string", - "tags": [], - "label": "startTime", - "description": [ - "\nISO-8601 formatted datetime representing when the group of tests started running" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestGroupInfo.durationMs", - "type": "number", - "tags": [], - "label": "durationMs", - "description": [ - "\nThe number of miliseconds that the tests ran for" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestGroupInfo.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nThe type of tests run in this group, any value is valid but test groups are groupped by type in the UI so use something consistent" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestGroupInfo.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "\nThe name of this specific group (within the \"type\")" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestGroupInfo.meta", - "type": "Object", + "id": "def-server.transformFileStream.$1", + "type": "Function", "tags": [], - "label": "meta", - "description": [ - "\nArbitrary metadata associated with this group. We currently look for a ciGroup metadata property for highlighting that when appropriate" - ], + "label": "fn", + "description": [], "signature": [ - "CiStatsMetadata" + "(file: BufferedFile) => void | ", + "node_modules/@types/vinyl/index", + " | Promise | null" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false + "path": "packages/kbn-dev-utils/src/streams.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun", - "type": "Interface", + "id": "def-server.transformFileWithBabel", + "type": "Function", "tags": [], - "label": "CiStatsTestRun", - "description": [], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", + "label": "transformFileWithBabel", + "description": [ + "\nReturns a promise that resolves when the file has been\nmutated so the contents of the file are tranformed with\nbabel, include inline sourcemaps, and the filename has\nbeen updated to use .js.\n\nIf the file was previously transformed with this function\nthe promise will just resolve immediately." + ], + "signature": [ + "(file: ", + "node_modules/@types/vinyl/index", + ") => Promise" + ], + "path": "packages/kbn-dev-utils/src/babel.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.startTime", - "type": "string", - "tags": [], - "label": "startTime", - "description": [ - "\nISO-8601 formatted datetime representing when the tests started running" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.durationMs", - "type": "number", - "tags": [], - "label": "durationMs", - "description": [ - "\nDuration of the tests in milliseconds" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.seq", - "type": "number", - "tags": [], - "label": "seq", - "description": [ - "\nA sequence number, this is used to order the tests in a specific test run" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.type", - "type": "CompoundType", - "tags": [], - "label": "type", - "description": [ - "\nThe type of this \"test run\", usually this is just \"test\" but when reporting issues in hooks it can be set to the type of hook" - ], - "signature": [ - "\"after all hook\" | \"after each hook\" | \"before all hook\" | \"before each hook\" | \"test\"" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.result", - "type": "CompoundType", - "tags": [], - "label": "result", - "description": [ - "\n\"fail\", \"pass\" or \"skip\", the result of the tests" - ], - "signature": [ - "\"fail\" | \"pass\" | \"skip\"" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.suites", - "type": "Array", - "tags": [], - "label": "suites", - "description": [ - "\nThe list of suite names containing this test, the first being the outermost suite" - ], - "signature": [ - "string[]" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "\nThe name of this specific test run" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.file", - "type": "string", + "id": "def-server.transformFileWithBabel.$1", + "type": "Object", "tags": [], "label": "file", - "description": [ - "\nRelative path from the root of the repo contianing this test" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.error", - "type": "string", - "tags": [], - "label": "error", - "description": [ - "\nError message if the test failed" - ], + "description": [], "signature": [ - "string | undefined" + "node_modules/@types/vinyl/index" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false + "path": "packages/kbn-dev-utils/src/babel.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.withProcRunner", + "type": "Function", + "tags": [ + "return" + ], + "label": "withProcRunner", + "description": [ + "\n Create a ProcRunner and pass it to an async function. When\n the async function finishes the ProcRunner is torn-down\n automatically\n" + ], + "signature": [ + "(log: ", + "ToolingLog", + ", fn: (procs: ", + { + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.ProcRunner", + "text": "ProcRunner" }, + ") => Promise) => Promise" + ], + "path": "packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.stdout", - "type": "string", + "id": "def-server.withProcRunner.$1", + "type": "Object", "tags": [], - "label": "stdout", - "description": [ - "\nDebug output/stdout produced by the test" - ], + "label": "log", + "description": [], "signature": [ - "string | undefined" + "ToolingLog" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false + "path": "packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts", + "deprecated": false, + "isRequired": true }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestRun.screenshots", - "type": "Array", + "id": "def-server.withProcRunner.$2", + "type": "Function", "tags": [], - "label": "screenshots", - "description": [ - "\nScreenshots captured during the test run" - ], + "label": "fn", + "description": [], "signature": [ - "{ name: string; base64Png: string; }[] | undefined" + "(procs: ", + { + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.ProcRunner", + "text": "ProcRunner" + }, + ") => Promise" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false + "path": "packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false - }, + } + ], + "interfaces": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTiming", + "id": "def-server.AxiosRequestError", "type": "Interface", "tags": [], - "label": "CiStatsTiming", - "description": [ - "A ci-stats timing event" + "label": "AxiosRequestError", + "description": [], + "signature": [ + { + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.AxiosRequestError", + "text": "AxiosRequestError" + }, + " extends ", + "AxiosError", + "" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/axios/errors.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTiming.group", - "type": "string", - "tags": [], - "label": "group", - "description": [ - "Top-level categorization for the timing, e.g. \"scripts/foo\", process type, etc." - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTiming.id", - "type": "string", + "id": "def-server.AxiosRequestError.response", + "type": "Uncategorized", "tags": [], - "label": "id", - "description": [ - "Specific timing (witin the \"group\" being tracked) e.g. \"total\"" + "label": "response", + "description": [], + "signature": [ + "undefined" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/axios/errors.ts", "deprecated": false - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/dev-utils", + "id": "def-server.AxiosResponseError", + "type": "Interface", + "tags": [], + "label": "AxiosResponseError", + "description": [], + "signature": [ { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTiming.ms", - "type": "number", - "tags": [], - "label": "ms", - "description": [ - "time in milliseconds which should be recorded" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false + "pluginId": "@kbn/dev-utils", + "scope": "server", + "docId": "kibKbnDevUtilsPluginApi", + "section": "def-server.AxiosResponseError", + "text": "AxiosResponseError" }, + " extends ", + "AxiosError", + "" + ], + "path": "packages/kbn-dev-utils/src/axios/errors.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTiming.meta", + "id": "def-server.AxiosResponseError.response", "type": "Object", "tags": [], - "label": "meta", - "description": [ - "hash of key-value pairs which will be stored with the timing for additional filtering and reporting" - ], + "label": "response", + "description": [], "signature": [ - "CiStatsMetadata", - " | undefined" + "AxiosResponse", + "" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/axios/errors.ts", "deprecated": false } ], @@ -3488,45 +1282,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Config", - "type": "Interface", - "tags": [], - "label": "Config", - "description": [ - "\nInformation about how CiStatsReporter should talk to the ci-stats service. Normally\nit is read from a JSON environment variable using the `parseConfig()` function\nexported by this module." - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Config.apiToken", - "type": "string", - "tags": [], - "label": "apiToken", - "description": [ - "ApiToken necessary for writing build data to ci-stats service" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Config.buildId", - "type": "string", - "tags": [], - "label": "buildId", - "description": [ - "\nuuid which should be obtained by first creating a build with the\nci-stats service and then passing it to all subsequent steps" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/dev-utils", "id": "def-server.FlagOptions", @@ -3687,150 +1442,47 @@ "type": "boolean", "tags": [], "label": "help", - "description": [], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Flags._", - "type": "Array", - "tags": [], - "label": "_", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Flags.unexpected", - "type": "Array", - "tags": [], - "label": "unexpected", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Flags.Unnamed", - "type": "IndexSignature", - "tags": [], - "label": "[key: string]: string | boolean | string[] | undefined", - "description": [], - "signature": [ - "[key: string]: string | boolean | string[] | undefined" - ], - "path": "packages/kbn-dev-utils/src/run/flags.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Message", - "type": "Interface", - "tags": [], - "label": "Message", - "description": [ - "\nThe object shape passed to ToolingLog writers each time the log is used." - ], - "path": "packages/kbn-dev-utils/src/tooling_log/message.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Message.type", - "type": "CompoundType", - "tags": [], - "label": "type", - "description": [ - "level/type of message" - ], - "signature": [ - "\"error\" | \"write\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"verbose\"" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/message.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Message.indent", - "type": "number", - "tags": [], - "label": "indent", - "description": [ - "indentation intended when message written to a text log" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/message.ts", + "description": [], + "path": "packages/kbn-dev-utils/src/run/flags.ts", "deprecated": false }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Message.source", - "type": "string", + "id": "def-server.Flags._", + "type": "Array", "tags": [], - "label": "source", - "description": [ - "type of logger this message came from" - ], + "label": "_", + "description": [], "signature": [ - "string | undefined" + "string[]" ], - "path": "packages/kbn-dev-utils/src/tooling_log/message.ts", + "path": "packages/kbn-dev-utils/src/run/flags.ts", "deprecated": false }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Message.args", + "id": "def-server.Flags.unexpected", "type": "Array", "tags": [], - "label": "args", - "description": [ - "args passed to the logging method" - ], + "label": "unexpected", + "description": [], "signature": [ - "any[]" + "string[]" ], - "path": "packages/kbn-dev-utils/src/tooling_log/message.ts", + "path": "packages/kbn-dev-utils/src/run/flags.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.MetricsOptions", - "type": "Interface", - "tags": [], - "label": "MetricsOptions", - "description": [ - "Options for reporting metrics to ci-stats" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "@kbn/dev-utils", - "id": "def-server.MetricsOptions.defaultMeta", - "type": "Object", + "id": "def-server.Flags.Unnamed", + "type": "IndexSignature", "tags": [], - "label": "defaultMeta", - "description": [ - "Default metadata to add to each metric" - ], + "label": "[key: string]: string | boolean | string[] | undefined", + "description": [], "signature": [ - "CiStatsMetadata", - " | undefined" + "[key: string]: string | boolean | string[] | undefined" ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", + "path": "packages/kbn-dev-utils/src/run/flags.ts", "deprecated": false } ], @@ -3854,13 +1506,7 @@ "label": "log", "description": [], "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - } + "ToolingLog" ], "path": "packages/kbn-dev-utils/src/run/run.ts", "deprecated": false @@ -4007,7 +1653,7 @@ "label": "log", "description": [], "signature": [ - "{ defaultLevel?: \"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\" | undefined; } | undefined" + "{ defaultLevel?: \"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\" | undefined; } | undefined" ], "path": "packages/kbn-dev-utils/src/run/run.ts", "deprecated": false @@ -4063,7 +1709,7 @@ "label": "log", "description": [], "signature": [ - "{ defaultLevel?: \"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\" | undefined; } | undefined" + "{ defaultLevel?: \"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\" | undefined; } | undefined" ], "path": "packages/kbn-dev-utils/src/run/run_with_commands.ts", "deprecated": false @@ -4160,244 +1806,6 @@ } ], "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.TimingsOptions", - "type": "Interface", - "tags": [], - "label": "TimingsOptions", - "description": [ - "Options for reporting timings to ci-stats" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.TimingsOptions.timings", - "type": "Array", - "tags": [], - "label": "timings", - "description": [ - "list of timings to record" - ], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.CiStatsTiming", - "text": "CiStatsTiming" - }, - "[]" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.TimingsOptions.upstreamBranch", - "type": "string", - "tags": [], - "label": "upstreamBranch", - "description": [ - "master, 7.x, etc, automatically detected from package.json if not specified" - ], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.TimingsOptions.kibanaUuid", - "type": "CompoundType", - "tags": [], - "label": "kibanaUuid", - "description": [ - "value of data/uuid, automatically loaded if not specified" - ], - "signature": [ - "string | null | undefined" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogOptions", - "type": "Interface", - "tags": [], - "label": "ToolingLogOptions", - "description": [], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogOptions.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\ntype name for this logger, will be assigned to the \"source\"\nproperties of messages produced by this logger" - ], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogOptions.parent", - "type": "Object", - "tags": [], - "label": "parent", - "description": [ - "\nparent ToolingLog. When a ToolingLog has a parent they will both\nshare indent and writers state. Changing the indent width or\nwriters on either log will update the other too." - ], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.ToolingLog", - "text": "ToolingLog" - }, - " | undefined" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriterConfig", - "type": "Interface", - "tags": [], - "label": "ToolingLogTextWriterConfig", - "description": [], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriterConfig.level", - "type": "CompoundType", - "tags": [], - "label": "level", - "description": [ - "\nLog level, messages below this level will be ignored" - ], - "signature": [ - "\"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\"" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriterConfig.ignoreSources", - "type": "Array", - "tags": [], - "label": "ignoreSources", - "description": [ - "\nList of message sources/ToolingLog types which will be ignored. Create\na logger with `ToolingLog#withType()` to create messages with a specific\nsource. Ignored messages will be dropped without writing." - ], - "signature": [ - "string[] | undefined" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ToolingLogTextWriterConfig.writeTo", - "type": "Object", - "tags": [], - "label": "writeTo", - "description": [ - "\nTarget which will receive formatted message lines, a common value for `writeTo`\nis process.stdout" - ], - "signature": [ - "{ write(s: string): void; }" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Writer", - "type": "Interface", - "tags": [], - "label": "Writer", - "description": [ - "\nAn object which received ToolingLog `Messages` and sends them to\nsome interface for collecting logs like stdio, or a file" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Writer.write", - "type": "Function", - "tags": [], - "label": "write", - "description": [ - "\nCalled with every log message, should return true if the message\nwas written and false if it was ignored." - ], - "signature": [ - "(msg: ", - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - }, - ") => boolean" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/writer.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.Writer.write.$1", - "type": "Object", - "tags": [], - "label": "msg", - "description": [ - "The log message to write" - ], - "signature": [ - { - "pluginId": "@kbn/dev-utils", - "scope": "server", - "docId": "kibKbnDevUtilsPluginApi", - "section": "def-server.Message", - "text": "Message" - } - ], - "path": "packages/kbn-dev-utils/src/tooling_log/writer.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false } ], "enums": [], @@ -4413,34 +1821,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestResult", - "type": "Type", - "tags": [], - "label": "CiStatsTestResult", - "description": [], - "signature": [ - "\"fail\" | \"pass\" | \"skip\"" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.CiStatsTestType", - "type": "Type", - "tags": [], - "label": "CiStatsTestType", - "description": [], - "signature": [ - "\"after all hook\" | \"after each hook\" | \"before all hook\" | \"before each hook\" | \"test\"" - ], - "path": "packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/dev-utils", "id": "def-server.CleanupTask", @@ -4620,34 +2000,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.LogLevel", - "type": "Type", - "tags": [], - "label": "LogLevel", - "description": [], - "signature": [ - "\"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\"" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/log_levels.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/dev-utils", - "id": "def-server.ParsedLogLevel", - "type": "Type", - "tags": [], - "label": "ParsedLogLevel", - "description": [], - "signature": [ - "{ name: \"error\" | \"info\" | \"success\" | \"warning\" | \"debug\" | \"silent\" | \"verbose\"; flags: { error: boolean; info: boolean; success: boolean; warning: boolean; debug: boolean; silent: boolean; verbose: boolean; }; }" - ], - "path": "packages/kbn-dev-utils/src/tooling_log/log_levels.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/dev-utils", "id": "def-server.RunFn", diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 39d04687e47e7..66ac63e6464b6 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 277 | 3 | 199 | 1 | +| 120 | 3 | 109 | 0 | ## Server diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index 48d1068132518..d0d228ea60e36 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -261,7 +261,7 @@ "label": "appSearch", "description": [], "signature": [ - "{ readonly apiRef: string; readonly apiClients: string; readonly apiKeys: string; readonly authentication: string; readonly crawlRules: string; readonly curations: string; readonly duplicateDocuments: string; readonly entryPoints: string; readonly guide: string; readonly indexingDocuments: string; readonly indexingDocumentsSchema: string; readonly logSettings: string; readonly metaEngines: string; readonly precisionTuning: string; readonly relevanceTuning: string; readonly resultSettings: string; readonly searchUI: string; readonly security: string; readonly synonyms: string; readonly webCrawler: string; readonly webCrawlerEventLogs: string; }" + "{ readonly apiRef: string; readonly apiClients: string; readonly apiKeys: string; readonly authentication: string; readonly crawlRules: string; readonly curations: string; readonly duplicateDocuments: string; readonly elasticsearchIndexedEngines: string; readonly entryPoints: string; readonly guide: string; readonly indexingDocuments: string; readonly indexingDocumentsSchema: string; readonly logSettings: string; readonly metaEngines: string; readonly precisionTuning: string; readonly relevanceTuning: string; readonly resultSettings: string; readonly searchUI: string; readonly security: string; readonly synonyms: string; readonly webCrawler: string; readonly webCrawlerEventLogs: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false @@ -326,7 +326,7 @@ "label": "logstash", "description": [], "signature": [ - "{ readonly base: string; }" + "{ readonly base: string; readonly inputElasticAgent: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false @@ -440,7 +440,7 @@ "label": "kibana", "description": [], "signature": [ - "{ readonly guide: string; readonly autocompleteSuggestions: string; readonly xpackSecurity: string; }" + "{ readonly guide: string; readonly autocompleteSuggestions: string; readonly secureSavedObject: string; readonly xpackSecurity: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false @@ -489,7 +489,7 @@ "label": "siem", "description": [], "signature": [ - "{ readonly privileges: string; readonly guide: string; readonly gettingStarted: string; readonly ml: string; readonly ruleChangeLog: string; readonly detectionsReq: string; readonly networkMap: string; readonly troubleshootGaps: string; }" + "{ readonly privileges: string; readonly guide: string; readonly gettingStarted: string; readonly ml: string; readonly ruleChangeLog: string; readonly detectionsReq: string; readonly networkMap: string; readonly troubleshootGaps: string; readonly ruleApiOverview: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false @@ -502,7 +502,7 @@ "label": "securitySolution", "description": [], "signature": [ - "{ readonly trustedApps: string; readonly eventFilters: string; }" + "{ readonly trustedApps: string; readonly eventFilters: string; readonly blocklist: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false @@ -749,7 +749,7 @@ "label": "fleet", "description": [], "signature": [ - "{ readonly beatsAgentComparison: string; readonly guide: string; readonly fleetServer: string; readonly fleetServerAddFleetServer: string; readonly settings: string; readonly settingsFleetServerHostSettings: string; readonly settingsFleetServerProxySettings: string; readonly troubleshooting: string; readonly elasticAgent: string; readonly datastreams: string; readonly datastreamsILM: string; readonly datastreamsNamingScheme: string; readonly installElasticAgent: string; readonly installElasticAgentStandalone: string; readonly upgradeElasticAgent: string; readonly upgradeElasticAgent712lower: string; readonly learnMoreBlog: string; readonly apiKeysLearnMore: string; readonly onPremRegistry: string; }" + "{ readonly beatsAgentComparison: string; readonly guide: string; readonly fleetServer: string; readonly fleetServerAddFleetServer: string; readonly settings: string; readonly settingsFleetServerHostSettings: string; readonly settingsFleetServerProxySettings: string; readonly troubleshooting: string; readonly elasticAgent: string; readonly datastreams: string; readonly datastreamsILM: string; readonly datastreamsNamingScheme: string; readonly installElasticAgent: string; readonly installElasticAgentStandalone: string; readonly upgradeElasticAgent: string; readonly upgradeElasticAgent712lower: string; readonly learnMoreBlog: string; readonly apiKeysLearnMore: string; readonly onPremRegistry: string; readonly secureLogstash: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false @@ -805,6 +805,19 @@ ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false + }, + { + "parentPluginId": "@kbn/doc-links", + "id": "def-server.DocLinks.kibanaUpgradeSavedObjects", + "type": "Object", + "tags": [], + "label": "kibanaUpgradeSavedObjects", + "description": [], + "signature": [ + "{ readonly resolveMigrationFailures: string; }" + ], + "path": "packages/kbn-doc-links/src/types.ts", + "deprecated": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 3f83c0371ca56..4d23bdfc99533 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/doc-links plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 63 | 0 | 63 | 2 | +| 64 | 0 | 64 | 2 | ## Server diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index a2568bc87ea2a..3fd9067f34bae 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/docs-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] 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. --- diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 965ed6526f6a9..2372ce2f44342 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-archiver plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] 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. --- diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 3c39bf2f5d09d..f51fa006128aa 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-query plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] 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. --- diff --git a/api_docs/kbn_eslint_plugin_imports.devdocs.json b/api_docs/kbn_eslint_plugin_imports.devdocs.json index 47400f2102348..c1b952dc57cd6 100644 --- a/api_docs/kbn_eslint_plugin_imports.devdocs.json +++ b/api_docs/kbn_eslint_plugin_imports.devdocs.json @@ -13,56 +13,34 @@ "functions": [ { "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.resolveKibanaImport", + "id": "def-server.getImportResolver", "type": "Function", "tags": [], - "label": "resolveKibanaImport", + "label": "getImportResolver", "description": [ - "\nResolve an import request. All import requests in the repository should return a result, if they don't it's a bug\nwhich should be caught by the `@kbn/import/no_unresolved` rule, which should never be disabled. If you need help\nadding support for an import style please reach out to operations.\n" + "\nCreate a request resolver for ESLint, requires a PluginPackageResolver from @kbn/bazel-packages which will\nbe created and cached on contextServices automatically.\n\nAll import requests in the repository should return a result, if they don't it's a bug\nwhich should be caught by the `@kbn/import/no_unresolved` rule, which should never be disabled. If you need help\nadding support for an import style please reach out to operations." ], "signature": [ - "(req: string, dirname: string) => ", - { - "pluginId": "@kbn/eslint-plugin-imports", - "scope": "server", - "docId": "kibKbnEslintPluginImportsPluginApi", - "section": "def-server.ResolveResult", - "text": "ResolveResult" - }, - " | null" + "(context: ", + "Rule", + ".RuleContext) => ", + "ImportResolver" ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_kibana_import.ts", + "path": "packages/kbn-eslint-plugin-imports/src/get_import_resolver.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.resolveKibanaImport.$1", - "type": "string", - "tags": [], - "label": "req", - "description": [ - "Text from an import/require, like `../../src/core/public` or `@kbn/std`" - ], - "signature": [ - "string" - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_kibana_import.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.resolveKibanaImport.$2", - "type": "string", + "id": "def-server.getImportResolver.$1", + "type": "Object", "tags": [], - "label": "dirname", - "description": [ - "The directory of the file where the req was found" - ], + "label": "context", + "description": [], "signature": [ - "string" + "Rule", + ".RuleContext" ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_kibana_import.ts", + "path": "packages/kbn-eslint-plugin-imports/src/get_import_resolver.ts", "deprecated": false, "isRequired": true } @@ -71,166 +49,9 @@ "initialIsOpen": false } ], - "interfaces": [ - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.FileResult", - "type": "Interface", - "tags": [], - "label": "FileResult", - "description": [ - "\nResolution result indicating that the import resolves to a specific file, possible in a nodeModule, with\nthe path of that file and the name of the nodeModule if applicable" - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.FileResult.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"file\"" - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.FileResult.absolute", - "type": "string", - "tags": [], - "label": "absolute", - "description": [], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.FileResult.nodeModule", - "type": "string", - "tags": [], - "label": "nodeModule", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.IgnoreResult", - "type": "Interface", - "tags": [], - "label": "IgnoreResult", - "description": [ - "\nResolution result indicating that the import request can't be resolved, but it shouldn't need to be\nbecause the file that is imported can't be resolved from the source alone, usually because it is explicitly\nimporting a build asset. Import requests which meet this criteria are manually added to the resolver and\ncan be trusted to exist after the build it complete or in their used location." - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.IgnoreResult.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"ignore\"" - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.TypesResult", - "type": "Interface", - "tags": [], - "label": "TypesResult", - "description": [ - "\nResolution result indicating that the import only resolves to an @types package, including the name of\nthe @types package. We don't validate the sub-path of these import strings and assume that TS will validate\nthem, we just need to know that they don't map to actual files on the filesystem or modules which will\nend up in the build or running code." - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.TypesResult.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"@types\"" - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.TypesResult.module", - "type": "string", - "tags": [], - "label": "module", - "description": [], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ], + "interfaces": [], "enums": [], - "misc": [ - { - "parentPluginId": "@kbn/eslint-plugin-imports", - "id": "def-server.ResolveResult", - "type": "Type", - "tags": [], - "label": "ResolveResult", - "description": [ - "\nPossible resolve result types" - ], - "signature": [ - { - "pluginId": "@kbn/eslint-plugin-imports", - "scope": "server", - "docId": "kibKbnEslintPluginImportsPluginApi", - "section": "def-server.IgnoreResult", - "text": "IgnoreResult" - }, - " | ", - { - "pluginId": "@kbn/eslint-plugin-imports", - "scope": "server", - "docId": "kibKbnEslintPluginImportsPluginApi", - "section": "def-server.TypesResult", - "text": "TypesResult" - }, - " | ", - { - "pluginId": "@kbn/eslint-plugin-imports", - "scope": "server", - "docId": "kibKbnEslintPluginImportsPluginApi", - "section": "def-server.FileResult", - "text": "FileResult" - } - ], - "path": "packages/kbn-eslint-plugin-imports/src/resolve_result.ts", - "deprecated": false, - "initialIsOpen": false - } - ], + "misc": [], "objects": [] }, "common": { diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index b1469acd5ce18..39fd23924e882 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] 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. --- @@ -18,16 +18,10 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 13 | 0 | 6 | 0 | +| 2 | 0 | 1 | 0 | ## Server ### Functions -### Interfaces - - -### Consts, variables and types - - diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index b100124a4b173..34d156709b95c 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/field-types plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] 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. --- diff --git a/api_docs/kbn_find_used_node_modules.devdocs.json b/api_docs/kbn_find_used_node_modules.devdocs.json new file mode 100644 index 0000000000000..8635fa4c975ef --- /dev/null +++ b/api_docs/kbn_find_used_node_modules.devdocs.json @@ -0,0 +1,61 @@ +{ + "id": "@kbn/find-used-node-modules", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/find-used-node-modules", + "id": "def-server.findUsedNodeModules", + "type": "Function", + "tags": [], + "label": "findUsedNodeModules", + "description": [ + "\nParse a list of entry paths and find the node_modules which are required by them. If the\nentry path requires/imports a non-node_module then that file is scanned too, deeply, until\nall referenced files are scanned.\n\nOptionally, we can find the used peers of the used node_modules. This will keep track of all\nthe paths we use to enter a node_module and then traverse from those points, finding the\nused modules and comparing those to the `peerDependencies` listed in the node_module's package.json\nfile. If a used dependeny is in the `peerDependencies` and is used by the node_module it will\nbe included in the results.\n\nThis was implemented mostly for `@emotion/react` which is used by @elastic/eui but only listed\nas a peerDependency. If we didn't keep it in the Kibana package.json then the package would not\nbe installed and cause an error on startup because `@emotion/react` can't be found. We used to\nsolve this by scanning the node_modules directory for all the packages which are used but that\nwas much slower and lead to extra entries in package.json." + ], + "signature": [ + "(options: Options) => Promise" + ], + "path": "packages/kbn-find-used-node-modules/src/find_used_node_modules.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/find-used-node-modules", + "id": "def-server.findUsedNodeModules.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "Options" + ], + "path": "packages/kbn-find-used-node-modules/src/find_used_node_modules.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx new file mode 100644 index 0000000000000..95310ec27972b --- /dev/null +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnFindUsedNodeModulesPluginApi +slug: /kibana-dev-docs/api/kbn-find-used-node-modules +title: "@kbn/find-used-node-modules" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/find-used-node-modules plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] +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 kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 0 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index f678ebba804cc..891a77319d2c0 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/generate plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] 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. --- diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index cadd77a894b98..f1c2d35173a65 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/i18n plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] 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. --- diff --git a/api_docs/kbn_import_resolver.devdocs.json b/api_docs/kbn_import_resolver.devdocs.json new file mode 100644 index 0000000000000..50e7cdda82ff7 --- /dev/null +++ b/api_docs/kbn_import_resolver.devdocs.json @@ -0,0 +1,715 @@ +{ + "id": "@kbn/import-resolver", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver", + "type": "Class", + "tags": [], + "label": "ImportResolver", + "description": [], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "(repoRoot: string) => ", + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.ImportResolver", + "text": "ImportResolver" + } + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.create.$1", + "type": "string", + "tags": [], + "label": "repoRoot", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.Unnamed.$1", + "type": "string", + "tags": [], + "label": "cwd", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "pkgMap", + "description": [], + "signature": [ + "PackageMap" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "synthPkgMap", + "description": [], + "signature": [ + "PackageMap" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.getPackageIdForPath", + "type": "Function", + "tags": [], + "label": "getPackageIdForPath", + "description": [], + "signature": [ + "(path: string) => string | null" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.getPackageIdForPath.$1", + "type": "string", + "tags": [], + "label": "path", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.getAbsolutePackageDir", + "type": "Function", + "tags": [], + "label": "getAbsolutePackageDir", + "description": [], + "signature": [ + "(pkgId: string) => string | null" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.getAbsolutePackageDir.$1", + "type": "string", + "tags": [], + "label": "pkgId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.isBazelPackage", + "type": "Function", + "tags": [], + "label": "isBazelPackage", + "description": [], + "signature": [ + "(pkgId: string) => boolean" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.isBazelPackage.$1", + "type": "string", + "tags": [], + "label": "pkgId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.isSyntheticPackage", + "type": "Function", + "tags": [], + "label": "isSyntheticPackage", + "description": [], + "signature": [ + "(pkgId: string) => boolean" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.isSyntheticPackage.$1", + "type": "string", + "tags": [], + "label": "pkgId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.resolve", + "type": "Function", + "tags": [], + "label": "resolve", + "description": [ + "\nResolve an import request from a file in the given dirname" + ], + "signature": [ + "(req: string, dirname: string) => ", + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.ResolveResult", + "text": "ResolveResult" + }, + " | null" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.resolve.$1", + "type": "string", + "tags": [], + "label": "req", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportResolver.resolve.$2", + "type": "string", + "tags": [], + "label": "dirname", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/import_resolver.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.getPackageRelativeImportReq", + "type": "Function", + "tags": [], + "label": "getPackageRelativeImportReq", + "description": [], + "signature": [ + "(options: PackageRelativeImportReqOptions) => string" + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.getPackageRelativeImportReq.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "PackageRelativeImportReqOptions" + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.getRelativeImportReq", + "type": "Function", + "tags": [], + "label": "getRelativeImportReq", + "description": [], + "signature": [ + "(options: RelativeImportReqOptions) => string" + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.getRelativeImportReq.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "RelativeImportReqOptions" + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.reduceImportRequest", + "type": "Function", + "tags": [], + "label": "reduceImportRequest", + "description": [], + "signature": [ + "(req: string, type: ", + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.ImportType", + "text": "ImportType" + }, + ", original: string | undefined) => string" + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.reduceImportRequest.$1", + "type": "string", + "tags": [], + "label": "req", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.reduceImportRequest.$2", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.ImportType", + "text": "ImportType" + } + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.reduceImportRequest.$3", + "type": "string", + "tags": [], + "label": "original", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.BuiltInResult", + "type": "Interface", + "tags": [], + "label": "BuiltInResult", + "description": [ + "\nResolution result indicating that the import request resolves to a built-in node library" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.BuiltInResult.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"built-in\"" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.FileResult", + "type": "Interface", + "tags": [], + "label": "FileResult", + "description": [ + "\nResolution result indicating that the import resolves to a specific file, possible in a nodeModule, with\nthe path of that file and the name of the nodeModule if applicable" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.FileResult.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"file\"" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.FileResult.absolute", + "type": "string", + "tags": [], + "label": "absolute", + "description": [], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.FileResult.nodeModule", + "type": "string", + "tags": [], + "label": "nodeModule", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.FileResult.prefix", + "type": "string", + "tags": [], + "label": "prefix", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.FileResult.postfix", + "type": "string", + "tags": [], + "label": "postfix", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.IgnoreResult", + "type": "Interface", + "tags": [], + "label": "IgnoreResult", + "description": [ + "\nResolution result indicating that the import request can't be resolved, but it shouldn't need to be\nbecause the file that is imported can't be resolved from the source alone, usually because it is explicitly\nimporting a build asset. Import requests which meet this criteria are manually added to the resolver and\ncan be trusted to exist after the build it complete or in their used location." + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.IgnoreResult.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"ignore\"" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.OptionalDepResult", + "type": "Interface", + "tags": [], + "label": "OptionalDepResult", + "description": [ + "\nResolution result indicating that the import request resolves to an npm dep which isn't\ncurrently installed so assumed to be optional" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.OptionalDepResult.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"optional-and-missing\"" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.TypesResult", + "type": "Interface", + "tags": [], + "label": "TypesResult", + "description": [ + "\nResolution result indicating that the import only resolves to an @types package, including the name of\nthe @types package. We don't validate the sub-path of these import strings and assume that TS will validate\nthem, we just need to know that they don't map to actual files on the filesystem or modules which will\nend up in the build or running code." + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.TypesResult.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"@types\"" + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.TypesResult.module", + "type": "string", + "tags": [], + "label": "module", + "description": [], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ImportType", + "type": "Type", + "tags": [], + "label": "ImportType", + "description": [], + "signature": [ + "\"esm\" | \"require\" | \"require-resolve\" | \"jest\"" + ], + "path": "packages/kbn-import-resolver/src/helpers/import_req.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/import-resolver", + "id": "def-server.ResolveResult", + "type": "Type", + "tags": [], + "label": "ResolveResult", + "description": [ + "\nPossible resolve result types" + ], + "signature": [ + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.BuiltInResult", + "text": "BuiltInResult" + }, + " | ", + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.IgnoreResult", + "text": "IgnoreResult" + }, + " | ", + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.TypesResult", + "text": "TypesResult" + }, + " | ", + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.FileResult", + "text": "FileResult" + }, + " | ", + { + "pluginId": "@kbn/import-resolver", + "scope": "server", + "docId": "kibKbnImportResolverPluginApi", + "section": "def-server.OptionalDepResult", + "text": "OptionalDepResult" + } + ], + "path": "packages/kbn-import-resolver/src/resolve_result.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx new file mode 100644 index 0000000000000..ea7b7ff9aba1d --- /dev/null +++ b/api_docs/kbn_import_resolver.mdx @@ -0,0 +1,36 @@ +--- +id: kibKbnImportResolverPluginApi +slug: /kibana-dev-docs/api/kbn-import-resolver +title: "@kbn/import-resolver" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/import-resolver plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] +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 kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 43 | 0 | 36 | 0 | + +## Server + +### Functions + + +### Classes + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index d07e5a0a44859..7a6b18efd63c5 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/interpreter plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] 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. --- diff --git a/api_docs/kbn_io_ts_utils.devdocs.json b/api_docs/kbn_io_ts_utils.devdocs.json index 6a4ae05e82231..0eac86c5269a4 100644 --- a/api_docs/kbn_io_ts_utils.devdocs.json +++ b/api_docs/kbn_io_ts_utils.devdocs.json @@ -59,10 +59,10 @@ " | ", "StringType", " | ", - "NumberType", - " | ", "BooleanType", " | ", + "NumberType", + " | ", "RecordC", "<", "Mixed", diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 2e6530549dee3..0890c33d45907 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/io-ts-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] 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. --- diff --git a/api_docs/kbn_jest_serializers.devdocs.json b/api_docs/kbn_jest_serializers.devdocs.json new file mode 100644 index 0000000000000..f4595b16f9025 --- /dev/null +++ b/api_docs/kbn_jest_serializers.devdocs.json @@ -0,0 +1,224 @@ +{ + "id": "@kbn/jest-serializers", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createAbsolutePathSerializer", + "type": "Function", + "tags": [], + "label": "createAbsolutePathSerializer", + "description": [], + "signature": [ + "(rootPath: string, replacement: string) => { test: (value: any) => boolean; serialize: (value: string) => string; }" + ], + "path": "packages/kbn-jest-serializers/src/absolute_path_serializer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createAbsolutePathSerializer.$1", + "type": "string", + "tags": [], + "label": "rootPath", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-jest-serializers/src/absolute_path_serializer.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createAbsolutePathSerializer.$2", + "type": "string", + "tags": [], + "label": "replacement", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-jest-serializers/src/absolute_path_serializer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createAnyInstanceSerializer", + "type": "Function", + "tags": [], + "label": "createAnyInstanceSerializer", + "description": [], + "signature": [ + "(Class: Function, name: string | ((instance: any) => string) | undefined) => { test: (v: any) => boolean; serialize: (v: any) => string; }" + ], + "path": "packages/kbn-jest-serializers/src/any_instance_serizlizer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createAnyInstanceSerializer.$1", + "type": "Object", + "tags": [], + "label": "Class", + "description": [], + "signature": [ + "Function" + ], + "path": "packages/kbn-jest-serializers/src/any_instance_serizlizer.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createAnyInstanceSerializer.$2", + "type": "CompoundType", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string | ((instance: any) => string) | undefined" + ], + "path": "packages/kbn-jest-serializers/src/any_instance_serizlizer.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createRecursiveSerializer", + "type": "Function", + "tags": [], + "label": "createRecursiveSerializer", + "description": [], + "signature": [ + "(test: (v: any) => boolean, print: (v: any, printRaw: (v: string) => RawPrint) => string | RawPrint) => { test: (v: any) => boolean; serialize: (v: any, ...rest: any[]) => any; }" + ], + "path": "packages/kbn-jest-serializers/src/recursive_serializer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createRecursiveSerializer.$1", + "type": "Function", + "tags": [], + "label": "test", + "description": [], + "signature": [ + "(v: any) => boolean" + ], + "path": "packages/kbn-jest-serializers/src/recursive_serializer.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createRecursiveSerializer.$2", + "type": "Function", + "tags": [], + "label": "print", + "description": [], + "signature": [ + "(v: any, printRaw: (v: string) => RawPrint) => string | RawPrint" + ], + "path": "packages/kbn-jest-serializers/src/recursive_serializer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createReplaceSerializer", + "type": "Function", + "tags": [], + "label": "createReplaceSerializer", + "description": [], + "signature": [ + "(toReplace: string | RegExp, replaceWith: string | Replacer) => { test: (v: any) => boolean; serialize: (v: any, ...rest: any[]) => any; }" + ], + "path": "packages/kbn-jest-serializers/src/replace_serializer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createReplaceSerializer.$1", + "type": "CompoundType", + "tags": [], + "label": "toReplace", + "description": [], + "signature": [ + "string | RegExp" + ], + "path": "packages/kbn-jest-serializers/src/replace_serializer.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createReplaceSerializer.$2", + "type": "CompoundType", + "tags": [], + "label": "replaceWith", + "description": [], + "signature": [ + "string | Replacer" + ], + "path": "packages/kbn-jest-serializers/src/replace_serializer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/jest-serializers", + "id": "def-server.createStripAnsiSerializer", + "type": "Function", + "tags": [], + "label": "createStripAnsiSerializer", + "description": [], + "signature": [ + "() => { test: (v: any) => boolean; serialize: (v: any, ...rest: any[]) => any; }" + ], + "path": "packages/kbn-jest-serializers/src/strip_ansi_serializer.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx new file mode 100644 index 0000000000000..f9e1f71dc7804 --- /dev/null +++ b/api_docs/kbn_jest_serializers.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnJestSerializersPluginApi +slug: /kibana-dev-docs/api/kbn-jest-serializers +title: "@kbn/jest-serializers" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/jest-serializers plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] +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 kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 13 | 0 | 13 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_kibana_json_schema.devdocs.json b/api_docs/kbn_kibana_json_schema.devdocs.json new file mode 100644 index 0000000000000..0cc8a1e25feb5 --- /dev/null +++ b/api_docs/kbn_kibana_json_schema.devdocs.json @@ -0,0 +1,844 @@ +{ + "id": "@kbn/kibana-json-schema", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema", + "type": "Object", + "tags": [], + "label": "KibanaJsonSchema", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"object\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.required", + "type": "Array", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties", + "type": "Object", + "tags": [], + "label": "properties", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.id", + "type": "Object", + "tags": [], + "label": "id", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.id.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.id.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.id.pattern", + "type": "string", + "tags": [], + "label": "pattern", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.version", + "type": "Object", + "tags": [], + "label": "version", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.version.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.version.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.version.pattern", + "type": "string", + "tags": [], + "label": "pattern", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.kibanaVersion", + "type": "Object", + "tags": [], + "label": "kibanaVersion", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.kibanaVersion.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.kibanaVersion.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.kibanaVersion.pattern", + "type": "string", + "tags": [], + "label": "pattern", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.type", + "type": "Object", + "tags": [], + "label": "type", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.type.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.type.enum", + "type": "Array", + "tags": [], + "label": "enum", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.configPath", + "type": "Object", + "tags": [], + "label": "configPath", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.configPath.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.configPath.oneOf", + "type": "Array", + "tags": [], + "label": "oneOf", + "description": [], + "signature": [ + "({ type: \"string\"; } | { type: \"array\"; items: { type: \"string\"; }; })[]" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredPlugins", + "type": "Object", + "tags": [], + "label": "requiredPlugins", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredPlugins.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredPlugins.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"array\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredPlugins.items", + "type": "Object", + "tags": [], + "label": "items", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredPlugins.items.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.optionalPlugins", + "type": "Object", + "tags": [], + "label": "optionalPlugins", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.optionalPlugins.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.optionalPlugins.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"array\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.optionalPlugins.items", + "type": "Object", + "tags": [], + "label": "items", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.optionalPlugins.items.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredBundles", + "type": "Object", + "tags": [], + "label": "requiredBundles", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredBundles.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredBundles.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"array\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredBundles.items", + "type": "Object", + "tags": [], + "label": "items", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.requiredBundles.items.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.ui", + "type": "Object", + "tags": [], + "label": "ui", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.ui.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.ui.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"boolean\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.server", + "type": "Object", + "tags": [], + "label": "server", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.server.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.server.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"boolean\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.extraPublicDirs", + "type": "Object", + "tags": [], + "label": "extraPublicDirs", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.extraPublicDirs.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.extraPublicDirs.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"array\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.extraPublicDirs.items", + "type": "Object", + "tags": [], + "label": "items", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.extraPublicDirs.items.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.serviceFolders", + "type": "Object", + "tags": [], + "label": "serviceFolders", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.serviceFolders.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.serviceFolders.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"array\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.serviceFolders.items", + "type": "Object", + "tags": [], + "label": "items", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.serviceFolders.items.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner", + "type": "Object", + "tags": [], + "label": "owner", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"object\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.required", + "type": "Array", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.properties", + "type": "Object", + "tags": [], + "label": "properties", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.properties.name", + "type": "Object", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.properties.name.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.properties.name.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.properties.githubTeam", + "type": "Object", + "tags": [], + "label": "githubTeam", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.properties.githubTeam.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.owner.properties.githubTeam.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.description", + "type": "Object", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.description.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.description.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"string\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.enabledOnAnonymousPages", + "type": "Object", + "tags": [], + "label": "enabledOnAnonymousPages", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.enabledOnAnonymousPages.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/kibana-json-schema", + "id": "def-server.KibanaJsonSchema.properties.enabledOnAnonymousPages.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"boolean\"" + ], + "path": "packages/kbn-kibana-json-schema/src/kibana_json_schema.ts", + "deprecated": false + } + ] + } + ] + } + ], + "initialIsOpen": false + } + ] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_kibana_json_schema.mdx b/api_docs/kbn_kibana_json_schema.mdx new file mode 100644 index 0000000000000..16776b0a20e55 --- /dev/null +++ b/api_docs/kbn_kibana_json_schema.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnKibanaJsonSchemaPluginApi +slug: /kibana-dev-docs/api/kbn-kibana-json-schema +title: "@kbn/kibana-json-schema" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/kibana-json-schema plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-json-schema'] +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 kbnKibanaJsonSchemaObj from './kbn_kibana_json_schema.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 69 | 0 | 69 | 0 | + +## Server + +### Objects + + diff --git a/api_docs/kbn_logging.devdocs.json b/api_docs/kbn_logging.devdocs.json index f9bca4daaf11f..00bfe3a5f742b 100644 --- a/api_docs/kbn_logging.devdocs.json +++ b/api_docs/kbn_logging.devdocs.json @@ -644,7 +644,7 @@ "label": "EcsEventOutcome", "description": [], "signature": [ - "\"unknown\" | \"success\" | \"failure\"" + "\"success\" | \"unknown\" | \"failure\"" ], "path": "packages/kbn-logging/src/ecs/event.ts", "deprecated": false, @@ -658,7 +658,7 @@ "label": "EcsEventType", "description": [], "signature": [ - "\"start\" | \"user\" | \"error\" | \"info\" | \"group\" | \"end\" | \"protocol\" | \"connection\" | \"access\" | \"admin\" | \"allowed\" | \"change\" | \"creation\" | \"deletion\" | \"denied\" | \"installation\"" + "\"start\" | \"error\" | \"user\" | \"info\" | \"group\" | \"end\" | \"admin\" | \"protocol\" | \"connection\" | \"access\" | \"allowed\" | \"change\" | \"creation\" | \"deletion\" | \"denied\" | \"installation\"" ], "path": "packages/kbn-logging/src/ecs/event.ts", "deprecated": false, diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 071f96e712bb7..d1bd851ab5758 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/logging plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] 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. --- diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 3eee38ebb640b..490414113832e 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/logging-mocks plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] 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. --- diff --git a/api_docs/kbn_mapbox_gl.devdocs.json b/api_docs/kbn_mapbox_gl.devdocs.json index e7df5d6118ad9..845de56441c91 100644 --- a/api_docs/kbn_mapbox_gl.devdocs.json +++ b/api_docs/kbn_mapbox_gl.devdocs.json @@ -12,77 +12,276 @@ "classes": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat", + "id": "def-server.GeoJSONSource", "type": "Class", "tags": [], - "label": "LngLat", - "description": [ - "\nLngLat" - ], + "label": "GeoJSONSource", + "description": [], "signature": [ - "maplibregl.LngLat" + "maplibregl.GeoJSONSource extends maplibregl.Evented implements maplibregl.Source" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.lng", + "id": "def-server.GeoJSONSource.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"geojson\"" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.minzoom", "type": "number", "tags": [], - "label": "lng", + "label": "minzoom", "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.lat", + "id": "def-server.GeoJSONSource.maxzoom", "type": "number", "tags": [], - "label": "lat", + "label": "maxzoom", "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.Unnamed", - "type": "Function", + "id": "def-server.GeoJSONSource.tileSize", + "type": "number", + "tags": [], + "label": "tileSize", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.attribution", + "type": "string", + "tags": [], + "label": "attribution", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.promoteId", + "type": "CompoundType", + "tags": [], + "label": "promoteId", + "description": [], + "signature": [ + "string | { [_: string]: string; }" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.isTileClipped", + "type": "boolean", + "tags": [], + "label": "isTileClipped", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.reparseOverscaled", + "type": "boolean", + "tags": [], + "label": "reparseOverscaled", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource._data", + "type": "CompoundType", + "tags": [], + "label": "_data", + "description": [], + "signature": [ + "string | GeoJSON.GeoJSON" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource._options", + "type": "Any", + "tags": [], + "label": "_options", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.workerOptions", + "type": "Any", + "tags": [], + "label": "workerOptions", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.map", + "type": "Object", + "tags": [], + "label": "map", + "description": [], + "signature": [ + "maplibregl.Map" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.actor", + "type": "Object", + "tags": [], + "label": "actor", + "description": [], + "signature": [ + "maplibregl.Actor" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource._pendingLoads", + "type": "number", + "tags": [], + "label": "_pendingLoads", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource._collectResourceTiming", + "type": "boolean", + "tags": [], + "label": "_collectResourceTiming", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource._removed", + "type": "boolean", "tags": [], + "label": "_removed", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.Unnamed", + "type": "Function", + "tags": [ + "private" + ], "label": "Constructor", "description": [], "signature": [ "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.Unnamed.$1", - "type": "number", + "id": "def-server.GeoJSONSource.Unnamed.$1", + "type": "string", "tags": [], - "label": "lng", + "label": "id", "description": [], "signature": [ - "number" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.Unnamed.$2", - "type": "number", + "id": "def-server.GeoJSONSource.Unnamed.$2", + "type": "CompoundType", "tags": [], - "label": "lat", + "label": "options", "description": [], "signature": [ - "number" + "maplibregl.GeoJSONSourceOptions" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "dispatcher", + "description": [], + "signature": [ + "maplibregl.Dispatcher" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.Unnamed.$4", + "type": "Object", + "tags": [], + "label": "eventedParent", + "description": [], + "signature": [ + "maplibregl.Evented" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -91,81 +290,43 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.wrap", - "type": "Function", - "tags": [], - "label": "wrap", - "description": [ - "Return a new LngLat object whose longitude is wrapped to the range (-180, 180)." - ], - "signature": [ - "() => maplibregl.LngLat" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.toArray", - "type": "Function", - "tags": [], - "label": "toArray", - "description": [ - "Return a LngLat as an array" - ], - "signature": [ - "() => number[]" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.toString", + "id": "def-server.GeoJSONSource.load", "type": "Function", "tags": [], - "label": "toString", - "description": [ - "Return a LngLat as a string" - ], + "label": "load", + "description": [], "signature": [ - "() => string" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.distanceTo", + "id": "def-server.GeoJSONSource.onAdd", "type": "Function", "tags": [], - "label": "distanceTo", - "description": [ - "Returns the approximate distance between a pair of coordinates in meters\nUses the Haversine Formula (from R.W. Sinnott, \"Virtues of the Haversine\", Sky and Telescope, vol. 68, no. 2, 1984, p. 159)" - ], + "label": "onAdd", + "description": [], "signature": [ - "(lngLat: maplibregl.LngLat) => number" + "(map: maplibregl.Map) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.distanceTo.$1", + "id": "def-server.GeoJSONSource.onAdd.$1", "type": "Object", "tags": [], - "label": "lngLat", + "label": "map", "description": [], "signature": [ - "maplibregl.LngLat" + "maplibregl.Map" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -174,206 +335,252 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.toBounds", + "id": "def-server.GeoJSONSource.setData", "type": "Function", "tags": [], - "label": "toBounds", - "description": [], + "label": "setData", + "description": [ + "\nSets the GeoJSON data and re-renders the map.\n" + ], "signature": [ - "(radius: number) => maplibregl.LngLatBounds" + "(data: string | GeoJSON.GeoJSON) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.toBounds.$1", - "type": "number", + "id": "def-server.GeoJSONSource.setData.$1", + "type": "CompoundType", "tags": [], - "label": "radius", - "description": [], + "label": "data", + "description": [ + "A GeoJSON data object or a URL to one. The latter is preferable in the case of large GeoJSON files." + ], "signature": [ - "number" + "string | GeoJSON.GeoJSON" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "this" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.convert", + "id": "def-server.GeoJSONSource.getClusterExpansionZoom", "type": "Function", "tags": [], - "label": "convert", - "description": [], + "label": "getClusterExpansionZoom", + "description": [ + "\nFor clustered sources, fetches the zoom at which the given cluster expands.\n" + ], "signature": [ - "(input: maplibregl.LngLatLike) => maplibregl.LngLat" + "(clusterId: number, callback: maplibregl.Callback) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLat.convert.$1", - "type": "CompoundType", + "id": "def-server.GeoJSONSource.getClusterExpansionZoom.$1", + "type": "number", "tags": [], - "label": "input", - "description": [], + "label": "clusterId", + "description": [ + "The value of the cluster's `cluster_id` property." + ], "signature": [ - "maplibregl.LngLatLike" + "number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.getClusterExpansionZoom.$2", + "type": "Function", + "tags": [], + "label": "callback", + "description": [ + "A callback to be called when the zoom value is retrieved (`(error, zoom) => { ... }`)." + ], + "signature": [ + "maplibregl.Callback" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds", - "type": "Class", - "tags": [], - "label": "LngLatBounds", - "description": [ - "\nLngLatBounds" - ], - "signature": [ - "maplibregl.LngLatBounds" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.sw", - "type": "CompoundType", - "tags": [], - "label": "sw", - "description": [], - "signature": [ - "[number, number] | maplibregl.LngLat | { lng: number; lat: number; } | { lon: number; lat: number; }" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.ne", - "type": "CompoundType", - "tags": [], - "label": "ne", - "description": [], - "signature": [ - "[number, number] | maplibregl.LngLat | { lng: number; lat: number; } | { lon: number; lat: number; }" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "returnComment": [ + "this" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.Unnamed", + "id": "def-server.GeoJSONSource.getClusterChildren", "type": "Function", "tags": [], - "label": "Constructor", - "description": [], + "label": "getClusterChildren", + "description": [ + "\nFor clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).\n" + ], "signature": [ - "any" + "(clusterId: number, callback: maplibregl.Callback[]>) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.Unnamed.$1", - "type": "CompoundType", + "id": "def-server.GeoJSONSource.getClusterChildren.$1", + "type": "number", "tags": [], - "label": "boundsLike", - "description": [], + "label": "clusterId", + "description": [ + "The value of the cluster's `cluster_id` property." + ], "signature": [ - "[number, number, number, number] | [maplibregl.LngLatLike, maplibregl.LngLatLike] | undefined" + "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.getClusterChildren.$2", + "type": "Function", + "tags": [], + "label": "callback", + "description": [ + "A callback to be called when the features are retrieved (`(error, features) => { ... }`)." + ], + "signature": [ + "maplibregl.Callback[]>" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "this" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.Unnamed", + "id": "def-server.GeoJSONSource.getClusterLeaves", "type": "Function", "tags": [], - "label": "Constructor", - "description": [], + "label": "getClusterLeaves", + "description": [ + "\nFor clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).\n" + ], "signature": [ - "any" + "(clusterId: number, limit: number, offset: number, callback: maplibregl.Callback[]>) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.Unnamed.$1", - "type": "CompoundType", + "id": "def-server.GeoJSONSource.getClusterLeaves.$1", + "type": "number", "tags": [], - "label": "sw", - "description": [], + "label": "clusterId", + "description": [ + "The value of the cluster's `cluster_id` property." + ], "signature": [ - "maplibregl.LngLatLike" + "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.Unnamed.$2", - "type": "CompoundType", + "id": "def-server.GeoJSONSource.getClusterLeaves.$2", + "type": "number", "tags": [], - "label": "ne", - "description": [], + "label": "limit", + "description": [ + "The maximum number of features to return." + ], "signature": [ - "maplibregl.LngLatLike" + "number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.getClusterLeaves.$3", + "type": "number", + "tags": [], + "label": "offset", + "description": [ + "The number of features to skip (e.g. for pagination)." + ], + "signature": [ + "number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.getClusterLeaves.$4", + "type": "Function", + "tags": [], + "label": "callback", + "description": [ + "A callback to be called when the features are retrieved (`(error, features) => { ... }`)." + ], + "signature": [ + "maplibregl.Callback[]>" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "this" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.setNorthEast", + "id": "def-server.GeoJSONSource._updateWorkerData", "type": "Function", "tags": [], - "label": "setNorthEast", + "label": "_updateWorkerData", "description": [], "signature": [ - "(ne: maplibregl.LngLatLike) => this" + "(sourceDataType: maplibregl.MapSourceDataType) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.setNorthEast.$1", + "id": "def-server.GeoJSONSource._updateWorkerData.$1", "type": "CompoundType", "tags": [], - "label": "ne", + "label": "sourceDataType", "description": [], "signature": [ - "maplibregl.LngLatLike" + "maplibregl.MapSourceDataType" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -382,28 +589,57 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.setSouthWest", + "id": "def-server.GeoJSONSource.loaded", "type": "Function", "tags": [], - "label": "setSouthWest", + "label": "loaded", "description": [], "signature": [ - "(sw: maplibregl.LngLatLike) => this" + "() => boolean" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.loadTile", + "type": "Function", + "tags": [], + "label": "loadTile", + "description": [], + "signature": [ + "(tile: maplibregl.Tile, callback: maplibregl.Callback) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.setSouthWest.$1", - "type": "CompoundType", + "id": "def-server.GeoJSONSource.loadTile.$1", + "type": "Object", "tags": [], - "label": "sw", + "label": "tile", "description": [], "signature": [ - "maplibregl.LngLatLike" + "maplibregl.Tile" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.GeoJSONSource.loadTile.$2", + "type": "Function", + "tags": [], + "label": "callback", + "description": [], + "signature": [ + "maplibregl.Callback" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -412,30 +648,28 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.contains", + "id": "def-server.GeoJSONSource.abortTile", "type": "Function", "tags": [], - "label": "contains", - "description": [ - "Check if the point is within the bounding box." - ], + "label": "abortTile", + "description": [], "signature": [ - "(lnglat: maplibregl.LngLatLike) => boolean" + "(tile: maplibregl.Tile) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.contains.$1", - "type": "CompoundType", + "id": "def-server.GeoJSONSource.abortTile.$1", + "type": "Object", "tags": [], - "label": "lnglat", + "label": "tile", "description": [], "signature": [ - "maplibregl.LngLatLike" + "maplibregl.Tile" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -444,30 +678,28 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.extend", + "id": "def-server.GeoJSONSource.unloadTile", "type": "Function", "tags": [], - "label": "extend", - "description": [ - "Extend the bounds to include a given LngLat or LngLatBounds." - ], + "label": "unloadTile", + "description": [], "signature": [ - "(obj: [number, number] | [number, number, number, number] | maplibregl.LngLatBounds | [maplibregl.LngLatLike, maplibregl.LngLatLike] | maplibregl.LngLat | { lng: number; lat: number; } | { lon: number; lat: number; }) => this" + "(tile: maplibregl.Tile) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.extend.$1", - "type": "CompoundType", + "id": "def-server.GeoJSONSource.unloadTile.$1", + "type": "Object", "tags": [], - "label": "obj", + "label": "tile", "description": [], "signature": [ - "[number, number] | [number, number, number, number] | maplibregl.LngLatBounds | [maplibregl.LngLatLike, maplibregl.LngLatLike] | maplibregl.LngLat | { lng: number; lat: number; } | { lon: number; lat: number; }" + "maplibregl.Tile" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -476,1942 +708,2184 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getCenter", + "id": "def-server.GeoJSONSource.onRemove", "type": "Function", "tags": [], - "label": "getCenter", - "description": [ - "Get the point equidistant from this box's corners" - ], + "label": "onRemove", + "description": [], "signature": [ - "() => maplibregl.LngLat" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getSouthWest", + "id": "def-server.GeoJSONSource.serialize", "type": "Function", "tags": [], - "label": "getSouthWest", - "description": [ - "Get southwest corner" - ], + "label": "serialize", + "description": [], "signature": [ - "() => maplibregl.LngLat" + "() => any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getNorthEast", + "id": "def-server.GeoJSONSource.hasTransition", "type": "Function", "tags": [], - "label": "getNorthEast", - "description": [ - "Get northeast corner" - ], + "label": "hasTransition", + "description": [], "signature": [ - "() => maplibregl.LngLat" + "() => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], "returnComment": [] - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.LngLat", + "type": "Class", + "tags": [], + "label": "LngLat", + "description": [], + "signature": [ + "maplibregl.LngLat" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getNorthWest", - "type": "Function", + "id": "def-server.LngLat.lng", + "type": "number", "tags": [], - "label": "getNorthWest", - "description": [ - "Get northwest corner" - ], - "signature": [ - "() => maplibregl.LngLat" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "label": "lng", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getSouthEast", - "type": "Function", + "id": "def-server.LngLat.lat", + "type": "number", "tags": [], - "label": "getSouthEast", - "description": [ - "Get southeast corner" - ], - "signature": [ - "() => maplibregl.LngLat" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "label": "lat", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getWest", + "id": "def-server.LngLat.Unnamed", "type": "Function", "tags": [], - "label": "getWest", - "description": [ - "Get west edge longitude" - ], + "label": "Constructor", + "description": [], "signature": [ - "() => number" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getSouth", - "type": "Function", - "tags": [], - "label": "getSouth", - "description": [ - "Get south edge latitude" - ], - "signature": [ - "() => number" + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.LngLat.Unnamed.$1", + "type": "number", + "tags": [], + "label": "lng", + "description": [], + "signature": [ + "number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.LngLat.Unnamed.$2", + "type": "number", + "tags": [], + "label": "lat", + "description": [], + "signature": [ + "number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getEast", + "id": "def-server.LngLat.wrap", "type": "Function", "tags": [], - "label": "getEast", + "label": "wrap", "description": [ - "Get east edge longitude" + "\nReturns a new `LngLat` object whose longitude is wrapped to the range (-180, 180).\n" ], "signature": [ - "() => number" + "() => maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The wrapped `LngLat` object." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.getNorth", + "id": "def-server.LngLat.toArray", "type": "Function", "tags": [], - "label": "getNorth", + "label": "toArray", "description": [ - "Get north edge latitude" + "\nReturns the coordinates represented as an array of two numbers.\n" ], "signature": [ - "() => number" + "() => number[]" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The coordinates represeted as an array of longitude and latitude." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.toArray", + "id": "def-server.LngLat.toString", "type": "Function", "tags": [], - "label": "toArray", + "label": "toString", "description": [ - "Returns a LngLatBounds as an array" + "\nReturns the coordinates represent as a string.\n" ], "signature": [ - "() => number[][]" + "() => string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The coordinates represented as a string of the format `'LngLat(lng, lat)'`." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.toString", + "id": "def-server.LngLat.distanceTo", "type": "Function", "tags": [], - "label": "toString", + "label": "distanceTo", "description": [ - "Return a LngLatBounds as a string" + "\nReturns the approximate distance between a pair of coordinates in meters\nUses the Haversine Formula (from R.W. Sinnott, \"Virtues of the Haversine\", Sky and Telescope, vol. 68, no. 2, 1984, p. 159)\n" ], "signature": [ - "() => string" + "(lngLat: maplibregl.LngLat) => number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [], - "returnComment": [] + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.LngLat.distanceTo.$1", + "type": "Object", + "tags": [], + "label": "lngLat", + "description": [ + "coordinates to compute the distance to" + ], + "signature": [ + "maplibregl.LngLat" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "Distance in meters between the two coordinates." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.isEmpty", + "id": "def-server.LngLat.toBounds", "type": "Function", "tags": [], - "label": "isEmpty", + "label": "toBounds", "description": [ - "Returns a boolean" + "\nReturns a `LngLatBounds` from the coordinates extended by a given `radius`. The returned `LngLatBounds` completely contains the `radius`.\n" ], "signature": [ - "() => boolean" + "(radius?: number | undefined) => maplibregl.LngLatBounds" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [], - "returnComment": [] + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.LngLat.toBounds.$1", + "type": "number", + "tags": [], + "label": "radius", + "description": [ + "Distance in meters from the coordinates to extend the bounds." + ], + "signature": [ + "number | undefined" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "A new `LngLatBounds` object representing the coordinates extended by the `radius`." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.convert", + "id": "def-server.LngLat.convert", "type": "Function", "tags": [], "label": "convert", "description": [ - "Convert an array to a LngLatBounds object, or return an existing LngLatBounds object unchanged." + "\nConverts an array of two numbers or an object with `lng` and `lat` or `lon` and `lat` properties\nto a `LngLat` object.\n\nIf a `LngLat` object is passed in, the function returns it unchanged.\n" ], "signature": [ - "(input: maplibregl.LngLatBoundsLike) => maplibregl.LngLatBounds" + "(input: maplibregl.LngLatLike) => maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.LngLatBounds.convert.$1", + "id": "def-server.LngLat.convert.$1", "type": "CompoundType", "tags": [], "label": "input", - "description": [], + "description": [ + "An array of two numbers or object to convert, or a `LngLat` object to return." + ], "signature": [ - "maplibregl.LngLatBoundsLike" + "maplibregl.LngLatLike" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "A new `LngLat` object, if a conversion occurred, or the original `LngLat` object." + ] } ], "initialIsOpen": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map", + "id": "def-server.LngLatBounds", "type": "Class", "tags": [], - "label": "Map", - "description": [ - "\nMap" - ], + "label": "LngLatBounds", + "description": [], "signature": [ - "maplibregl.Map extends maplibregl.Evented" + "maplibregl.LngLatBounds" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.Unnamed", - "type": "Function", + "id": "def-server.LngLatBounds._ne", + "type": "Object", "tags": [], - "label": "Constructor", + "label": "_ne", "description": [], "signature": [ - "any" + "maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "maplibregl.MapboxOptions | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.LngLatBounds._sw", + "type": "Object", + "tags": [], + "label": "_sw", + "description": [], + "signature": [ + "maplibregl.LngLat" ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addControl", + "id": "def-server.LngLatBounds.Unnamed", "type": "Function", "tags": [], - "label": "addControl", + "label": "Constructor", "description": [], "signature": [ - "(control: maplibregl.Control | maplibregl.IControl, position?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\" | undefined) => this" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addControl.$1", - "type": "CompoundType", + "id": "def-server.LngLatBounds.Unnamed.$1", + "type": "Any", "tags": [], - "label": "control", + "label": "sw", "description": [], "signature": [ - "maplibregl.Control | maplibregl.IControl" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addControl.$2", - "type": "CompoundType", + "id": "def-server.LngLatBounds.Unnamed.$2", + "type": "Any", "tags": [], - "label": "position", + "label": "ne", "description": [], "signature": [ - "\"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\" | undefined" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeControl", + "id": "def-server.LngLatBounds.setNorthEast", "type": "Function", "tags": [], - "label": "removeControl", - "description": [], + "label": "setNorthEast", + "description": [ + "\nSet the northeast corner of the bounding box\n" + ], "signature": [ - "(control: maplibregl.Control | maplibregl.IControl) => this" + "(ne: maplibregl.LngLatLike) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeControl.$1", + "id": "def-server.LngLatBounds.setNorthEast.$1", "type": "CompoundType", "tags": [], - "label": "control", - "description": [], + "label": "ne", + "description": [ + "a {@link LngLatLike } object describing the northeast corner of the bounding box." + ], "signature": [ - "maplibregl.Control | maplibregl.IControl" + "maplibregl.LngLatLike" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.hasControl", + "id": "def-server.LngLatBounds.setSouthWest", "type": "Function", "tags": [], - "label": "hasControl", + "label": "setSouthWest", "description": [ - "\nChecks if a control exists on the map.\n" + "\nSet the southwest corner of the bounding box\n" ], "signature": [ - "(control: maplibregl.IControl) => boolean" + "(sw: maplibregl.LngLatLike) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.hasControl.$1", - "type": "Object", + "id": "def-server.LngLatBounds.setSouthWest.$1", + "type": "CompoundType", "tags": [], - "label": "control", + "label": "sw", "description": [ - "The {@link IControl } to check." + "a {@link LngLatLike } object describing the southwest corner of the bounding box." ], "signature": [ - "maplibregl.IControl" + "maplibregl.LngLatLike" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], "returnComment": [ - "True if map contains control." + "`this`" ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.resize", + "id": "def-server.LngLatBounds.extend", "type": "Function", "tags": [], - "label": "resize", - "description": [], + "label": "extend", + "description": [ + "\nExtend the bounds to include a given LngLatLike or LngLatBoundsLike.\n" + ], "signature": [ - "(eventData?: maplibregl.EventData | undefined) => this" + "(obj: maplibregl.LngLatBoundsLike | maplibregl.LngLatLike) => any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.resize.$1", - "type": "Object", + "id": "def-server.LngLatBounds.extend.$1", + "type": "CompoundType", "tags": [], - "label": "eventData", - "description": [], + "label": "obj", + "description": [ + "object to extend to" + ], "signature": [ - "maplibregl.EventData | undefined" + "maplibregl.LngLatBoundsLike | maplibregl.LngLatLike" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getBounds", + "id": "def-server.LngLatBounds.getCenter", "type": "Function", "tags": [], - "label": "getBounds", - "description": [], + "label": "getCenter", + "description": [ + "\nReturns the geographical coordinate equidistant from the bounding box's corners.\n" + ], "signature": [ - "() => maplibregl.LngLatBounds" + "() => maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The bounding box's center." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getMaxBounds", + "id": "def-server.LngLatBounds.getSouthWest", "type": "Function", "tags": [], - "label": "getMaxBounds", - "description": [], + "label": "getSouthWest", + "description": [ + "\nReturns the southwest corner of the bounding box.\n" + ], "signature": [ - "() => maplibregl.LngLatBounds | null" + "() => maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The southwest corner of the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMaxBounds", + "id": "def-server.LngLatBounds.getNorthEast", "type": "Function", "tags": [], - "label": "setMaxBounds", - "description": [], + "label": "getNorthEast", + "description": [ + "\nReturns the northeast corner of the bounding box.\n" + ], "signature": [ - "(lnglatbounds?: maplibregl.LngLatBoundsLike | undefined) => this" + "() => maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMaxBounds.$1", - "type": "CompoundType", - "tags": [], - "label": "lnglatbounds", - "description": [], - "signature": [ - "maplibregl.LngLatBoundsLike | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "The northeast corner of the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMinZoom", + "id": "def-server.LngLatBounds.getNorthWest", "type": "Function", "tags": [], - "label": "setMinZoom", - "description": [], + "label": "getNorthWest", + "description": [ + "\nReturns the northwest corner of the bounding box.\n" + ], "signature": [ - "(minZoom?: number | null | undefined) => this" + "() => maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMinZoom.$1", - "type": "CompoundType", - "tags": [], - "label": "minZoom", - "description": [], - "signature": [ - "number | null | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "The northwest corner of the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getMinZoom", + "id": "def-server.LngLatBounds.getSouthEast", "type": "Function", "tags": [], - "label": "getMinZoom", - "description": [], + "label": "getSouthEast", + "description": [ + "\nReturns the southeast corner of the bounding box.\n" + ], "signature": [ - "() => number" + "() => maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The southeast corner of the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMaxZoom", + "id": "def-server.LngLatBounds.getWest", "type": "Function", "tags": [], - "label": "setMaxZoom", - "description": [], + "label": "getWest", + "description": [ + "\nReturns the west edge of the bounding box.\n" + ], "signature": [ - "(maxZoom?: number | null | undefined) => this" + "() => number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMaxZoom.$1", - "type": "CompoundType", - "tags": [], - "label": "maxZoom", - "description": [], - "signature": [ - "number | null | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "The west edge of the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getMaxZoom", + "id": "def-server.LngLatBounds.getSouth", "type": "Function", "tags": [], - "label": "getMaxZoom", - "description": [], + "label": "getSouth", + "description": [ + "\nReturns the south edge of the bounding box.\n" + ], "signature": [ "() => number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The south edge of the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMinPitch", + "id": "def-server.LngLatBounds.getEast", "type": "Function", "tags": [], - "label": "setMinPitch", - "description": [], + "label": "getEast", + "description": [ + "\nReturns the east edge of the bounding box.\n" + ], "signature": [ - "(minPitch?: number | null | undefined) => this" + "() => number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMinPitch.$1", - "type": "CompoundType", - "tags": [], - "label": "minPitch", - "description": [], - "signature": [ - "number | null | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "The east edge of the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getMinPitch", + "id": "def-server.LngLatBounds.getNorth", "type": "Function", "tags": [], - "label": "getMinPitch", - "description": [], + "label": "getNorth", + "description": [ + "\nReturns the north edge of the bounding box.\n" + ], "signature": [ "() => number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The north edge of the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMaxPitch", + "id": "def-server.LngLatBounds.toArray", "type": "Function", "tags": [], - "label": "setMaxPitch", - "description": [], + "label": "toArray", + "description": [ + "\nReturns the bounding box represented as an array.\n" + ], "signature": [ - "(maxPitch?: number | null | undefined) => this" + "() => number[][]" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setMaxPitch.$1", - "type": "CompoundType", - "tags": [], - "label": "maxPitch", - "description": [], - "signature": [ - "number | null | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "The bounding box represented as an array, consisting of the\nsouthwest and northeast coordinates of the bounding represented as arrays of numbers." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getMaxPitch", + "id": "def-server.LngLatBounds.toString", "type": "Function", "tags": [], - "label": "getMaxPitch", - "description": [], + "label": "toString", + "description": [ + "\nReturn the bounding box represented as a string.\n" + ], "signature": [ - "() => number" + "() => string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The bounding box represents as a string of the format\n`'LngLatBounds(LngLat(lng, lat), LngLat(lng, lat))'`." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getRenderWorldCopies", + "id": "def-server.LngLatBounds.isEmpty", "type": "Function", "tags": [], - "label": "getRenderWorldCopies", - "description": [], + "label": "isEmpty", + "description": [ + "\nCheck if the bounding box is an empty/`null`-type box.\n" + ], "signature": [ "() => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if bounds have been defined, otherwise false." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setRenderWorldCopies", + "id": "def-server.LngLatBounds.contains", "type": "Function", "tags": [], - "label": "setRenderWorldCopies", - "description": [], + "label": "contains", + "description": [ + "\nCheck if the point is within the bounding box.\n" + ], "signature": [ - "(renderWorldCopies?: boolean | undefined) => this" + "(lnglat: maplibregl.LngLatLike) => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setRenderWorldCopies.$1", + "id": "def-server.LngLatBounds.contains.$1", "type": "CompoundType", "tags": [], - "label": "renderWorldCopies", - "description": [], + "label": "lnglat", + "description": [ + "geographic point to check against." + ], "signature": [ - "boolean | undefined" + "maplibregl.LngLatLike" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "True if the point is within the bounding box." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.project", + "id": "def-server.LngLatBounds.convert", "type": "Function", "tags": [], - "label": "project", - "description": [], + "label": "convert", + "description": [ + "\nConverts an array to a `LngLatBounds` object.\n\nIf a `LngLatBounds` object is passed in, the function returns it unchanged.\n\nInternally, the function calls `LngLat#convert` to convert arrays to `LngLat` values.\n" + ], "signature": [ - "(lnglat: maplibregl.LngLatLike) => maplibregl.Point" + "(input: maplibregl.LngLatBoundsLike | null) => maplibregl.LngLatBounds" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.project.$1", + "id": "def-server.LngLatBounds.convert.$1", "type": "CompoundType", "tags": [], - "label": "lnglat", - "description": [], + "label": "input", + "description": [ + "An array of two coordinates to convert, or a `LngLatBounds` object to return." + ], "signature": [ - "maplibregl.LngLatLike" + "maplibregl.LngLatBoundsLike | null" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], - "returnComment": [] - }, + "returnComment": [ + "A new `LngLatBounds` object, if a conversion occurred, or the original `LngLatBounds` object." + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map", + "type": "Class", + "tags": [], + "label": "Map", + "description": [], + "signature": [ + "maplibregl.Map extends Camera" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.unproject", - "type": "Function", + "id": "def-server.Map.style", + "type": "Object", "tags": [], - "label": "unproject", + "label": "style", "description": [], "signature": [ - "(point: maplibregl.PointLike) => maplibregl.LngLat" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.unproject.$1", - "type": "CompoundType", - "tags": [], - "label": "point", - "description": [], - "signature": [ - "maplibregl.PointLike" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } + "maplibregl.Style" ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.isMoving", - "type": "Function", + "id": "def-server.Map.painter", + "type": "Object", "tags": [], - "label": "isMoving", + "label": "painter", "description": [], "signature": [ - "() => boolean" + "maplibregl.Painter" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.isZooming", - "type": "Function", + "id": "def-server.Map.handlers", + "type": "Object", "tags": [], - "label": "isZooming", + "label": "handlers", "description": [], "signature": [ - "() => boolean" + "maplibregl.HandlerManager" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.isRotating", - "type": "Function", + "id": "def-server.Map._container", + "type": "Object", "tags": [], - "label": "isRotating", + "label": "_container", "description": [], "signature": [ - "() => boolean" + "HTMLElement" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.queryRenderedFeatures", - "type": "Function", + "id": "def-server.Map._canvasContainer", + "type": "Object", "tags": [], - "label": "queryRenderedFeatures", - "description": [ - "\nReturns an array of GeoJSON Feature objects representing visible features that satisfy the query parameters.\n\nThe properties value of each returned feature object contains the properties of its source feature. For GeoJSON sources, only string and numeric property values are supported (i.e. null, Array, and Object values are not supported).\n\nEach feature includes top-level layer, source, and sourceLayer properties. The layer property is an object representing the style layer to which the feature belongs. Layout and paint properties in this object contain values which are fully evaluated for the given zoom level and feature.\n\nOnly features that are currently rendered are included. Some features will not be included, like:\n\n- Features from layers whose visibility property is \"none\".\n- Features from layers whose zoom range excludes the current zoom level.\n- Symbol features that have been hidden due to text or icon collision.\n\nFeatures from all other layers are included, including features that may have no visible contribution to the rendered result; for example, because the layer's opacity or color alpha component is set to 0.\n\nThe topmost rendered feature appears first in the returned array, and subsequent features are sorted by descending z-order. Features that are rendered multiple times (due to wrapping across the antimeridian at low zoom levels) are returned only once (though subject to the following caveat).\n\nBecause features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple times in query results. For example, suppose there is a highway running through the bounding rectangle of a query. The results of the query will be those parts of the highway that lie within the map tiles covering the bounding rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple tiles due to tile buffering.\n" - ], + "label": "_canvasContainer", + "description": [], "signature": [ - "(pointOrBox?: maplibregl.PointLike | [maplibregl.PointLike, maplibregl.PointLike] | undefined, options?: ({ layers?: string[] | undefined; filter?: any[] | undefined; } & maplibregl.FilterOptions) | undefined) => maplibregl.MapboxGeoJSONFeature[]" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.queryRenderedFeatures.$1", - "type": "CompoundType", - "tags": [], - "label": "pointOrBox", - "description": [ - "The geometry of the query region: either a single point or southwest and northeast points describing a bounding box. Omitting this parameter (i.e. calling Map#queryRenderedFeatures with zero arguments, or with only a options argument) is equivalent to passing a bounding box encompassing the entire map viewport." - ], - "signature": [ - "maplibregl.PointLike | [maplibregl.PointLike, maplibregl.PointLike] | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.queryRenderedFeatures.$2", - "type": "CompoundType", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "({ layers?: string[] | undefined; filter?: any[] | undefined; } & maplibregl.FilterOptions) | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } + "HTMLElement" ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.querySourceFeatures", - "type": "Function", + "id": "def-server.Map._controlContainer", + "type": "Object", "tags": [], - "label": "querySourceFeatures", - "description": [ - "\nReturns an array of GeoJSON Feature objects representing features within the specified vector tile or GeoJSON source that satisfy the query parameters.\n\nIn contrast to Map#queryRenderedFeatures, this function returns all features matching the query parameters, whether or not they are rendered by the current style (i.e. visible). The domain of the query includes all currently-loaded vector tiles and GeoJSON source tiles: this function does not check tiles outside the currently visible viewport.\n\nBecause features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple times in query results. For example, suppose there is a highway running through the bounding rectangle of a query. The results of the query will be those parts of the highway that lie within the map tiles covering the bounding rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple tiles due to tile buffering.\n" - ], + "label": "_controlContainer", + "description": [], "signature": [ - "(sourceID: string, parameters?: ({ sourceLayer?: string | undefined; filter?: any[] | undefined; } & maplibregl.FilterOptions) | undefined) => maplibregl.MapboxGeoJSONFeature[]" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.querySourceFeatures.$1", - "type": "string", - "tags": [], - "label": "sourceID", - "description": [ - "The ID of the vector tile or GeoJSON source to query." - ], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.querySourceFeatures.$2", - "type": "CompoundType", - "tags": [], - "label": "parameters", - "description": [], - "signature": [ - "({ sourceLayer?: string | undefined; filter?: any[] | undefined; } & maplibregl.FilterOptions) | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } + "HTMLElement" ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setStyle", - "type": "Function", + "id": "def-server.Map._controlPositions", + "type": "Object", "tags": [], - "label": "setStyle", + "label": "_controlPositions", "description": [], "signature": [ - "(style: string | maplibregl.Style, options?: { diff?: boolean | undefined; localIdeographFontFamily?: string | undefined; } | undefined) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setStyle.$1", - "type": "CompoundType", - "tags": [], - "label": "style", - "description": [], - "signature": [ - "string | maplibregl.Style" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setStyle.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setStyle.$2.diff", - "type": "CompoundType", - "tags": [], - "label": "diff", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setStyle.$2.localIdeographFontFamily", - "type": "string", - "tags": [], - "label": "localIdeographFontFamily", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - } - ] - } + "{ [_: string]: HTMLElement; }" ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setTransformRequest", - "type": "Function", + "id": "def-server.Map._interactive", + "type": "boolean", "tags": [], - "label": "setTransformRequest", + "label": "_interactive", "description": [], - "signature": [ - "(transformRequest: maplibregl.TransformRequestFunction) => void" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setTransformRequest.$1", - "type": "Function", - "tags": [], - "label": "transformRequest", - "description": [], - "signature": [ - "maplibregl.TransformRequestFunction" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getStyle", - "type": "Function", + "id": "def-server.Map._showTileBoundaries", + "type": "boolean", "tags": [], - "label": "getStyle", + "label": "_showTileBoundaries", "description": [], - "signature": [ - "() => maplibregl.Style" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.isStyleLoaded", - "type": "Function", + "id": "def-server.Map._showCollisionBoxes", + "type": "boolean", "tags": [], - "label": "isStyleLoaded", + "label": "_showCollisionBoxes", "description": [], - "signature": [ - "() => boolean" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addSource", - "type": "Function", + "id": "def-server.Map._showPadding", + "type": "boolean", "tags": [], - "label": "addSource", + "label": "_showPadding", "description": [], - "signature": [ - "(id: string, source: maplibregl.AnySourceData) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addSource.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addSource.$2", - "type": "CompoundType", - "tags": [], - "label": "source", - "description": [], - "signature": [ - "maplibregl.AnySourceData" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.isSourceLoaded", - "type": "Function", + "id": "def-server.Map._showOverdrawInspector", + "type": "boolean", "tags": [], - "label": "isSourceLoaded", + "label": "_showOverdrawInspector", "description": [], - "signature": [ - "(id: string) => boolean" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.isSourceLoaded.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.areTilesLoaded", - "type": "Function", + "id": "def-server.Map._repaint", + "type": "boolean", "tags": [], - "label": "areTilesLoaded", + "label": "_repaint", "description": [], - "signature": [ - "() => boolean" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeSource", - "type": "Function", + "id": "def-server.Map._vertices", + "type": "boolean", "tags": [], - "label": "removeSource", + "label": "_vertices", "description": [], - "signature": [ - "(id: string) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeSource.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getSource", - "type": "Function", + "id": "def-server.Map._canvas", + "type": "Object", "tags": [], - "label": "getSource", + "label": "_canvas", "description": [], "signature": [ - "(id: string) => maplibregl.AnySourceImpl" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getSource.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } + "HTMLCanvasElement" ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addImage", - "type": "Function", + "id": "def-server.Map._maxTileCacheSize", + "type": "number", "tags": [], - "label": "addImage", + "label": "_maxTileCacheSize", "description": [], - "signature": [ - "(name: string, image: ArrayBufferView | HTMLImageElement | { width: number; height: number; data: Uint8Array | Uint8ClampedArray; } | ImageData | ImageBitmap, options?: { pixelRatio?: number | undefined; sdf?: boolean | undefined; } | undefined) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addImage.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addImage.$2", - "type": "CompoundType", - "tags": [], - "label": "image", - "description": [], - "signature": [ - "ArrayBufferView | HTMLImageElement | { width: number; height: number; data: Uint8Array | Uint8ClampedArray; } | ImageData | ImageBitmap" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addImage.$3", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addImage.$3.pixelRatio", - "type": "number", - "tags": [], - "label": "pixelRatio", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addImage.$3.sdf", - "type": "CompoundType", - "tags": [], - "label": "sdf", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.hasImage", - "type": "Function", + "id": "def-server.Map._frame", + "type": "Object", "tags": [], - "label": "hasImage", + "label": "_frame", "description": [], "signature": [ - "(name: string) => boolean" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.hasImage.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } + "{ cancel: () => void; }" ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeImage", - "type": "Function", + "id": "def-server.Map._styleDirty", + "type": "boolean", "tags": [], - "label": "removeImage", + "label": "_styleDirty", "description": [], - "signature": [ - "(name: string) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeImage.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.loadImage", - "type": "Function", + "id": "def-server.Map._sourcesDirty", + "type": "boolean", "tags": [], - "label": "loadImage", + "label": "_sourcesDirty", "description": [], - "signature": [ - "(url: string, callback: Function) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.loadImage.$1", - "type": "string", - "tags": [], - "label": "url", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.loadImage.$2", - "type": "Object", - "tags": [], - "label": "callback", - "description": [], - "signature": [ - "Function" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.listImages", - "type": "Function", + "id": "def-server.Map._placementDirty", + "type": "boolean", "tags": [], - "label": "listImages", + "label": "_placementDirty", "description": [], - "signature": [ - "() => string[]" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addLayer", - "type": "Function", + "id": "def-server.Map._loaded", + "type": "boolean", "tags": [], - "label": "addLayer", + "label": "_loaded", "description": [], - "signature": [ - "(layer: maplibregl.AnyLayer, before?: string | undefined) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._fullyLoaded", + "type": "boolean", + "tags": [], + "label": "_fullyLoaded", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._trackResize", + "type": "boolean", + "tags": [], + "label": "_trackResize", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._preserveDrawingBuffer", + "type": "boolean", + "tags": [], + "label": "_preserveDrawingBuffer", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._failIfMajorPerformanceCaveat", + "type": "boolean", + "tags": [], + "label": "_failIfMajorPerformanceCaveat", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._antialias", + "type": "boolean", + "tags": [], + "label": "_antialias", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._refreshExpiredTiles", + "type": "boolean", + "tags": [], + "label": "_refreshExpiredTiles", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._hash", + "type": "Object", + "tags": [], + "label": "_hash", + "description": [], + "signature": [ + "maplibregl.Hash" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._delegatedListeners", + "type": "Any", + "tags": [], + "label": "_delegatedListeners", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._fadeDuration", + "type": "number", + "tags": [], + "label": "_fadeDuration", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._crossSourceCollisions", + "type": "boolean", + "tags": [], + "label": "_crossSourceCollisions", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._crossFadingFactor", + "type": "number", + "tags": [], + "label": "_crossFadingFactor", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._collectResourceTiming", + "type": "boolean", + "tags": [], + "label": "_collectResourceTiming", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._renderTaskQueue", + "type": "Object", + "tags": [], + "label": "_renderTaskQueue", + "description": [], + "signature": [ + "maplibregl.TaskQueue" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._controls", + "type": "Array", + "tags": [], + "label": "_controls", + "description": [], + "signature": [ + "maplibregl.IControl[]" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._mapId", + "type": "number", + "tags": [], + "label": "_mapId", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._localIdeographFontFamily", + "type": "string", + "tags": [], + "label": "_localIdeographFontFamily", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._requestManager", + "type": "Object", + "tags": [], + "label": "_requestManager", + "description": [], + "signature": [ + "maplibregl.RequestManager" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._locale", + "type": "Any", + "tags": [], + "label": "_locale", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._removed", + "type": "boolean", + "tags": [], + "label": "_removed", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._clickTolerance", + "type": "number", + "tags": [], + "label": "_clickTolerance", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._pixelRatio", + "type": "number", + "tags": [], + "label": "_pixelRatio", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.scrollZoom", + "type": "Object", + "tags": [], + "label": "scrollZoom", + "description": [ + "\nThe map's {@link ScrollZoomHandler}, which implements zooming in and out with a scroll wheel or trackpad.\nFind more details and examples using `scrollZoom` in the {@link ScrollZoomHandler} section." + ], + "signature": [ + "maplibregl.ScrollZoomHandler" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.boxZoom", + "type": "Object", + "tags": [], + "label": "boxZoom", + "description": [ + "\nThe map's {@link BoxZoomHandler}, which implements zooming using a drag gesture with the Shift key pressed.\nFind more details and examples using `boxZoom` in the {@link BoxZoomHandler} section." + ], + "signature": [ + "maplibregl.BoxZoomHandler" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.dragRotate", + "type": "Object", + "tags": [], + "label": "dragRotate", + "description": [ + "\nThe map's {@link DragRotateHandler}, which implements rotating the map while dragging with the right\nmouse button or with the Control key pressed. Find more details and examples using `dragRotate`\nin the {@link DragRotateHandler} section." + ], + "signature": [ + "maplibregl.DragRotateHandler" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.dragPan", + "type": "Object", + "tags": [], + "label": "dragPan", + "description": [ + "\nThe map's {@link DragPanHandler}, which implements dragging the map with a mouse or touch gesture.\nFind more details and examples using `dragPan` in the {@link DragPanHandler} section." + ], + "signature": [ + "maplibregl.DragPanHandler" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.keyboard", + "type": "Object", + "tags": [], + "label": "keyboard", + "description": [ + "\nThe map's {@link KeyboardHandler}, which allows the user to zoom, rotate, and pan the map using keyboard\nshortcuts. Find more details and examples using `keyboard` in the {@link KeyboardHandler} section." + ], + "signature": [ + "maplibregl.KeyboardHandler" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.doubleClickZoom", + "type": "Object", + "tags": [], + "label": "doubleClickZoom", + "description": [ + "\nThe map's {@link DoubleClickZoomHandler}, which allows the user to zoom by double clicking.\nFind more details and examples using `doubleClickZoom` in the {@link DoubleClickZoomHandler} section." + ], + "signature": [ + "maplibregl.DoubleClickZoomHandler" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.touchZoomRotate", + "type": "Object", + "tags": [], + "label": "touchZoomRotate", + "description": [ + "\nThe map's {@link TouchZoomRotateHandler}, which allows the user to zoom or rotate the map with touch gestures.\nFind more details and examples using `touchZoomRotate` in the {@link TouchZoomRotateHandler} section." + ], + "signature": [ + "maplibregl.TouchZoomRotateHandler" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.touchPitch", + "type": "Object", + "tags": [], + "label": "touchPitch", + "description": [ + "\nThe map's {@link TouchPitchHandler}, which allows the user to pitch the map with touch gestures.\nFind more details and examples using `touchPitch` in the {@link TouchPitchHandler} section." + ], + "signature": [ + "maplibregl.TouchPitchHandler" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "maplibregl.MapOptions" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._getMapId", + "type": "Function", + "tags": [], + "label": "_getMapId", + "description": [], + "signature": [ + "() => number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.addControl", + "type": "Function", + "tags": [ + "see" + ], + "label": "addControl", + "description": [ + "\nAdds an {@link IControl} to the map, calling `control.onAdd(this)`.\n" + ], + "signature": [ + "(control: maplibregl.IControl, position?: maplibregl.ControlPosition | undefined) => this" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.addControl.$1", + "type": "Object", + "tags": [], + "label": "control", + "description": [ + "The {@link IControl } to add." + ], + "signature": [ + "maplibregl.IControl" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.addControl.$2", + "type": "CompoundType", + "tags": [], + "label": "position", + "description": [ + "position on the map to which the control will be added.\nValid values are `'top-left'`, `'top-right'`, `'bottom-left'`, and `'bottom-right'`. Defaults to `'top-right'`." + ], + "signature": [ + "maplibregl.ControlPosition | undefined" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "`this`" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.removeControl", + "type": "Function", + "tags": [], + "label": "removeControl", + "description": [ + "\nRemoves the control from the map.\n" + ], + "signature": [ + "(control: maplibregl.IControl) => this" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.removeControl.$1", + "type": "Object", + "tags": [], + "label": "control", + "description": [ + "The {@link IControl } to remove." + ], + "signature": [ + "maplibregl.IControl" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "`this`" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.hasControl", + "type": "Function", + "tags": [], + "label": "hasControl", + "description": [ + "\nChecks if a control exists on the map.\n" + ], + "signature": [ + "(control: maplibregl.IControl) => boolean" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.hasControl.$1", + "type": "Object", + "tags": [], + "label": "control", + "description": [ + "The {@link IControl } to check." + ], + "signature": [ + "maplibregl.IControl" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "True if map contains control." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.resize", + "type": "Function", + "tags": [], + "label": "resize", + "description": [ + "\nResizes the map according to the dimensions of its\n`container` element.\n\nChecks if the map container size changed and updates the map if it has changed.\nThis method must be called after the map's `container` is resized programmatically\nor when the map is shown after being initially hidden with CSS.\n" + ], + "signature": [ + "(eventData?: any) => this" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.resize.$1", + "type": "Any", + "tags": [], + "label": "eventData", + "description": [ + "Additional properties to be passed to `movestart`, `move`, `resize`, and `moveend`\nevents that get triggered as a result of resize. This can be useful for differentiating the\nsource of an event (for example, user-initiated or programmatically-triggered events)." + ], + "signature": [ + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "`this`" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.getPixelRatio", + "type": "Function", + "tags": [], + "label": "getPixelRatio", + "description": [ + "\nReturns the map's pixel ratio." + ], + "signature": [ + "() => number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "The pixel ratio." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setPixelRatio", + "type": "Function", + "tags": [], + "label": "setPixelRatio", + "description": [ + "\nSets the map's pixel ratio. This allows to override `devicePixelRatio`.\nAfter this call, the canvas' `width` attribute will be `container.clientWidth * pixelRatio`\nand its height attribute will be `container.clientHeight * pixelRatio`." + ], + "signature": [ + "(pixelRatio: number) => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setPixelRatio.$1", + "type": "number", + "tags": [], + "label": "pixelRatio", + "description": [ + "The pixel ratio." + ], + "signature": [ + "number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.getBounds", + "type": "Function", + "tags": [], + "label": "getBounds", + "description": [ + "\nReturns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not\nan axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region." + ], + "signature": [ + "() => maplibregl.LngLatBounds" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "The geographical bounds of the map as {@link LngLatBounds }." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.getMaxBounds", + "type": "Function", + "tags": [], + "label": "getMaxBounds", + "description": [ + "\nReturns the maximum geographical bounds the map is constrained to, or `null` if none set." + ], + "signature": [ + "() => maplibregl.LngLatBounds | null" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "The map object." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setMaxBounds", + "type": "Function", + "tags": [], + "label": "setMaxBounds", + "description": [ + "\nSets or clears the map's geographical bounds.\n\nPan and zoom operations are constrained within these bounds.\nIf a pan or zoom is performed that would\ndisplay regions outside these bounds, the map will\ninstead display a position and zoom level\nas close as possible to the operation's request while still\nremaining within the bounds.\n" + ], + "signature": [ + "(bounds?: maplibregl.LngLatBoundsLike | null | undefined) => this" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addLayer.$1", + "id": "def-server.Map.setMaxBounds.$1", "type": "CompoundType", "tags": [], - "label": "layer", - "description": [], - "signature": [ - "maplibregl.AnyLayer" + "label": "bounds", + "description": [ + "The maximum bounds to set. If `null` or `undefined` is provided, the function removes the map's maximum bounds." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.addLayer.$2", - "type": "string", - "tags": [], - "label": "before", - "description": [], "signature": [ - "string | undefined" + "maplibregl.LngLatBoundsLike | null | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.moveLayer", + "id": "def-server.Map.setMinZoom", "type": "Function", "tags": [], - "label": "moveLayer", - "description": [], + "label": "setMinZoom", + "description": [ + "\nSets or clears the map's minimum zoom level.\nIf the map's current zoom level is lower than the new minimum,\nthe map will zoom to the new minimum.\n\nIt is not always possible to zoom out and reach the set `minZoom`.\nOther factors such as map height may restrict zooming. For example,\nif the map is 512px tall it will not be possible to zoom below zoom 0\nno matter what the `minZoom` is set to.\n" + ], "signature": [ - "(id: string, beforeId?: string | undefined) => this" + "(minZoom?: number | null | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.moveLayer.$1", - "type": "string", + "id": "def-server.Map.setMinZoom.$1", + "type": "CompoundType", "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" + "label": "minZoom", + "description": [ + "The minimum zoom level to set (-2 - 24).\nIf `null` or `undefined` is provided, the function removes the current minimum zoom (i.e. sets it to -2)." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.moveLayer.$2", - "type": "string", - "tags": [], - "label": "beforeId", - "description": [], "signature": [ - "string | undefined" + "number | null | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeLayer", + "id": "def-server.Map.getMinZoom", "type": "Function", "tags": [], - "label": "removeLayer", - "description": [], + "label": "getMinZoom", + "description": [ + "\nReturns the map's minimum allowable zoom level.\n" + ], "signature": [ - "(id: string) => this" + "() => number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeLayer.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "minZoom" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getLayer", + "id": "def-server.Map.setMaxZoom", "type": "Function", "tags": [], - "label": "getLayer", - "description": [], + "label": "setMaxZoom", + "description": [ + "\nSets or clears the map's maximum zoom level.\nIf the map's current zoom level is higher than the new maximum,\nthe map will zoom to the new maximum.\n" + ], "signature": [ - "(id: string) => maplibregl.AnyLayer" + "(maxZoom?: number | null | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getLayer.$1", - "type": "string", + "id": "def-server.Map.setMaxZoom.$1", + "type": "CompoundType", "tags": [], - "label": "id", - "description": [], + "label": "maxZoom", + "description": [ + "The maximum zoom level to set.\nIf `null` or `undefined` is provided, the function removes the current maximum zoom (sets it to 22)." + ], "signature": [ - "string" + "number | null | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setFilter", + "id": "def-server.Map.getMaxZoom", "type": "Function", "tags": [], - "label": "setFilter", - "description": [], + "label": "getMaxZoom", + "description": [ + "\nReturns the map's maximum allowable zoom level.\n" + ], + "signature": [ + "() => number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "maxZoom" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setMinPitch", + "type": "Function", + "tags": [], + "label": "setMinPitch", + "description": [ + "\nSets or clears the map's minimum pitch.\nIf the map's current pitch is lower than the new minimum,\nthe map will pitch to the new minimum.\n" + ], "signature": [ - "(layer: string, filter?: boolean | any[] | null | undefined, options?: maplibregl.FilterOptions | null | undefined) => this" + "(minPitch?: number | null | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setFilter.$1", - "type": "string", - "tags": [], - "label": "layer", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setFilter.$2", + "id": "def-server.Map.setMinPitch.$1", "type": "CompoundType", "tags": [], - "label": "filter", - "description": [], - "signature": [ - "boolean | any[] | null | undefined" + "label": "minPitch", + "description": [ + "The minimum pitch to set (0-85). Values greater than 60 degrees are experimental and may result in rendering issues. If you encounter any, please raise an issue with details in the MapLibre project.\nIf `null` or `undefined` is provided, the function removes the current minimum pitch (i.e. sets it to 0)." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setFilter.$3", - "type": "CompoundType", - "tags": [], - "label": "options", - "description": [], "signature": [ - "maplibregl.FilterOptions | null | undefined" + "number | null | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLayerZoomRange", + "id": "def-server.Map.getMinPitch", "type": "Function", "tags": [], - "label": "setLayerZoomRange", - "description": [], + "label": "getMinPitch", + "description": [ + "\nReturns the map's minimum allowable pitch.\n" + ], "signature": [ - "(layerId: string, minzoom: number, maxzoom: number) => this" + "() => number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "minPitch" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setMaxPitch", + "type": "Function", + "tags": [], + "label": "setMaxPitch", + "description": [ + "\nSets or clears the map's maximum pitch.\nIf the map's current pitch is higher than the new maximum,\nthe map will pitch to the new maximum.\n" + ], + "signature": [ + "(maxPitch?: number | null | undefined) => this" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLayerZoomRange.$1", - "type": "string", - "tags": [], - "label": "layerId", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLayerZoomRange.$2", - "type": "number", + "id": "def-server.Map.setMaxPitch.$1", + "type": "CompoundType", "tags": [], - "label": "minzoom", - "description": [], - "signature": [ - "number" + "label": "maxPitch", + "description": [ + "The maximum pitch to set (0-85). Values greater than 60 degrees are experimental and may result in rendering issues. If you encounter any, please raise an issue with details in the MapLibre project.\nIf `null` or `undefined` is provided, the function removes the current maximum pitch (sets it to 60)." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLayerZoomRange.$3", - "type": "number", - "tags": [], - "label": "maxzoom", - "description": [], "signature": [ - "number" + "number | null | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.getMaxPitch", + "type": "Function", + "tags": [], + "label": "getMaxPitch", + "description": [ + "\nReturns the map's maximum allowable pitch.\n" + ], + "signature": [ + "() => number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "maxPitch" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getFilter", + "id": "def-server.Map.getRenderWorldCopies", "type": "Function", - "tags": [], - "label": "getFilter", - "description": [], + "tags": [ + "see" + ], + "label": "getRenderWorldCopies", + "description": [ + "\nReturns the state of `renderWorldCopies`. If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:\n- When the map is zoomed out far enough that a single representation of the world does not fill the map's entire\ncontainer, there will be blank space beyond 180 and -180 degrees longitude.\n- Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the\nmap and the other on the left edge of the map) at every zoom level." + ], "signature": [ - "(layer: string) => any[]" + "() => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getFilter.$1", - "type": "string", - "tags": [], - "label": "layer", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "renderWorldCopies" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPaintProperty", + "id": "def-server.Map.setRenderWorldCopies", "type": "Function", - "tags": [], - "label": "setPaintProperty", - "description": [], + "tags": [ + "see" + ], + "label": "setRenderWorldCopies", + "description": [ + "\nSets the state of `renderWorldCopies`.\n" + ], "signature": [ - "(layer: string, name: string, value: any, klass?: string | undefined) => this" + "(renderWorldCopies?: boolean | null | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPaintProperty.$1", - "type": "string", - "tags": [], - "label": "layer", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPaintProperty.$2", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPaintProperty.$3", - "type": "Any", + "id": "def-server.Map.setRenderWorldCopies.$1", + "type": "CompoundType", "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" + "label": "renderWorldCopies", + "description": [ + "If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:\n- When the map is zoomed out far enough that a single representation of the world does not fill the map's entire\ncontainer, there will be blank space beyond 180 and -180 degrees longitude.\n- Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the\nmap and the other on the left edge of the map) at every zoom level.\n\n`undefined` is treated as `true`, `null` is treated as `false`." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPaintProperty.$4", - "type": "string", - "tags": [], - "label": "klass", - "description": [], "signature": [ - "string | undefined" + "boolean | null | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getPaintProperty", + "id": "def-server.Map.project", "type": "Function", "tags": [], - "label": "getPaintProperty", - "description": [], + "label": "project", + "description": [ + "\nReturns a [Point](https://github.com/mapbox/point-geometry) representing pixel coordinates, relative to the map's `container`,\nthat correspond to the specified geographical location.\n" + ], "signature": [ - "(layer: string, name: string) => any" + "(lnglat: maplibregl.LngLatLike) => ", + "node_modules/@types/mapbox__point-geometry/index" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getPaintProperty.$1", - "type": "string", + "id": "def-server.Map.project.$1", + "type": "CompoundType", "tags": [], - "label": "layer", - "description": [], - "signature": [ - "string" + "label": "lnglat", + "description": [ + "The geographical location to project." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getPaintProperty.$2", - "type": "string", - "tags": [], - "label": "name", - "description": [], "signature": [ - "string" + "maplibregl.LngLatLike" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The [Point](https://github.com/mapbox/point-geometry) corresponding to `lnglat`, relative to the map's `container`." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLayoutProperty", + "id": "def-server.Map.unproject", "type": "Function", "tags": [], - "label": "setLayoutProperty", - "description": [], + "label": "unproject", + "description": [ + "\nReturns a {@link LngLat} representing geographical coordinates that correspond\nto the specified pixel coordinates.\n" + ], "signature": [ - "(layer: string, name: string, value: any) => this" + "(point: maplibregl.PointLike) => maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLayoutProperty.$1", - "type": "string", - "tags": [], - "label": "layer", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLayoutProperty.$2", - "type": "string", + "id": "def-server.Map.unproject.$1", + "type": "CompoundType", "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" + "label": "point", + "description": [ + "The pixel coordinates to unproject." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLayoutProperty.$3", - "type": "Any", - "tags": [], - "label": "value", - "description": [], "signature": [ - "any" + "maplibregl.PointLike" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The {@link LngLat } corresponding to `point`." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getLayoutProperty", + "id": "def-server.Map.isMoving", "type": "Function", "tags": [], - "label": "getLayoutProperty", - "description": [], + "label": "isMoving", + "description": [ + "\nReturns true if the map is panning, zooming, rotating, or pitching due to a camera animation or user gesture." + ], "signature": [ - "(layer: string, name: string) => any" + "() => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getLayoutProperty.$1", - "type": "string", - "tags": [], - "label": "layer", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getLayoutProperty.$2", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } + "children": [], + "returnComment": [ + "True if the map is moving." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.isZooming", + "type": "Function", + "tags": [], + "label": "isZooming", + "description": [ + "\nReturns true if the map is zooming due to a camera animation or user gesture." ], - "returnComment": [] + "signature": [ + "() => boolean" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "True if the map is zooming." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLight", + "id": "def-server.Map.isRotating", "type": "Function", "tags": [], - "label": "setLight", + "label": "isRotating", + "description": [ + "\nReturns true if the map is rotating due to a camera animation or user gesture." + ], + "signature": [ + "() => boolean" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "True if the map is rotating." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._createDelegatedListener", + "type": "Function", + "tags": [], + "label": "_createDelegatedListener", "description": [], "signature": [ - "(options: maplibregl.Light, lightOptions?: any) => this" + "(type: string, layerId: string, listener: maplibregl.Listener) => { layer: string; listener: maplibregl.Listener; delegates: { error?: ((e: any) => void) | undefined; load?: ((e: any) => void) | undefined; idle?: ((e: any) => void) | undefined; remove?: ((e: any) => void) | undefined; render?: ((e: any) => void) | undefined; resize?: ((e: any) => void) | undefined; webglcontextlost?: ((e: any) => void) | undefined; webglcontextrestored?: ((e: any) => void) | undefined; dataloading?: ((e: any) => void) | undefined; data?: ((e: any) => void) | undefined; tiledataloading?: ((e: any) => void) | undefined; sourcedataloading?: ((e: any) => void) | undefined; styledataloading?: ((e: any) => void) | undefined; sourcedata?: ((e: any) => void) | undefined; styledata?: ((e: any) => void) | undefined; styleimagemissing?: ((e: any) => void) | undefined; dataabort?: ((e: any) => void) | undefined; sourcedataabort?: ((e: any) => void) | undefined; boxzoomcancel?: ((e: any) => void) | undefined; boxzoomstart?: ((e: any) => void) | undefined; boxzoomend?: ((e: any) => void) | undefined; touchcancel?: ((e: any) => void) | undefined; touchmove?: ((e: any) => void) | undefined; touchend?: ((e: any) => void) | undefined; touchstart?: ((e: any) => void) | undefined; click?: ((e: any) => void) | undefined; contextmenu?: ((e: any) => void) | undefined; dblclick?: ((e: any) => void) | undefined; mousemove?: ((e: any) => void) | undefined; mouseup?: ((e: any) => void) | undefined; mousedown?: ((e: any) => void) | undefined; mouseout?: ((e: any) => void) | undefined; mouseover?: ((e: any) => void) | undefined; movestart?: ((e: any) => void) | undefined; move?: ((e: any) => void) | undefined; moveend?: ((e: any) => void) | undefined; zoomstart?: ((e: any) => void) | undefined; zoom?: ((e: any) => void) | undefined; zoomend?: ((e: any) => void) | undefined; rotatestart?: ((e: any) => void) | undefined; rotate?: ((e: any) => void) | undefined; rotateend?: ((e: any) => void) | undefined; dragstart?: ((e: any) => void) | undefined; drag?: ((e: any) => void) | undefined; dragend?: ((e: any) => void) | undefined; pitchstart?: ((e: any) => void) | undefined; pitch?: ((e: any) => void) | undefined; pitchend?: ((e: any) => void) | undefined; wheel?: ((e: any) => void) | undefined; }; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLight.$1", - "type": "Object", + "id": "def-server.Map._createDelegatedListener.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._createDelegatedListener.$2", + "type": "string", "tags": [], - "label": "options", + "label": "layerId", "description": [], "signature": [ - "maplibregl.Light" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setLight.$2", - "type": "Any", + "id": "def-server.Map._createDelegatedListener.$3", + "type": "Function", "tags": [], - "label": "lightOptions", + "label": "listener", "description": [], "signature": [ - "any" + "maplibregl.Listener" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -2420,98 +2894,113 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getLight", + "id": "def-server.Map.on", "type": "Function", - "tags": [], - "label": "getLight", - "description": [], - "signature": [ - "() => maplibregl.Light" + "tags": [ + "see", + "see", + "see", + "see" + ], + "label": "on", + "description": [ + "\nAdds a listener for events of a specified type, optionally limited to features in a specified style layer.\n" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setFeatureState", - "type": "Function", - "tags": [], - "label": "setFeatureState", - "description": [], "signature": [ - "(feature: maplibregl.MapboxGeoJSONFeature | maplibregl.FeatureIdentifier, state: { [key: string]: any; }) => void" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setFeatureState.$1", - "type": "CompoundType", + "id": "def-server.Map.on.$1", + "type": "Uncategorized", "tags": [], - "label": "feature", - "description": [], + "label": "type", + "description": [ + "The event type to listen for. Events compatible with the optional `layerId` parameter are triggered\nwhen the cursor enters a visible portion of the specified layer from outside that layer or outside the map canvas.\n\n| Event | Compatible with `layerId` |\n|-----------------------------------------------------------|---------------------------|\n| [`mousedown`](#map.event:mousedown) | yes |\n| [`mouseup`](#map.event:mouseup) | yes |\n| [`mouseover`](#map.event:mouseover) | yes |\n| [`mouseout`](#map.event:mouseout) | yes |\n| [`mousemove`](#map.event:mousemove) | yes |\n| [`mouseenter`](#map.event:mouseenter) | yes (required) |\n| [`mouseleave`](#map.event:mouseleave) | yes (required) |\n| [`click`](#map.event:click) | yes |\n| [`dblclick`](#map.event:dblclick) | yes |\n| [`contextmenu`](#map.event:contextmenu) | yes |\n| [`touchstart`](#map.event:touchstart) | yes |\n| [`touchend`](#map.event:touchend) | yes |\n| [`touchcancel`](#map.event:touchcancel) | yes |\n| [`wheel`](#map.event:wheel) | |\n| [`resize`](#map.event:resize) | |\n| [`remove`](#map.event:remove) | |\n| [`touchmove`](#map.event:touchmove) | |\n| [`movestart`](#map.event:movestart) | |\n| [`move`](#map.event:move) | |\n| [`moveend`](#map.event:moveend) | |\n| [`dragstart`](#map.event:dragstart) | |\n| [`drag`](#map.event:drag) | |\n| [`dragend`](#map.event:dragend) | |\n| [`zoomstart`](#map.event:zoomstart) | |\n| [`zoom`](#map.event:zoom) | |\n| [`zoomend`](#map.event:zoomend) | |\n| [`rotatestart`](#map.event:rotatestart) | |\n| [`rotate`](#map.event:rotate) | |\n| [`rotateend`](#map.event:rotateend) | |\n| [`pitchstart`](#map.event:pitchstart) | |\n| [`pitch`](#map.event:pitch) | |\n| [`pitchend`](#map.event:pitchend) | |\n| [`boxzoomstart`](#map.event:boxzoomstart) | |\n| [`boxzoomend`](#map.event:boxzoomend) | |\n| [`boxzoomcancel`](#map.event:boxzoomcancel) | |\n| [`webglcontextlost`](#map.event:webglcontextlost) | |\n| [`webglcontextrestored`](#map.event:webglcontextrestored) | |\n| [`load`](#map.event:load) | |\n| [`render`](#map.event:render) | |\n| [`idle`](#map.event:idle) | |\n| [`error`](#map.event:error) | |\n| [`data`](#map.event:data) | |\n| [`styledata`](#map.event:styledata) | |\n| [`sourcedata`](#map.event:sourcedata) | |\n| [`dataloading`](#map.event:dataloading) | |\n| [`styledataloading`](#map.event:styledataloading) | |\n| [`sourcedataloading`](#map.event:sourcedataloading) | |\n| [`styleimagemissing`](#map.event:styleimagemissing) | |\n| [`dataabort`](#map.event:dataabort) | |\n| [`sourcedataabort`](#map.event:sourcedataabort) | |" + ], "signature": [ - "maplibregl.MapboxGeoJSONFeature | maplibregl.FeatureIdentifier" + "T" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setFeatureState.$2", - "type": "Object", + "id": "def-server.Map.on.$2", + "type": "string", "tags": [], - "label": "state", + "label": "layer", "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setFeatureState.$2.Unnamed", - "type": "IndexSignature", - "tags": [], - "label": "[key: string]: any", - "description": [], - "signature": [ - "[key: string]: any" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - } - ] + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.on.$3", + "type": "Function", + "tags": [], + "label": "listener", + "description": [ + "The function to be called when the event is fired." + ], + "signature": [ + "(ev: maplibregl.MapLayerEventType[T] & Object) => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getFeatureState", + "id": "def-server.Map.on", "type": "Function", "tags": [], - "label": "getFeatureState", + "label": "on", "description": [], "signature": [ - "(feature: maplibregl.MapboxGeoJSONFeature | maplibregl.FeatureIdentifier) => { [key: string]: any; }" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getFeatureState.$1", - "type": "CompoundType", + "id": "def-server.Map.on.$1", + "type": "Uncategorized", "tags": [], - "label": "feature", + "label": "type", + "description": [], + "signature": [ + "T" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.on.$2", + "type": "Function", + "tags": [], + "label": "listener", "description": [], "signature": [ - "maplibregl.MapboxGeoJSONFeature | maplibregl.FeatureIdentifier" + "(ev: maplibregl.MapEventType[T] & Object) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -2520,618 +3009,628 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeFeatureState", + "id": "def-server.Map.on", "type": "Function", "tags": [], - "label": "removeFeatureState", + "label": "on", "description": [], "signature": [ - "(target: maplibregl.MapboxGeoJSONFeature | maplibregl.FeatureIdentifier, key?: string | undefined) => void" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeFeatureState.$1", - "type": "CompoundType", + "id": "def-server.Map.on.$1", + "type": "string", "tags": [], - "label": "target", + "label": "type", "description": [], "signature": [ - "maplibregl.MapboxGeoJSONFeature | maplibregl.FeatureIdentifier" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.removeFeatureState.$2", - "type": "string", + "id": "def-server.Map.on.$2", + "type": "Function", "tags": [], - "label": "key", + "label": "listener", "description": [], "signature": [ - "string | undefined" + "maplibregl.Listener" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getContainer", - "type": "Function", - "tags": [], - "label": "getContainer", - "description": [], - "signature": [ - "() => HTMLElement" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getCanvasContainer", - "type": "Function", - "tags": [], - "label": "getCanvasContainer", - "description": [], - "signature": [ - "() => HTMLElement" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getCanvas", - "type": "Function", - "tags": [], - "label": "getCanvas", - "description": [], - "signature": [ - "() => HTMLCanvasElement" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.loaded", - "type": "Function", - "tags": [], - "label": "loaded", - "description": [], - "signature": [ - "() => boolean" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.remove", - "type": "Function", - "tags": [], - "label": "remove", - "description": [], - "signature": [ - "() => void" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.triggerRepaint", + "id": "def-server.Map.once", "type": "Function", - "tags": [], - "label": "triggerRepaint", - "description": [], - "signature": [ - "() => void" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.showTileBoundaries", - "type": "boolean", - "tags": [], - "label": "showTileBoundaries", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.showCollisionBoxes", - "type": "boolean", - "tags": [], - "label": "showCollisionBoxes", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.showPadding", - "type": "boolean", "tags": [ + "method", "name", - "type", - "instance", - "memberof" + "memberof", + "instance" ], - "label": "showPadding", + "label": "once", "description": [ - "\nGets and sets a Boolean indicating whether the map will visualize\nthe padding offsets.\n" + "\nAdds a listener that will be called only once to a specified event type.\n\n\nAdds a listener that will be called only once to a specified event type occurring on features in a specified style layer.\n" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.repaint", - "type": "boolean", - "tags": [], - "label": "repaint", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getCenter", - "type": "Function", - "tags": [], - "label": "getCenter", - "description": [], "signature": [ - "() => maplibregl.LngLat" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.once.$1", + "type": "Uncategorized", + "tags": [], + "label": "type", + "description": [ + "The event type to add a listener for." + ], + "signature": [ + "T" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.once.$2", + "type": "string", + "tags": [], + "label": "layer", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.once.$3", + "type": "Function", + "tags": [], + "label": "listener", + "description": [ + "The function to be called when the event is fired.\nThe listener function is called with the data object passed to `fire`,\nextended with `target` and `type` properties." + ], + "signature": [ + "(ev: maplibregl.MapLayerEventType[T] & Object) => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setCenter", + "id": "def-server.Map.once", "type": "Function", "tags": [], - "label": "setCenter", + "label": "once", "description": [], "signature": [ - "(center: maplibregl.LngLatLike, eventData?: maplibregl.EventData | undefined) => this" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setCenter.$1", - "type": "CompoundType", + "id": "def-server.Map.once.$1", + "type": "Uncategorized", "tags": [], - "label": "center", + "label": "type", "description": [], "signature": [ - "maplibregl.LngLatLike" + "T" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setCenter.$2", - "type": "Object", + "id": "def-server.Map.once.$2", + "type": "Function", "tags": [], - "label": "eventData", + "label": "listener", "description": [], "signature": [ - "maplibregl.EventData | undefined" + "(ev: maplibregl.MapEventType[T] & Object) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.panBy", + "id": "def-server.Map.once", "type": "Function", "tags": [], - "label": "panBy", + "label": "once", "description": [], "signature": [ - "(offset: maplibregl.PointLike, options?: maplibregl.AnimationOptions | undefined, eventData?: maplibregl.EventData | undefined) => this" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.panBy.$1", - "type": "CompoundType", + "id": "def-server.Map.once.$1", + "type": "string", "tags": [], - "label": "offset", + "label": "type", "description": [], "signature": [ - "maplibregl.PointLike" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.panBy.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "maplibregl.AnimationOptions | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.panBy.$3", - "type": "Object", + "id": "def-server.Map.once.$2", + "type": "Function", "tags": [], - "label": "eventData", + "label": "listener", "description": [], "signature": [ - "maplibregl.EventData | undefined" + "maplibregl.Listener" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.panTo", + "id": "def-server.Map.off", "type": "Function", - "tags": [], - "label": "panTo", - "description": [], + "tags": [ + "method", + "name", + "memberof", + "instance" + ], + "label": "off", + "description": [ + "\nRemoves an event listener previously added with `Map#on`.\n\n\nRemoves an event listener for layer-specific events previously added with `Map#on`.\n" + ], "signature": [ - "(lnglat: maplibregl.LngLatLike, options?: maplibregl.AnimationOptions | undefined, eventdata?: maplibregl.EventData | undefined) => this" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.panTo.$1", - "type": "CompoundType", + "id": "def-server.Map.off.$1", + "type": "Uncategorized", "tags": [], - "label": "lnglat", - "description": [], + "label": "type", + "description": [ + "The event type previously used to install the listener." + ], "signature": [ - "maplibregl.LngLatLike" + "T" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.panTo.$2", - "type": "Object", + "id": "def-server.Map.off.$2", + "type": "string", "tags": [], - "label": "options", + "label": "layer", "description": [], "signature": [ - "maplibregl.AnimationOptions | undefined" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.panTo.$3", - "type": "Object", + "id": "def-server.Map.off.$3", + "type": "Function", "tags": [], - "label": "eventdata", - "description": [], + "label": "listener", + "description": [ + "The function previously installed as a listener." + ], "signature": [ - "maplibregl.EventData | undefined" + "(ev: maplibregl.MapLayerEventType[T] & Object) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getZoom", + "id": "def-server.Map.off", "type": "Function", "tags": [], - "label": "getZoom", + "label": "off", "description": [], "signature": [ - "() => number" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [], + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.off.$1", + "type": "Uncategorized", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "T" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.off.$2", + "type": "Function", + "tags": [], + "label": "listener", + "description": [], + "signature": [ + "(ev: maplibregl.MapEventType[T] & Object) => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setZoom", + "id": "def-server.Map.off", "type": "Function", "tags": [], - "label": "setZoom", + "label": "off", "description": [], "signature": [ - "(zoom: number, eventData?: maplibregl.EventData | undefined) => this" + "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & Object) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & Object) => void): this; (type: string, listener: maplibregl.Listener): this; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setZoom.$1", - "type": "number", + "id": "def-server.Map.off.$1", + "type": "string", "tags": [], - "label": "zoom", + "label": "type", "description": [], "signature": [ - "number" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setZoom.$2", - "type": "Object", + "id": "def-server.Map.off.$2", + "type": "Function", "tags": [], - "label": "eventData", + "label": "listener", "description": [], "signature": [ - "maplibregl.EventData | undefined" + "maplibregl.Listener" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomTo", + "id": "def-server.Map.queryRenderedFeatures", "type": "Function", - "tags": [], - "label": "zoomTo", - "description": [], + "tags": [ + "see" + ], + "label": "queryRenderedFeatures", + "description": [ + "\nReturns an array of MapGeoJSONFeature objects\nrepresenting visible features that satisfy the query parameters.\n" + ], "signature": [ - "(zoom: number, options?: maplibregl.AnimationOptions | undefined, eventData?: maplibregl.EventData | undefined) => this" + "(geometry?: maplibregl.PointLike | [maplibregl.PointLike, maplibregl.PointLike] | undefined, options?: any) => maplibregl.MapGeoJSONFeature[]" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomTo.$1", - "type": "number", + "id": "def-server.Map.queryRenderedFeatures.$1", + "type": "CompoundType", "tags": [], - "label": "zoom", - "description": [], + "label": "geometry", + "description": [ + "- The geometry of the query region:\neither a single point or southwest and northeast points describing a bounding box.\nOmitting this parameter (i.e. calling {@link MapqueryRenderedFeatures } with zero arguments,\nor with only a `options` argument) is equivalent to passing a bounding box encompassing the entire\nmap viewport." + ], "signature": [ - "number" + "maplibregl.PointLike | [maplibregl.PointLike, maplibregl.PointLike] | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomTo.$2", - "type": "Object", + "id": "def-server.Map.queryRenderedFeatures.$2", + "type": "Any", "tags": [], "label": "options", - "description": [], + "description": [ + "Options object." + ], "signature": [ - "maplibregl.AnimationOptions | undefined" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true + } + ], + "returnComment": [ + "An array of MapGeoJSONFeature objects.\n\nThe `properties` value of each returned feature object contains the properties of its source feature. For GeoJSON sources, only\nstring and numeric property values are supported (i.e. `null`, `Array`, and `Object` values are not supported).\n\nEach feature includes top-level `layer`, `source`, and `sourceLayer` properties. The `layer` property is an object\nrepresenting the style layer to which the feature belongs. Layout and paint properties in this object contain values\nwhich are fully evaluated for the given zoom level and feature.\n\nOnly features that are currently rendered are included. Some features will **not** be included, like:\n\n- Features from layers whose `visibility` property is `\"none\"`.\n- Features from layers whose zoom range excludes the current zoom level.\n- Symbol features that have been hidden due to text or icon collision.\n\nFeatures from all other layers are included, including features that may have no visible\ncontribution to the rendered result; for example, because the layer's opacity or color alpha component is set to\n0.\n\nThe topmost rendered feature appears first in the returned array, and subsequent features are sorted by\ndescending z-order. Features that are rendered multiple times (due to wrapping across the antimeridian at low\nzoom levels) are returned only once (though subject to the following caveat).\n\nBecause features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature\ngeometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple\ntimes in query results. For example, suppose there is a highway running through the bounding rectangle of a query.\nThe results of the query will be those parts of the highway that lie within the map tiles covering the bounding\nrectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile\nwill be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple\ntiles due to tile buffering." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.querySourceFeatures", + "type": "Function", + "tags": [], + "label": "querySourceFeatures", + "description": [ + "\nReturns an array of MapGeoJSONFeature objects\nrepresenting features within the specified vector tile or GeoJSON source that satisfy the query parameters.\n" + ], + "signature": [ + "(sourceId: string, parameters?: { sourceLayer: string; filter: any[]; validate?: boolean | undefined; } | null | undefined) => maplibregl.MapGeoJSONFeature[]" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.querySourceFeatures.$1", + "type": "string", + "tags": [], + "label": "sourceId", + "description": [ + "The ID of the vector tile or GeoJSON source to query." + ], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomTo.$3", - "type": "Object", + "id": "def-server.Map.querySourceFeatures.$2", + "type": "CompoundType", "tags": [], - "label": "eventData", - "description": [], + "label": "parameters", + "description": [ + "Options object." + ], "signature": [ - "maplibregl.EventData | undefined" + "{ sourceLayer: string; filter: any[]; validate?: boolean | undefined; } | null | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "An array of MapGeoJSONFeature objects.\n\nIn contrast to {@link MapqueryRenderedFeatures }, this function returns all features matching the query parameters,\nwhether or not they are rendered by the current style (i.e. visible). The domain of the query includes all currently-loaded\nvector tiles and GeoJSON source tiles: this function does not check tiles outside the currently\nvisible viewport.\n\nBecause features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature\ngeometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple\ntimes in query results. For example, suppose there is a highway running through the bounding rectangle of a query.\nThe results of the query will be those parts of the highway that lie within the map tiles covering the bounding\nrectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile\nwill be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple\ntiles due to tile buffering." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomIn", + "id": "def-server.Map.setStyle", "type": "Function", "tags": [], - "label": "zoomIn", - "description": [], + "label": "setStyle", + "description": [ + "\nUpdates the map's MapLibre style object with a new value.\n\nIf a style is already set when this is used and options.diff is set to true, the map renderer will attempt to compare the given style\nagainst the map's current state and perform only the changes necessary to make the map style match the desired state. Changes in sprites\n(images used for icons and patterns) and glyphs (fonts for label text) **cannot** be diffed. If the sprites or fonts used in the current\nstyle and the given style are different in any way, the map renderer will force a full update, removing the current style and building\nthe given one from scratch.\n\n" + ], "signature": [ - "(options?: maplibregl.AnimationOptions | undefined, eventData?: maplibregl.EventData | undefined) => this" + "(style: string | maplibregl.StyleSpecification | null, options?: ({ diff?: boolean | undefined; } & maplibregl.StyleOptions) | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomIn.$1", - "type": "Object", + "id": "def-server.Map.setStyle.$1", + "type": "CompoundType", "tags": [], - "label": "options", - "description": [], + "label": "style", + "description": [ + "A JSON object conforming to the schema described in the\n[MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/), or a URL to such JSON." + ], "signature": [ - "maplibregl.AnimationOptions | undefined" + "string | maplibregl.StyleSpecification | null" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomIn.$2", - "type": "Object", - "tags": [], - "label": "eventData", - "description": [], + "id": "def-server.Map.setStyle.$2", + "type": "CompoundType", + "tags": [], + "label": "options", + "description": [ + "Options object." + ], "signature": [ - "maplibregl.EventData | undefined" + "({ diff?: boolean | undefined; } & maplibregl.StyleOptions) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomOut", + "id": "def-server.Map.setTransformRequest", "type": "Function", "tags": [], - "label": "zoomOut", - "description": [], + "label": "setTransformRequest", + "description": [ + "\n Updates the requestManager's transform request with a new function\n" + ], "signature": [ - "(options?: maplibregl.AnimationOptions | undefined, eventData?: maplibregl.EventData | undefined) => this" + "(transformRequest: maplibregl.RequestTransformFunction) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomOut.$1", - "type": "Object", + "id": "def-server.Map.setTransformRequest.$1", + "type": "Function", "tags": [], - "label": "options", - "description": [], - "signature": [ - "maplibregl.AnimationOptions | undefined" + "label": "transformRequest", + "description": [ + "A callback run before the Map makes a request for an external URL. The callback can be used to modify the url, set headers, or set the credentials property for cross-origin requests.\nExpected to return an object with a `url` property and optionally `headers` and `credentials` properties" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.zoomOut.$2", - "type": "Object", - "tags": [], - "label": "eventData", - "description": [], "signature": [ - "maplibregl.EventData | undefined" + "maplibregl.RequestTransformFunction" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getBearing", + "id": "def-server.Map._getUIString", "type": "Function", "tags": [], - "label": "getBearing", + "label": "_getUIString", "description": [], "signature": [ - "() => number" + "(key: string) => any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [], + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._getUIString.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setBearing", + "id": "def-server.Map._updateStyle", "type": "Function", "tags": [], - "label": "setBearing", + "label": "_updateStyle", "description": [], "signature": [ - "(bearing: number, eventData?: maplibregl.EventData | undefined) => this" + "(style: string | maplibregl.StyleSpecification | null, options?: ({ diff?: boolean | undefined; } & maplibregl.StyleOptions) | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setBearing.$1", - "type": "number", + "id": "def-server.Map._updateStyle.$1", + "type": "CompoundType", "tags": [], - "label": "bearing", + "label": "style", "description": [], "signature": [ - "number" + "string | maplibregl.StyleSpecification | null" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setBearing.$2", - "type": "Object", + "id": "def-server.Map._updateStyle.$2", + "type": "CompoundType", "tags": [], - "label": "eventData", + "label": "options", "description": [], "signature": [ - "maplibregl.EventData | undefined" + "({ diff?: boolean | undefined; } & maplibregl.StyleOptions) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } @@ -3140,133 +3639,101 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getPadding", + "id": "def-server.Map._lazyInitEmptyStyle", "type": "Function", - "tags": [ - "memberof" - ], - "label": "getPadding", - "description": [ - "\nReturns the current padding applied around the map viewport.\n" - ], + "tags": [], + "label": "_lazyInitEmptyStyle", + "description": [], "signature": [ - "() => maplibregl.PaddingOptions" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [ - "The current padding around the map viewport." - ] + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPadding", + "id": "def-server.Map._diffStyle", "type": "Function", - "tags": [ - "memberof", - "fires", - "fires" - ], - "label": "setPadding", - "description": [ - "\nSets the padding in pixels around the viewport.\n\nEquivalent to `jumpTo({padding: padding})`.\n" - ], + "tags": [], + "label": "_diffStyle", + "description": [], "signature": [ - "(padding: maplibregl.RequireAtLeastOne, eventData?: maplibregl.EventData | undefined) => this" + "(style: string | maplibregl.StyleSpecification, options?: ({ diff?: boolean | undefined; } & maplibregl.StyleOptions) | undefined) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPadding.$1", + "id": "def-server.Map._diffStyle.$1", "type": "CompoundType", "tags": [], - "label": "padding", - "description": [ - "The desired padding. Format: { left: number, right: number, top: number, bottom: number }" - ], + "label": "style", + "description": [], "signature": [ - "maplibregl.RequireAtLeastOne" + "string | maplibregl.StyleSpecification" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPadding.$2", - "type": "Object", + "id": "def-server.Map._diffStyle.$2", + "type": "CompoundType", "tags": [], - "label": "eventData", - "description": [ - "Additional properties to be added to event objects of events triggered by this method." - ], + "label": "options", + "description": [], "signature": [ - "maplibregl.EventData | undefined" + "({ diff?: boolean | undefined; } & maplibregl.StyleOptions) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } ], - "returnComment": [ - "`this`" - ] + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.rotateTo", + "id": "def-server.Map._updateDiff", "type": "Function", "tags": [], - "label": "rotateTo", + "label": "_updateDiff", "description": [], "signature": [ - "(bearing: number, options?: maplibregl.AnimationOptions | undefined, eventData?: maplibregl.EventData | undefined) => this" + "(style: maplibregl.StyleSpecification, options?: ({ diff?: boolean | undefined; } & maplibregl.StyleOptions) | undefined) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.rotateTo.$1", - "type": "number", + "id": "def-server.Map._updateDiff.$1", + "type": "Object", "tags": [], - "label": "bearing", + "label": "style", "description": [], "signature": [ - "number" + "maplibregl.StyleSpecification" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.rotateTo.$2", - "type": "Object", + "id": "def-server.Map._updateDiff.$2", + "type": "CompoundType", "tags": [], "label": "options", "description": [], "signature": [ - "maplibregl.AnimationOptions | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.rotateTo.$3", - "type": "Object", - "tags": [], - "label": "eventData", - "description": [], - "signature": [ - "maplibregl.EventData | undefined" + "({ diff?: boolean | undefined; } & maplibregl.StyleOptions) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } @@ -3275,377 +3742,357 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.resetNorth", + "id": "def-server.Map.getStyle", "type": "Function", "tags": [], - "label": "resetNorth", - "description": [], + "label": "getStyle", + "description": [ + "\nReturns the map's MapLibre style object, a JSON object which can be used to recreate the map's style.\n" + ], "signature": [ - "(options?: maplibregl.AnimationOptions | undefined, eventData?: maplibregl.EventData | undefined) => this" + "() => maplibregl.StyleSpecification" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.resetNorth.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "maplibregl.AnimationOptions | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.resetNorth.$2", - "type": "Object", - "tags": [], - "label": "eventData", - "description": [], - "signature": [ - "maplibregl.EventData | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "The map's style JSON object." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.resetNorthPitch", + "id": "def-server.Map.isStyleLoaded", "type": "Function", "tags": [], - "label": "resetNorthPitch", - "description": [], + "label": "isStyleLoaded", + "description": [ + "\nReturns a Boolean indicating whether the map's style is fully loaded.\n" + ], + "signature": [ + "() => boolean | void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "A Boolean indicating whether the style is fully loaded." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.addSource", + "type": "Function", + "tags": [ + "fires", + "see" + ], + "label": "addSource", + "description": [ + "\nAdds a source to the map's style.\n" + ], "signature": [ - "(options?: maplibregl.AnimationOptions | null | undefined, eventData?: maplibregl.EventData | null | undefined) => this" + "(id: string, source: maplibregl.SourceSpecification) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.resetNorthPitch.$1", - "type": "CompoundType", + "id": "def-server.Map.addSource.$1", + "type": "string", "tags": [], - "label": "options", - "description": [], + "label": "id", + "description": [ + "The ID of the source to add. Must not conflict with existing sources." + ], "signature": [ - "maplibregl.AnimationOptions | null | undefined" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.resetNorthPitch.$2", + "id": "def-server.Map.addSource.$2", "type": "CompoundType", "tags": [], - "label": "eventData", - "description": [], + "label": "source", + "description": [ + "The source object, conforming to the\nMapLibre Style Specification's [source definition](https://maplibre.org/maplibre-gl-js-docs/style-spec/#sources) or\n{@link CanvasSourceOptions }." + ], "signature": [ - "maplibregl.EventData | null | undefined" + "maplibregl.SourceSpecification" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.snapToNorth", + "id": "def-server.Map.isSourceLoaded", "type": "Function", "tags": [], - "label": "snapToNorth", - "description": [], + "label": "isSourceLoaded", + "description": [ + "\nReturns a Boolean indicating whether the source is loaded. Returns `true` if the source with\nthe given ID in the map's style has no outstanding network requests, otherwise `false`.\n" + ], "signature": [ - "(options?: maplibregl.AnimationOptions | undefined, eventData?: maplibregl.EventData | undefined) => this" + "(id: string) => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.snapToNorth.$1", - "type": "Object", + "id": "def-server.Map.isSourceLoaded.$1", + "type": "string", "tags": [], - "label": "options", - "description": [], - "signature": [ - "maplibregl.AnimationOptions | undefined" + "label": "id", + "description": [ + "The ID of the source to be checked." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.snapToNorth.$2", - "type": "Object", - "tags": [], - "label": "eventData", - "description": [], "signature": [ - "maplibregl.EventData | undefined" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "A Boolean indicating whether the source is loaded." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.getPitch", + "id": "def-server.Map.areTilesLoaded", "type": "Function", "tags": [], - "label": "getPitch", - "description": [], + "label": "areTilesLoaded", + "description": [ + "\nReturns a Boolean indicating whether all tiles in the viewport from all sources on\nthe style are loaded.\n" + ], "signature": [ - "() => number" + "() => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "A Boolean indicating whether all tiles are loaded." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPitch", + "id": "def-server.Map.addSourceType", "type": "Function", - "tags": [], - "label": "setPitch", - "description": [], + "tags": [ + "private" + ], + "label": "addSourceType", + "description": [ + "\nAdds a [custom source type](#Custom Sources), making it available for use with\n{@link Map#addSource}." + ], "signature": [ - "(pitch: number, eventData?: maplibregl.EventData | undefined) => this" + "(name: string, SourceType: any, callback: maplibregl.Callback) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPitch.$1", - "type": "number", + "id": "def-server.Map.addSourceType.$1", + "type": "string", "tags": [], - "label": "pitch", - "description": [], + "label": "name", + "description": [ + "The name of the source type; source definition objects use this name in the `{type: ...}` field." + ], "signature": [ - "number" + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.addSourceType.$2", + "type": "Any", + "tags": [], + "label": "SourceType", + "description": [ + "A {@link Source } constructor." + ], + "signature": [ + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.setPitch.$2", - "type": "Object", + "id": "def-server.Map.addSourceType.$3", + "type": "Function", "tags": [], - "label": "eventData", - "description": [], + "label": "callback", + "description": [ + "Called when the source type is ready or with an error argument if there is an error." + ], "signature": [ - "maplibregl.EventData | undefined" + "maplibregl.Callback" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.cameraForBounds", + "id": "def-server.Map.removeSource", "type": "Function", "tags": [], - "label": "cameraForBounds", - "description": [], + "label": "removeSource", + "description": [ + "\nRemoves a source from the map's style.\n" + ], "signature": [ - "(bounds: maplibregl.LngLatBoundsLike, options?: maplibregl.CameraForBoundsOptions | undefined) => maplibregl.CameraForBoundsResult | undefined" + "(id: string) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.cameraForBounds.$1", - "type": "CompoundType", + "id": "def-server.Map.removeSource.$1", + "type": "string", "tags": [], - "label": "bounds", - "description": [], - "signature": [ - "maplibregl.LngLatBoundsLike" + "label": "id", + "description": [ + "The ID of the source to remove." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.cameraForBounds.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], "signature": [ - "maplibregl.CameraForBoundsOptions | undefined" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitBounds", + "id": "def-server.Map.getSource", "type": "Function", - "tags": [], - "label": "fitBounds", - "description": [], + "tags": [ + "see", + "see", + "see" + ], + "label": "getSource", + "description": [ + "\nReturns the source with the specified ID in the map's style.\n\nThis method is often used to update a source using the instance members for the relevant\nsource type as defined in [Sources](#sources).\nFor example, setting the `data` for a GeoJSON source or updating the `url` and `coordinates`\nof an image source.\n" + ], "signature": [ - "(bounds: maplibregl.LngLatBoundsLike, options?: maplibregl.FitBoundsOptions | undefined, eventData?: maplibregl.EventData | undefined) => this" + "(id: string) => maplibregl.Source | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitBounds.$1", - "type": "CompoundType", - "tags": [], - "label": "bounds", - "description": [], - "signature": [ - "maplibregl.LngLatBoundsLike" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitBounds.$2", - "type": "Object", + "id": "def-server.Map.getSource.$1", + "type": "string", "tags": [], - "label": "options", - "description": [], - "signature": [ - "maplibregl.FitBoundsOptions | undefined" + "label": "id", + "description": [ + "The ID of the source to get." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitBounds.$3", - "type": "Object", - "tags": [], - "label": "eventData", - "description": [], "signature": [ - "maplibregl.EventData | undefined" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The style source with the specified ID or `undefined` if the ID\ncorresponds to no existing sources.\nThe shape of the object varies by source type.\nA list of options for each source type is available on the MapLibre Style Specification's\n[Sources](https://maplibre.org/maplibre-gl-js-docs/style-spec/sources/) page." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitScreenCoordinates", + "id": "def-server.Map.addImage", "type": "Function", - "tags": [], - "label": "fitScreenCoordinates", - "description": [], + "tags": [ + "see", + "see" + ], + "label": "addImage", + "description": [ + "\nAdd an image to the style. This image can be displayed on the map like any other icon in the style's\nsprite using the image's ID with\n[`icon-image`](https://maplibre.org/maplibre-gl-js-docs/style-spec/#layout-symbol-icon-image),\n[`background-pattern`](https://maplibre.org/maplibre-gl-js-docs/style-spec/#paint-background-background-pattern),\n[`fill-pattern`](https://maplibre.org/maplibre-gl-js-docs/style-spec/#paint-fill-fill-pattern),\nor [`line-pattern`](https://maplibre.org/maplibre-gl-js-docs/style-spec/#paint-line-line-pattern).\nA {@link Map.event:error} event will be fired if there is not enough space in the sprite to add this image.\n" + ], "signature": [ - "(p0: maplibregl.PointLike, p1: maplibregl.PointLike, bearing: number, options?: (maplibregl.AnimationOptions & maplibregl.CameraOptions) | undefined, eventData?: maplibregl.EventData | undefined) => this" + "(id: string, image: HTMLImageElement | ImageBitmap | ImageData | { width: number; height: number; data: Uint8Array | Uint8ClampedArray; } | maplibregl.StyleImageInterface, { pixelRatio, sdf, stretchX, stretchY, content }?: Partial | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitScreenCoordinates.$1", - "type": "CompoundType", + "id": "def-server.Map.addImage.$1", + "type": "string", "tags": [], - "label": "p0", - "description": [], + "label": "id", + "description": [ + "The ID of the image." + ], "signature": [ - "maplibregl.PointLike" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitScreenCoordinates.$2", + "id": "def-server.Map.addImage.$2", "type": "CompoundType", "tags": [], - "label": "p1", - "description": [], - "signature": [ - "maplibregl.PointLike" + "label": "image", + "description": [ + "The image as an `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`\nproperties with the same format as `ImageData`." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitScreenCoordinates.$3", - "type": "number", - "tags": [], - "label": "bearing", - "description": [], "signature": [ - "number" + "HTMLImageElement | ImageBitmap | ImageData | { width: number; height: number; data: Uint8Array | Uint8ClampedArray; } | maplibregl.StyleImageInterface" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitScreenCoordinates.$4", - "type": "CompoundType", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "(maplibregl.AnimationOptions & maplibregl.CameraOptions) | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.fitScreenCoordinates.$5", + "id": "def-server.Map.addImage.$3", "type": "Object", "tags": [], - "label": "eventData", + "label": "{ pixelRatio, sdf, stretchX, stretchY, content }", "description": [], "signature": [ - "maplibregl.EventData | undefined" + "Partial | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": false } @@ -3654,218 +4101,170 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.jumpTo", + "id": "def-server.Map.updateImage", "type": "Function", "tags": [], - "label": "jumpTo", - "description": [], + "label": "updateImage", + "description": [ + "\nUpdate an existing image in a style. This image can be displayed on the map like any other icon in the style's\nsprite using the image's ID with\n[`icon-image`](https://maplibre.org/maplibre-gl-js-docs/style-spec/#layout-symbol-icon-image),\n[`background-pattern`](https://maplibre.org/maplibre-gl-js-docs/style-spec/#paint-background-background-pattern),\n[`fill-pattern`](https://maplibre.org/maplibre-gl-js-docs/style-spec/#paint-fill-fill-pattern),\nor [`line-pattern`](https://maplibre.org/maplibre-gl-js-docs/style-spec/#paint-line-line-pattern).\n" + ], "signature": [ - "(options: maplibregl.CameraOptions, eventData?: maplibregl.EventData | undefined) => this" + "(id: string, image: HTMLImageElement | ImageBitmap | ImageData | maplibregl.StyleImageInterface | { width: number; height: number; data: Uint8Array | Uint8ClampedArray; }) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.jumpTo.$1", - "type": "Object", + "id": "def-server.Map.updateImage.$1", + "type": "string", "tags": [], - "label": "options", - "description": [], + "label": "id", + "description": [ + "The ID of the image." + ], "signature": [ - "maplibregl.CameraOptions" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.jumpTo.$2", - "type": "Object", + "id": "def-server.Map.updateImage.$2", + "type": "CompoundType", "tags": [], - "label": "eventData", - "description": [], + "label": "image", + "description": [ + "The image as an `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`\nproperties with the same format as `ImageData`." + ], "signature": [ - "maplibregl.EventData | undefined" + "HTMLImageElement | ImageBitmap | ImageData | maplibregl.StyleImageInterface | { width: number; height: number; data: Uint8Array | Uint8ClampedArray; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.easeTo", + "id": "def-server.Map.hasImage", "type": "Function", "tags": [], - "label": "easeTo", - "description": [], + "label": "hasImage", + "description": [ + "\nCheck whether or not an image with a specific ID exists in the style. This checks both images\nin the style's original sprite and any images\nthat have been added at runtime using {@link Map#addImage}.\n" + ], "signature": [ - "(options: maplibregl.EaseToOptions, eventData?: maplibregl.EventData | undefined) => this" + "(id: string) => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.easeTo.$1", - "type": "Object", + "id": "def-server.Map.hasImage.$1", + "type": "string", "tags": [], - "label": "options", - "description": [], - "signature": [ - "maplibregl.EaseToOptions" + "label": "id", + "description": [ + "The ID of the image." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.easeTo.$2", - "type": "Object", - "tags": [], - "label": "eventData", - "description": [], "signature": [ - "maplibregl.EventData | undefined" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "A Boolean indicating whether the image exists." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.flyTo", + "id": "def-server.Map.removeImage", "type": "Function", "tags": [], - "label": "flyTo", - "description": [], + "label": "removeImage", + "description": [ + "\nRemove an image from a style. This can be an image from the style's original\nsprite or any images\nthat have been added at runtime using {@link Map#addImage}.\n" + ], "signature": [ - "(options: maplibregl.FlyToOptions, eventData?: maplibregl.EventData | undefined) => this" + "(id: string) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.flyTo.$1", - "type": "Object", + "id": "def-server.Map.removeImage.$1", + "type": "string", "tags": [], - "label": "options", - "description": [], - "signature": [ - "maplibregl.FlyToOptions" + "label": "id", + "description": [ + "The ID of the image." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.flyTo.$2", - "type": "Object", - "tags": [], - "label": "eventData", - "description": [], "signature": [ - "maplibregl.EventData | undefined" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.isEasing", + "id": "def-server.Map.loadImage", "type": "Function", - "tags": [], - "label": "isEasing", - "description": [], - "signature": [ - "() => boolean" + "tags": [ + "see" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.stop", - "type": "Function", - "tags": [], - "label": "stop", - "description": [], - "signature": [ - "() => this" + "label": "loadImage", + "description": [ + "\nLoad an image from an external URL to be used with {@link Map#addImage}. External\ndomains must support [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS).\n" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on", - "type": "Function", - "tags": [], - "label": "on", - "description": [], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(url: string, callback: maplibregl.GetImageCallback) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on.$1", - "type": "Uncategorized", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "T" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on.$2", + "id": "def-server.Map.loadImage.$1", "type": "string", "tags": [], - "label": "layer", - "description": [], + "label": "url", + "description": [ + "The URL of the image file. Image file must be in png, webp, or jpg format." + ], "signature": [ "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on.$3", + "id": "def-server.Map.loadImage.$2", "type": "Function", "tags": [], - "label": "listener", - "description": [], + "label": "callback", + "description": [ + "Expecting `callback(error, data)`. Called when the image has loaded or with an error argument if there is an error." + ], "signature": [ - "(ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void" + "maplibregl.GetImageCallback" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -3874,144 +4273,161 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on", + "id": "def-server.Map.listImages", "type": "Function", "tags": [], - "label": "on", - "description": [], + "label": "listImages", + "description": [ + "\nReturns an Array of strings containing the IDs of all images currently available in the map.\nThis includes both images from the style's original sprite\nand any images that have been added at runtime using {@link Map#addImage}.\n" + ], + "signature": [ + "() => string[]" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "An Array of strings containing the names of all sprites/images currently available in the map." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.addLayer", + "type": "Function", + "tags": [ + "see", + "see", + "see" + ], + "label": "addLayer", + "description": [ + "\nAdds a [MapLibre style layer](https://maplibre.org/maplibre-gl-js-docs/style-spec/#layers)\nto the map's style.\n\nA layer defines how data from a specified source will be styled. Read more about layer types\nand available paint and layout properties in the [MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/#layers).\n" + ], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(layer: maplibregl.LayerSpecification | maplibregl.CustomLayerInterface, beforeId?: string | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on.$1", - "type": "Uncategorized", + "id": "def-server.Map.addLayer.$1", + "type": "CompoundType", "tags": [], - "label": "type", - "description": [], + "label": "layer", + "description": [ + "The layer to add, conforming to either the MapLibre Style Specification's [layer definition](https://maplibre.org/maplibre-gl-js-docs/style-spec/#layers) or, less commonly, the {@link CustomLayerInterface } specification.\nThe MapLibre Style Specification's layer definition is appropriate for most layers." + ], "signature": [ - "T" + "maplibregl.LayerSpecification | maplibregl.CustomLayerInterface" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on.$2", - "type": "Function", + "id": "def-server.Map.addLayer.$2", + "type": "string", "tags": [], - "label": "listener", - "description": [], + "label": "beforeId", + "description": [ + "The ID of an existing layer to insert the new layer before,\nresulting in the new layer appearing visually beneath the existing layer.\nIf this argument is not specified, the layer will be appended to the end of the layers array\nand appear visually above all other layers." + ], "signature": [ - "(ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void" + "string | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on", + "id": "def-server.Map.moveLayer", "type": "Function", "tags": [], - "label": "on", - "description": [], + "label": "moveLayer", + "description": [ + "\nMoves a layer to a different z-position.\n" + ], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(id: string, beforeId?: string | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on.$1", + "id": "def-server.Map.moveLayer.$1", "type": "string", "tags": [], - "label": "type", - "description": [], + "label": "id", + "description": [ + "The ID of the layer to move." + ], "signature": [ "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.on.$2", - "type": "Function", + "id": "def-server.Map.moveLayer.$2", + "type": "string", "tags": [], - "label": "listener", - "description": [], + "label": "beforeId", + "description": [ + "The ID of an existing layer to insert the new layer before. When viewing the map, the `id` layer will appear beneath the `beforeId` layer. If `beforeId` is omitted, the layer will be appended to the end of the layers array and appear above all other layers on the map." + ], "signature": [ - "(ev: any) => void" + "string | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once", + "id": "def-server.Map.removeLayer", "type": "Function", - "tags": [], - "label": "once", - "description": [], + "tags": [ + "fires" + ], + "label": "removeLayer", + "description": [ + "\nRemoves the layer with the given ID from the map's style.\n\nIf no such layer exists, an `error` event is fired.\n" + ], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(id: string) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once.$1", - "type": "Uncategorized", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "T" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once.$2", + "id": "def-server.Map.removeLayer.$1", "type": "string", "tags": [], - "label": "layer", - "description": [], - "signature": [ - "string" + "label": "id", + "description": [ + "id of the layer to remove" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once.$3", - "type": "Function", - "tags": [], - "label": "listener", - "description": [], "signature": [ - "(ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -4020,633 +4436,609 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once", + "id": "def-server.Map.getLayer", "type": "Function", - "tags": [], - "label": "once", - "description": [], + "tags": [ + "see", + "see" + ], + "label": "getLayer", + "description": [ + "\nReturns the layer with the specified ID in the map's style.\n" + ], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(id: string) => StyleLayer" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once.$1", - "type": "Uncategorized", + "id": "def-server.Map.getLayer.$1", + "type": "string", "tags": [], - "label": "type", - "description": [], - "signature": [ - "T" + "label": "id", + "description": [ + "The ID of the layer to get." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once.$2", - "type": "Function", - "tags": [], - "label": "listener", - "description": [], "signature": [ - "(ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The layer with the specified ID, or `undefined`\nif the ID corresponds to no existing layers." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once", + "id": "def-server.Map.setLayerZoomRange", "type": "Function", "tags": [], - "label": "once", - "description": [], + "label": "setLayerZoomRange", + "description": [ + "\nSets the zoom extent for the specified style layer. The zoom extent includes the\n[minimum zoom level](https://maplibre.org/maplibre-gl-js-docs/style-spec/#layer-minzoom)\nand [maximum zoom level](https://maplibre.org/maplibre-gl-js-docs/style-spec/#layer-maxzoom))\nat which the layer will be rendered.\n\nNote: For style layers using vector sources, style layers cannot be rendered at zoom levels lower than the\nminimum zoom level of the _source layer_ because the data does not exist at those zoom levels. If the minimum\nzoom level of the source layer is higher than the minimum zoom level defined in the style layer, the style\nlayer will not be rendered at all zoom levels in the zoom range.\n" + ], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(layerId: string, minzoom: number, maxzoom: number) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once.$1", + "id": "def-server.Map.setLayerZoomRange.$1", "type": "string", "tags": [], - "label": "type", - "description": [], + "label": "layerId", + "description": [ + "The ID of the layer to which the zoom extent will be applied." + ], "signature": [ "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.once.$2", - "type": "Function", + "id": "def-server.Map.setLayerZoomRange.$2", + "type": "number", "tags": [], - "label": "listener", - "description": [], + "label": "minzoom", + "description": [ + "The minimum zoom to set (0-24)." + ], + "signature": [ + "number" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setLayerZoomRange.$3", + "type": "number", + "tags": [], + "label": "maxzoom", + "description": [ + "The maximum zoom to set (0-24)." + ], "signature": [ - "(ev: any) => void" + "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off", + "id": "def-server.Map.setFilter", "type": "Function", - "tags": [], - "label": "off", - "description": [], + "tags": [ + "see" + ], + "label": "setFilter", + "description": [ + "\nSets the filter for the specified style layer.\n\nFilters control which features a style layer renders from its source.\nAny feature for which the filter expression evaluates to `true` will be\nrendered on the map. Those that are false will be hidden.\n\nUse `setFilter` to show a subset of your source data.\n\nTo clear the filter, pass `null` or `undefined` as the second parameter.\n" + ], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(layerId: string, filter?: maplibregl.FilterSpecification | null | undefined, options?: maplibregl.StyleSetterOptions | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off.$1", - "type": "Uncategorized", + "id": "def-server.Map.setFilter.$1", + "type": "string", "tags": [], - "label": "type", - "description": [], + "label": "layerId", + "description": [ + "The ID of the layer to which the filter will be applied." + ], "signature": [ - "T" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off.$2", - "type": "string", + "id": "def-server.Map.setFilter.$2", + "type": "CompoundType", "tags": [], - "label": "layer", - "description": [], + "label": "filter", + "description": [ + "The filter, conforming to the MapLibre Style Specification's\n[filter definition](https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/#filter). If `null` or `undefined` is provided, the function removes any existing filter from the layer." + ], "signature": [ - "string" + "maplibregl.FilterSpecification | null | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off.$3", - "type": "Function", + "id": "def-server.Map.setFilter.$3", + "type": "Object", "tags": [], - "label": "listener", - "description": [], + "label": "options", + "description": [ + "Options object." + ], "signature": [ - "(ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void" + "maplibregl.StyleSetterOptions | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off", + "id": "def-server.Map.getFilter", "type": "Function", - "tags": [], - "label": "off", - "description": [], + "tags": [], + "label": "getFilter", + "description": [ + "\nReturns the filter applied to the specified style layer.\n" + ], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(layerId: string) => void | maplibregl.FilterSpecification" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off.$1", - "type": "Uncategorized", + "id": "def-server.Map.getFilter.$1", + "type": "string", "tags": [], - "label": "type", - "description": [], - "signature": [ - "T" + "label": "layerId", + "description": [ + "The ID of the style layer whose filter to get." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off.$2", - "type": "Function", - "tags": [], - "label": "listener", - "description": [], "signature": [ - "(ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The layer's filter." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off", + "id": "def-server.Map.setPaintProperty", "type": "Function", - "tags": [], - "label": "off", - "description": [], + "tags": [ + "see", + "see" + ], + "label": "setPaintProperty", + "description": [ + "\nSets the value of a paint property in the specified style layer.\n" + ], "signature": [ - "{ (type: T, layer: string, listener: (ev: maplibregl.MapLayerEventType[T] & maplibregl.EventData) => void): this; (type: T, listener: (ev: maplibregl.MapEventType[T] & maplibregl.EventData) => void): this; (type: string, listener: (ev: any) => void): this; }" + "(layerId: string, name: string, value: any, options?: maplibregl.StyleSetterOptions | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off.$1", + "id": "def-server.Map.setPaintProperty.$1", "type": "string", "tags": [], - "label": "type", - "description": [], + "label": "layerId", + "description": [ + "The ID of the layer to set the paint property in." + ], "signature": [ "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.off.$2", - "type": "Function", + "id": "def-server.Map.setPaintProperty.$2", + "type": "string", "tags": [], - "label": "listener", - "description": [], + "label": "name", + "description": [ + "The name of the paint property to set." + ], "signature": [ - "(ev: any) => void" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.scrollZoom", - "type": "Object", - "tags": [], - "label": "scrollZoom", - "description": [], - "signature": [ - "maplibregl.ScrollZoomHandler" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.boxZoom", - "type": "Object", - "tags": [], - "label": "boxZoom", - "description": [], - "signature": [ - "maplibregl.BoxZoomHandler" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.dragRotate", - "type": "Object", - "tags": [], - "label": "dragRotate", - "description": [], - "signature": [ - "maplibregl.DragRotateHandler" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.dragPan", - "type": "Object", - "tags": [], - "label": "dragPan", - "description": [], - "signature": [ - "maplibregl.DragPanHandler" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.keyboard", - "type": "Object", - "tags": [], - "label": "keyboard", - "description": [], - "signature": [ - "maplibregl.KeyboardHandler" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.doubleClickZoom", - "type": "Object", - "tags": [], - "label": "doubleClickZoom", - "description": [], - "signature": [ - "maplibregl.DoubleClickZoomHandler" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.touchZoomRotate", - "type": "Object", - "tags": [], - "label": "touchZoomRotate", - "description": [], - "signature": [ - "maplibregl.TouchZoomRotateHandler" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Map.touchPitch", - "type": "Object", - "tags": [], - "label": "touchPitch", - "description": [], - "signature": [ - "maplibregl.TouchPitchHandler" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapMouseEvent", - "type": "Class", - "tags": [], - "label": "MapMouseEvent", - "description": [], - "signature": [ - "maplibregl.MapMouseEvent extends maplibregl.MapboxEvent" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapMouseEvent.type", - "type": "CompoundType", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"click\" | \"dblclick\" | \"mousedown\" | \"mouseup\" | \"mousemove\" | \"mouseenter\" | \"mouseleave\" | \"mouseover\" | \"mouseout\" | \"contextmenu\"" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapMouseEvent.point", - "type": "Object", - "tags": [], - "label": "point", - "description": [], - "signature": [ - "maplibregl.Point" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapMouseEvent.lngLat", - "type": "Object", - "tags": [], - "label": "lngLat", - "description": [], - "signature": [ - "maplibregl.LngLat" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapMouseEvent.preventDefault", - "type": "Function", - "tags": [], - "label": "preventDefault", - "description": [], - "signature": [ - "() => void" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapMouseEvent.defaultPrevented", - "type": "boolean", - "tags": [], - "label": "defaultPrevented", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point", - "type": "Class", - "tags": [], - "label": "Point", - "description": [ - "\nPoint" - ], - "signature": [ - "maplibregl.Point" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.x", - "type": "number", - "tags": [], - "label": "x", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.y", - "type": "number", - "tags": [], - "label": "y", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setPaintProperty.$3", + "type": "Any", + "tags": [], + "label": "value", + "description": [ + "The value of the paint property to set.\nMust be of a type appropriate for the property, as defined in the [MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/)." + ], + "signature": [ + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setPaintProperty.$4", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "Options object." + ], + "signature": [ + "maplibregl.StyleSetterOptions | undefined" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.Unnamed", + "id": "def-server.Map.getPaintProperty", "type": "Function", "tags": [], - "label": "Constructor", - "description": [], + "label": "getPaintProperty", + "description": [ + "\nReturns the value of a paint property in the specified style layer.\n" + ], "signature": [ - "any" + "(layerId: string, name: string) => unknown" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.Unnamed.$1", - "type": "number", + "id": "def-server.Map.getPaintProperty.$1", + "type": "string", "tags": [], - "label": "x", - "description": [], + "label": "layerId", + "description": [ + "The ID of the layer to get the paint property from." + ], "signature": [ - "number" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.Unnamed.$2", - "type": "number", + "id": "def-server.Map.getPaintProperty.$2", + "type": "string", "tags": [], - "label": "y", - "description": [], + "label": "name", + "description": [ + "The name of a paint property to get." + ], "signature": [ - "number" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The value of the specified paint property." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.clone", + "id": "def-server.Map.setLayoutProperty", "type": "Function", "tags": [], - "label": "clone", - "description": [], - "signature": [ - "() => maplibregl.Point" + "label": "setLayoutProperty", + "description": [ + "\nSets the value of a layout property in the specified style layer.\n" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.add", - "type": "Function", - "tags": [], - "label": "add", - "description": [], "signature": [ - "(p: maplibregl.Point) => maplibregl.Point" + "(layerId: string, name: string, value: any, options?: maplibregl.StyleSetterOptions | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.add.$1", - "type": "Object", + "id": "def-server.Map.setLayoutProperty.$1", + "type": "string", "tags": [], - "label": "p", - "description": [], + "label": "layerId", + "description": [ + "The ID of the layer to set the layout property in." + ], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setLayoutProperty.$2", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "The name of the layout property to set." + ], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setLayoutProperty.$3", + "type": "Any", + "tags": [], + "label": "value", + "description": [ + "The value of the layout property. Must be of a type appropriate for the property, as defined in the [MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/)." + ], "signature": [ - "maplibregl.Point" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setLayoutProperty.$4", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "Options object." + ], + "signature": [ + "maplibregl.StyleSetterOptions | undefined" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.sub", + "id": "def-server.Map.getLayoutProperty", "type": "Function", "tags": [], - "label": "sub", - "description": [], + "label": "getLayoutProperty", + "description": [ + "\nReturns the value of a layout property in the specified style layer.\n" + ], "signature": [ - "(p: maplibregl.Point) => maplibregl.Point" + "(layerId: string, name: string) => any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.sub.$1", - "type": "Object", + "id": "def-server.Map.getLayoutProperty.$1", + "type": "string", "tags": [], - "label": "p", - "description": [], + "label": "layerId", + "description": [ + "The ID of the layer to get the layout property from." + ], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.getLayoutProperty.$2", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "The name of the layout property to get." + ], "signature": [ - "maplibregl.Point" + "string" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The value of the specified layout property." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.mult", + "id": "def-server.Map.setLight", "type": "Function", "tags": [], - "label": "mult", - "description": [], + "label": "setLight", + "description": [ + "\nSets the any combination of light values.\n" + ], "signature": [ - "(k: number) => maplibregl.Point" + "(light: maplibregl.LightSpecification, options?: maplibregl.StyleSetterOptions | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.mult.$1", - "type": "number", + "id": "def-server.Map.setLight.$1", + "type": "Object", "tags": [], - "label": "k", - "description": [], + "label": "light", + "description": [ + "Light properties to set. Must conform to the [MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/#light)." + ], "signature": [ - "number" + "maplibregl.LightSpecification" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setLight.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "Options object." + ], + "signature": [ + "maplibregl.StyleSetterOptions | undefined" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "`this`" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.div", + "id": "def-server.Map.getLight", "type": "Function", "tags": [], - "label": "div", - "description": [], + "label": "getLight", + "description": [ + "\nReturns the value of the light object.\n" + ], + "signature": [ + "() => any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "light Light properties of the style." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setFeatureState", + "type": "Function", + "tags": [ + "see" + ], + "label": "setFeatureState", + "description": [ + "\nSets the `state` of a feature.\nA feature's `state` is a set of user-defined key-value pairs that are assigned to a feature at runtime.\nWhen using this method, the `state` object is merged with any existing key-value pairs in the feature's state.\nFeatures are identified by their `feature.id` attribute, which can be any number or string.\n\nThis method can only be used with sources that have a `feature.id` attribute. The `feature.id` attribute can be defined in three ways:\n- For vector or GeoJSON sources, including an `id` attribute in the original data file.\n- For vector or GeoJSON sources, using the [`promoteId`](https://maplibre.org/maplibre-gl-js-docs/style-spec/sources/#vector-promoteId) option at the time the source is defined.\n- For GeoJSON sources, using the [`generateId`](https://maplibre.org/maplibre-gl-js-docs/style-spec/sources/#geojson-generateId) option to auto-assign an `id` based on the feature's index in the source data. If you change feature data using `map.getSource('some id').setData(..)`, you may need to re-apply state taking into account updated `id` values.\n\n_Note: You can use the [`feature-state` expression](https://maplibre.org/maplibre-gl-js-docs/style-spec/expressions/#feature-state) to access the values in a feature's state object for the purposes of styling._\n" + ], "signature": [ - "(k: number) => maplibregl.Point" + "(feature: maplibregl.FeatureIdentifier, state: any) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.div.$1", - "type": "number", + "id": "def-server.Map.setFeatureState.$1", + "type": "Object", "tags": [], - "label": "k", - "description": [], + "label": "feature", + "description": [ + "Feature identifier. Feature objects returned from\n{@link MapqueryRenderedFeatures } or event handlers can be used as feature identifiers." + ], "signature": [ - "number" + "maplibregl.FeatureIdentifier" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.setFeatureState.$2", + "type": "Any", + "tags": [], + "label": "state", + "description": [ + "A set of key-value pairs. The values should be valid JSON types." + ], + "signature": [ + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -4655,208 +5047,235 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.rotate", + "id": "def-server.Map.removeFeatureState", "type": "Function", "tags": [], - "label": "rotate", - "description": [], + "label": "removeFeatureState", + "description": [ + "\nRemoves the `state` of a feature, setting it back to the default behavior.\nIf only a `target.source` is specified, it will remove the state for all features from that source.\nIf `target.id` is also specified, it will remove all keys for that feature's state.\nIf `key` is also specified, it removes only that key from that feature's state.\nFeatures are identified by their `feature.id` attribute, which can be any number or string.\n" + ], "signature": [ - "(a: number) => maplibregl.Point" + "(target: maplibregl.FeatureIdentifier, key?: string | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.rotate.$1", - "type": "number", + "id": "def-server.Map.removeFeatureState.$1", + "type": "Object", "tags": [], - "label": "a", - "description": [], + "label": "target", + "description": [ + "Identifier of where to remove state. It can be a source, a feature, or a specific key of feature.\nFeature objects returned from {@link MapqueryRenderedFeatures } or event handlers can be used as feature identifiers." + ], "signature": [ - "number" + "maplibregl.FeatureIdentifier" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.removeFeatureState.$2", + "type": "string", + "tags": [], + "label": "key", + "description": [ + "(optional) The key in the feature state to reset." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.matMult", + "id": "def-server.Map.getFeatureState", "type": "Function", "tags": [], - "label": "matMult", - "description": [], + "label": "getFeatureState", + "description": [ + "\nGets the `state` of a feature.\nA feature's `state` is a set of user-defined key-value pairs that are assigned to a feature at runtime.\nFeatures are identified by their `feature.id` attribute, which can be any number or string.\n\n_Note: To access the values in a feature's state object for the purposes of styling the feature, use the [`feature-state` expression](https://maplibre.org/maplibre-gl-js-docs/style-spec/expressions/#feature-state)._\n" + ], "signature": [ - "(m: number) => maplibregl.Point" + "(feature: maplibregl.FeatureIdentifier) => any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.matMult.$1", - "type": "number", + "id": "def-server.Map.getFeatureState.$1", + "type": "Object", "tags": [], - "label": "m", - "description": [], + "label": "feature", + "description": [ + "Feature identifier. Feature objects returned from\n{@link MapqueryRenderedFeatures } or event handlers can be used as feature identifiers." + ], "signature": [ - "number" + "maplibregl.FeatureIdentifier" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The state of the feature: a set of key-value pairs that was assigned to the feature at runtime." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.unit", + "id": "def-server.Map.getContainer", "type": "Function", "tags": [], - "label": "unit", - "description": [], + "label": "getContainer", + "description": [ + "\nReturns the map's containing HTML element.\n" + ], "signature": [ - "() => maplibregl.Point" + "() => HTMLElement" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The map's container." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.perp", + "id": "def-server.Map.getCanvasContainer", "type": "Function", - "tags": [], - "label": "perp", - "description": [], + "tags": [ + "see" + ], + "label": "getCanvasContainer", + "description": [ + "\nReturns the HTML element containing the map's `` element.\n\nIf you want to add non-GL overlays to the map, you should append them to this element.\n\nThis is the element to which event bindings for map interactivity (such as panning and zooming) are\nattached. It will receive bubbled events from child elements such as the ``, but not from\nmap controls.\n" + ], "signature": [ - "() => maplibregl.Point" + "() => HTMLElement" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The container of the map's ``." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.round", + "id": "def-server.Map.getCanvas", + "type": "Function", + "tags": [ + "see", + "see", + "see" + ], + "label": "getCanvas", + "description": [ + "\nReturns the map's `` element.\n" + ], + "signature": [ + "() => HTMLCanvasElement" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "The map's `` element." + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._containerDimensions", "type": "Function", "tags": [], - "label": "round", + "label": "_containerDimensions", "description": [], "signature": [ - "() => maplibregl.Point" + "() => number[]" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.mag", + "id": "def-server.Map._setupContainer", "type": "Function", "tags": [], - "label": "mag", + "label": "_setupContainer", "description": [], "signature": [ - "() => number" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.equals", + "id": "def-server.Map._resizeCanvas", "type": "Function", "tags": [], - "label": "equals", + "label": "_resizeCanvas", "description": [], "signature": [ - "(p: maplibregl.Point) => boolean" + "(width: number, height: number, pixelRatio: number) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.equals.$1", - "type": "Object", + "id": "def-server.Map._resizeCanvas.$1", + "type": "number", "tags": [], - "label": "p", + "label": "width", "description": [], "signature": [ - "maplibregl.Point" + "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.dist", - "type": "Function", - "tags": [], - "label": "dist", - "description": [], - "signature": [ - "(p: maplibregl.Point) => number" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.dist.$1", - "type": "Object", + "id": "def-server.Map._resizeCanvas.$2", + "type": "number", "tags": [], - "label": "p", + "label": "height", "description": [], "signature": [ - "maplibregl.Point" + "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.distSqr", - "type": "Function", - "tags": [], - "label": "distSqr", - "description": [], - "signature": [ - "(p: maplibregl.Point) => number" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.distSqr.$1", - "type": "Object", + "id": "def-server.Map._resizeCanvas.$3", + "type": "number", "tags": [], - "label": "p", + "label": "pixelRatio", "description": [], "signature": [ - "maplibregl.Point" + "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -4865,73 +5284,43 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.angle", + "id": "def-server.Map._setupPainter", "type": "Function", "tags": [], - "label": "angle", + "label": "_setupPainter", "description": [], "signature": [ - "() => number" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [], "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.angleTo", - "type": "Function", - "tags": [], - "label": "angleTo", - "description": [], - "signature": [ - "(p: maplibregl.Point) => number" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.angleTo.$1", - "type": "Object", - "tags": [], - "label": "p", - "description": [], - "signature": [ - "maplibregl.Point" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.angleWidth", + "id": "def-server.Map._contextLost", "type": "Function", "tags": [], - "label": "angleWidth", + "label": "_contextLost", "description": [], "signature": [ - "(p: maplibregl.Point) => number" + "(event: any) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.angleWidth.$1", - "type": "Object", + "id": "def-server.Map._contextLost.$1", + "type": "Any", "tags": [], - "label": "p", + "label": "event", "description": [], "signature": [ - "maplibregl.Point" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -4940,42 +5329,28 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.angleWithSep", + "id": "def-server.Map._contextRestored", "type": "Function", "tags": [], - "label": "angleWithSep", + "label": "_contextRestored", "description": [], "signature": [ - "(x: number, y: number) => number" + "(event: any) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.angleWithSep.$1", - "type": "number", - "tags": [], - "label": "x", - "description": [], - "signature": [ - "number" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.angleWithSep.$2", - "type": "number", + "id": "def-server.Map._contextRestored.$1", + "type": "Any", "tags": [], - "label": "y", + "label": "event", "description": [], "signature": [ - "number" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -4984,235 +5359,151 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.convert", + "id": "def-server.Map._onMapScroll", "type": "Function", "tags": [], - "label": "convert", + "label": "_onMapScroll", "description": [], "signature": [ - "(a: maplibregl.PointLike) => maplibregl.Point" + "(event: any) => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Point.convert.$1", - "type": "CompoundType", + "id": "def-server.Map._onMapScroll.$1", + "type": "Any", "tags": [], - "label": "a", + "label": "event", "description": [], "signature": [ - "maplibregl.PointLike" + "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [], - "interfaces": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface", - "type": "Interface", - "tags": [], - "label": "CustomLayerInterface", - "description": [], - "signature": [ - "maplibregl.CustomLayerInterface" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "A unique layer id." - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"custom\"" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.renderingMode", - "type": "CompoundType", - "tags": [], - "label": "renderingMode", - "description": [], - "signature": [ - "\"2d\" | \"3d\" | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.onRemove", + "id": "def-server.Map.loaded", "type": "Function", "tags": [], - "label": "onRemove", + "label": "loaded", "description": [ - "\nOptional method called when the layer has been removed from the Map with Map#removeLayer.\nThis gives the layer a chance to clean up gl resources and event listeners." + "\nReturns a Boolean indicating whether the map is fully loaded.\n\nReturns `false` if the style is not yet fully loaded,\nor if there has been a change to the sources or style that\nhas not yet fully loaded.\n" ], "signature": [ - "((map: maplibregl.Map, gl: WebGLRenderingContext) => void) | undefined" + "() => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.onRemove.$1", - "type": "Object", - "tags": [], - "label": "map", - "description": [ - "The Map this custom layer was just added to." - ], - "signature": [ - "maplibregl.Map" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.onRemove.$2", - "type": "Object", - "tags": [], - "label": "gl", - "description": [ - "The gl context for the map." - ], - "signature": [ - "WebGLRenderingContext" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "children": [], + "returnComment": [ + "A Boolean indicating whether the map is fully loaded." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.onAdd", + "id": "def-server.Map._update", "type": "Function", - "tags": [], - "label": "onAdd", + "tags": [ + "private" + ], + "label": "_update", "description": [ - "\nOptional method called when the layer has been added to the Map with Map#addLayer.\nThis gives the layer a chance to initialize gl resources and register event listeners." + "\nUpdate this map's style and sources, and re-render the map.\n" ], "signature": [ - "((map: maplibregl.Map, gl: WebGLRenderingContext) => void) | undefined" + "(updateStyle?: boolean | undefined) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.onAdd.$1", - "type": "Object", - "tags": [], - "label": "map", - "description": [ - "The Map this custom layer was just added to." - ], - "signature": [ - "maplibregl.Map" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.onAdd.$2", - "type": "Object", + "id": "def-server.Map._update.$1", + "type": "CompoundType", "tags": [], - "label": "gl", + "label": "updateStyle", "description": [ - "The gl context for the map." + "mark the map's style for reprocessing as\nwell as its sources" ], "signature": [ - "WebGLRenderingContext" + "boolean | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "this" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.prerender", + "id": "def-server.Map._requestRenderFrame", "type": "Function", - "tags": [], - "label": "prerender", + "tags": [ + "private" + ], + "label": "_requestRenderFrame", "description": [ - "\nOptional method called during a render frame to allow a layer to prepare resources\nor render into a texture.\n\nThe layer cannot make any assumptions about the current GL state and must bind a framebuffer\nbefore rendering." + "\nRequest that the given callback be executed during the next render\nframe. Schedule a render frame if one is not already scheduled." ], "signature": [ - "((gl: WebGLRenderingContext, matrix: number[]) => void) | undefined" + "(callback: () => void) => number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.prerender.$1", - "type": "Object", + "id": "def-server.Map._requestRenderFrame.$1", + "type": "Function", "tags": [], - "label": "gl", - "description": [ - "The map's gl context." - ], + "label": "callback", + "description": [], "signature": [ - "WebGLRenderingContext" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true - }, + } + ], + "returnComment": [ + "An id that can be used to cancel the callback" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._cancelRenderFrame", + "type": "Function", + "tags": [], + "label": "_cancelRenderFrame", + "description": [], + "signature": [ + "(id: number) => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.prerender.$2", - "type": "Array", + "id": "def-server.Map._cancelRenderFrame.$1", + "type": "number", "tags": [], - "label": "matrix", - "description": [ - "The map's camera matrix. It projects spherical mercator coordinates to gl\ncoordinates. The mercator coordinate [0, 0] represents the top left corner of\nthe mercator world and [1, 1] represents the bottom right corner. When the\nrenderingMode is \"3d\" , the z coordinate is conformal. A box with identical\nx, y, and z lengths in mercator units would be rendered as a cube.\nMercatorCoordinate .fromLatLng can be used to project a LngLat to a mercator\ncoordinate." - ], + "label": "id", + "description": [], "signature": [ - "number[]" + "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -5221,283 +5512,307 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.render", + "id": "def-server.Map._render", "type": "Function", - "tags": [], - "label": "render", + "tags": [ + "private" + ], + "label": "_render", "description": [ - "\nCalled during a render frame allowing the layer to draw into the GL context.\n\nThe layer can assume blending and depth state is set to allow the layer to properly blend\nand clip other layers. The layer cannot make any other assumptions about the current GL state.\n\nIf the layer needs to render to a texture, it should implement the prerender method to do this\nand only use the render method for drawing directly into the main framebuffer.\n\nThe blend function is set to gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA). This expects\ncolors to be provided in premultiplied alpha form where the r, g and b values are already\nmultiplied by the a value. If you are unable to provide colors in premultiplied form you may\nwant to change the blend function to\ngl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA).\n" + "\nCall when a (re-)render of the map is required:\n- The style has changed (`setPaintProperty()`, etc.)\n- Source data has changed (e.g. tiles have finished loading)\n- The map has is moving (or just finished moving)\n- A transition is in progress\n" ], "signature": [ - "(gl: WebGLRenderingContext, matrix: number[]) => void" + "(paintStartTimeStamp: number) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.render.$1", - "type": "Object", + "id": "def-server.Map._render.$1", + "type": "number", "tags": [], - "label": "gl", + "label": "paintStartTimeStamp", "description": [ - "The map's gl context." + "The time when the animation frame began executing." ], "signature": [ - "WebGLRenderingContext" + "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true - }, + } + ], + "returnComment": [ + "this" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.redraw", + "type": "Function", + "tags": [], + "label": "redraw", + "description": [ + "\nForce a synchronous redraw of the map." + ], + "signature": [ + "() => maplibregl.Map" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "`this`" + ] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.remove", + "type": "Function", + "tags": [], + "label": "remove", + "description": [ + "\nClean up and release all internal resources associated with this map.\n\nThis includes DOM elements, event bindings, web workers, and WebGL resources.\n\nUse this method when you are done using the map and wish to ensure that it no\nlonger consumes browser resources. Afterwards, you must not call any other\nmethods on the map." + ], + "signature": [ + "() => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.triggerRepaint", + "type": "Function", + "tags": [ + "see", + "see" + ], + "label": "triggerRepaint", + "description": [ + "\nTrigger the rendering of a single frame. Use this method with custom layers to\nrepaint the map when the layer changes. Calling this multiple times before the\nnext frame is rendered will still result in only a single frame being rendered." + ], + "signature": [ + "() => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._onWindowOnline", + "type": "Function", + "tags": [], + "label": "_onWindowOnline", + "description": [], + "signature": [ + "() => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map._onWindowResize", + "type": "Function", + "tags": [], + "label": "_onWindowResize", + "description": [], + "signature": [ + "(event: maplibregl.Event) => void" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.CustomLayerInterface.render.$2", - "type": "Array", + "id": "def-server.Map._onWindowResize.$1", + "type": "Object", "tags": [], - "label": "matrix", - "description": [ - "The map's camera matrix. It projects spherical mercator coordinates to gl\ncoordinates. The mercator coordinate [0, 0] represents the top left corner of\nthe mercator world and [1, 1] represents the bottom right corner. When the\nrenderingMode is \"3d\" , the z coordinate is conformal. A box with identical\nx, y, and z lengths in mercator units would be rendered as a cube.\nMercatorCoordinate .fromLatLng can be used to project a LngLat to a mercator\ncoordinate." - ], + "label": "event", + "description": [], "signature": [ - "number[]" + "maplibregl.Event" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } ], "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.FeatureIdentifier", - "type": "Interface", - "tags": [], - "label": "FeatureIdentifier", - "description": [], - "signature": [ - "maplibregl.FeatureIdentifier" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.FeatureIdentifier.id", - "type": "CompoundType", + "id": "def-server.Map.showTileBoundaries", + "type": "boolean", + "tags": [ + "name", + "type", + "instance", + "memberof" + ], + "label": "showTileBoundaries", + "description": [ + "\nGets and sets a Boolean indicating whether the map will render an outline\naround each tile and the tile ID. These tile boundaries are useful for\ndebugging.\n\nThe uncompressed file size of the first vector source is drawn in the top left\ncorner of each tile, next to the tile ID.\n" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.showTileBoundaries", + "type": "boolean", "tags": [], - "label": "id", + "label": "showTileBoundaries", "description": [], - "signature": [ - "string | number | undefined" + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.showPadding", + "type": "boolean", + "tags": [ + "name", + "type", + "instance", + "memberof" + ], + "label": "showPadding", + "description": [ + "\nGets and sets a Boolean indicating whether the map will visualize\nthe padding offsets.\n" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.FeatureIdentifier.source", - "type": "string", + "id": "def-server.Map.showPadding", + "type": "boolean", "tags": [], - "label": "source", + "label": "showPadding", "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.FeatureIdentifier.sourceLayer", - "type": "string", + "id": "def-server.Map.showCollisionBoxes", + "type": "boolean", + "tags": [ + "name", + "type", + "instance", + "memberof" + ], + "label": "showCollisionBoxes", + "description": [ + "\nGets and sets a Boolean indicating whether the map will render boxes\naround all symbols in the data source, revealing which symbols\nwere rendered or which were hidden due to collisions.\nThis information is useful for debugging.\n" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.showCollisionBoxes", + "type": "boolean", "tags": [], - "label": "sourceLayer", + "label": "showCollisionBoxes", "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource", - "type": "Interface", - "tags": [], - "label": "GeoJSONSource", - "description": [], - "signature": [ - "maplibregl.GeoJSONSource extends maplibregl.GeoJSONSourceRaw" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.type", - "type": "string", + "id": "def-server.Map.showOverdrawInspector", + "type": "boolean", "tags": [], - "label": "type", + "label": "showOverdrawInspector", "description": [], - "signature": [ - "\"geojson\"" + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.showOverdrawInspector", + "type": "boolean", + "tags": [], + "label": "showOverdrawInspector", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Map.repaint", + "type": "boolean", + "tags": [ + "name", + "type", + "instance", + "memberof" + ], + "label": "repaint", + "description": [ + "\nGets and sets a Boolean indicating whether the map will\ncontinuously repaint. This information is useful for analyzing performance.\n" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.setData", - "type": "Function", + "id": "def-server.Map.repaint", + "type": "boolean", "tags": [], - "label": "setData", + "label": "repaint", "description": [], - "signature": [ - "(data: String | GeoJSON.FeatureCollection | GeoJSON.Feature) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.setData.$1", - "type": "CompoundType", - "tags": [], - "label": "data", - "description": [], - "signature": [ - "String | GeoJSON.FeatureCollection | GeoJSON.Feature" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterExpansionZoom", - "type": "Function", + "id": "def-server.Map.vertices", + "type": "boolean", "tags": [], - "label": "getClusterExpansionZoom", + "label": "vertices", "description": [], - "signature": [ - "(clusterId: number, callback: (error: any, zoom: number) => void) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterExpansionZoom.$1", - "type": "number", - "tags": [], - "label": "clusterId", - "description": [], - "signature": [ - "number" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterExpansionZoom.$2", - "type": "Function", - "tags": [], - "label": "callback", - "description": [], - "signature": [ - "(error: any, zoom: number) => void" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterChildren", - "type": "Function", + "id": "def-server.Map.vertices", + "type": "boolean", "tags": [], - "label": "getClusterChildren", + "label": "vertices", "description": [], - "signature": [ - "(clusterId: number, callback: (error: any, features: GeoJSON.Feature[]) => void) => this" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterChildren.$1", - "type": "number", - "tags": [], - "label": "clusterId", - "description": [], - "signature": [ - "number" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterChildren.$2", - "type": "Function", - "tags": [], - "label": "callback", - "description": [], - "signature": [ - "(error: any, features: GeoJSON.Feature[]) => void" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterLeaves", + "id": "def-server.Map._setCacheLimits", "type": "Function", "tags": [], - "label": "getClusterLeaves", + "label": "_setCacheLimits", "description": [], "signature": [ - "(cluserId: number, limit: number, offset: number, callback: (error: any, features: GeoJSON.Feature[]) => void) => this" + "(limit: number, checkThreshold: number) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterLeaves.$1", - "type": "number", - "tags": [], - "label": "cluserId", - "description": [], - "signature": [ - "number" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterLeaves.$2", + "id": "def-server.Map._setCacheLimits.$1", "type": "number", "tags": [], "label": "limit", @@ -5505,35 +5820,21 @@ "signature": [ "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterLeaves.$3", + "id": "def-server.Map._setCacheLimits.$2", "type": "number", "tags": [], - "label": "offset", + "label": "checkThreshold", "description": [], "signature": [ "number" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.GeoJSONSource.getClusterLeaves.$4", - "type": "Function", - "tags": [], - "label": "callback", - "description": [], - "signature": [ - "(error: any, features: GeoJSON.Feature[]) => void" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "isRequired": true } @@ -5545,851 +5846,1102 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer", - "type": "Interface", + "id": "def-server.MapMouseEvent", + "type": "Class", "tags": [], - "label": "Layer", + "label": "MapMouseEvent", "description": [], "signature": [ - "maplibregl.Layer" + "maplibregl.MapMouseEvent extends maplibregl.Event implements maplibregl.MapLibreEvent" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.type", - "type": "string", + "id": "def-server.MapMouseEvent.type", + "type": "CompoundType", "tags": [], "label": "type", - "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.metadata", - "type": "Any", - "tags": [], - "label": "metadata", - "description": [], - "signature": [ - "any" + "description": [ + "\nThe event type (one of {@link Map.event:mousedown},\n{@link Map.event:mouseup},\n{@link Map.event:click},\n{@link Map.event:dblclick},\n{@link Map.event:mousemove},\n{@link Map.event:mouseover},\n{@link Map.event:mouseenter},\n{@link Map.event:mouseleave},\n{@link Map.event:mouseout},\n{@link Map.event:contextmenu})." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.ref", - "type": "string", - "tags": [], - "label": "ref", - "description": [], "signature": [ - "string | undefined" + "\"mousedown\" | \"mouseup\" | \"mouseover\" | \"mousemove\" | \"click\" | \"dblclick\" | \"mouseenter\" | \"mouseleave\" | \"mouseout\" | \"contextmenu\"" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.source", - "type": "CompoundType", + "id": "def-server.MapMouseEvent.target", + "type": "Object", "tags": [], - "label": "source", - "description": [], + "label": "target", + "description": [ + "\nThe `Map` object that fired the event." + ], "signature": [ - "string | maplibregl.AnySourceData | undefined" + "maplibregl.Map" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.sourcelayer", - "type": "string", + "id": "def-server.MapMouseEvent.originalEvent", + "type": "Object", "tags": [], - "label": "'source-layer'", - "description": [], + "label": "originalEvent", + "description": [ + "\nThe DOM event which caused the map event." + ], "signature": [ - "string | undefined" + "MouseEvent" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.minzoom", - "type": "number", + "id": "def-server.MapMouseEvent.point", + "type": "Object", "tags": [], - "label": "minzoom", - "description": [], + "label": "point", + "description": [ + "\nThe pixel coordinates of the mouse cursor, relative to the map and measured from the top left corner." + ], "signature": [ - "number | undefined" + "node_modules/@types/mapbox__point-geometry/index" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.maxzoom", - "type": "number", + "id": "def-server.MapMouseEvent.lngLat", + "type": "Object", "tags": [], - "label": "maxzoom", - "description": [], + "label": "lngLat", + "description": [ + "\nThe geographic location on the map of the mouse cursor." + ], "signature": [ - "number | undefined" + "maplibregl.LngLat" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.interactive", - "type": "CompoundType", + "id": "def-server.MapMouseEvent.preventDefault", + "type": "Function", "tags": [], - "label": "interactive", - "description": [], + "label": "preventDefault", + "description": [ + "\nPrevents subsequent default processing of the event by the map.\n\nCalling this method will prevent the following default map behaviors:\n\n * On `mousedown` events, the behavior of {@link DragPanHandler}\n * On `mousedown` events, the behavior of {@link DragRotateHandler}\n * On `mousedown` events, the behavior of {@link BoxZoomHandler}\n * On `dblclick` events, the behavior of {@link DoubleClickZoomHandler}\n" + ], "signature": [ - "boolean | undefined" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.filter", - "type": "Array", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "any[] | undefined" + "id": "def-server.MapMouseEvent.defaultPrevented", + "type": "boolean", + "tags": [ + "private" + ], + "label": "defaultPrevented", + "description": [ + "\n`true` if `preventDefault` has been called." ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.layout", - "type": "Object", + "id": "def-server.MapMouseEvent._defaultPrevented", + "type": "boolean", "tags": [], - "label": "layout", + "label": "_defaultPrevented", "description": [], - "signature": [ - "maplibregl.Layout | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Layer.paint", - "type": "Uncategorized", - "tags": [], - "label": "paint", + "id": "def-server.MapMouseEvent.Unnamed", + "type": "Function", + "tags": [ + "private" + ], + "label": "Constructor", "description": [], "signature": [ - "object | undefined" + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.MapMouseEvent.Unnamed.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.MapMouseEvent.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "map", + "description": [], + "signature": [ + "maplibregl.Map" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.MapMouseEvent.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "originalEvent", + "description": [], + "signature": [ + "MouseEvent" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.MapMouseEvent.Unnamed.$4", + "type": "Any", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "returnComment": [] } ], "initialIsOpen": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions", - "type": "Interface", + "id": "def-server.VectorTileSource", + "type": "Class", "tags": [], - "label": "MapboxOptions", + "label": "VectorTileSource", "description": [], "signature": [ - "maplibregl.MapboxOptions" + "maplibregl.VectorTileSource extends maplibregl.Evented implements maplibregl.Source" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.antialias", - "type": "CompoundType", + "id": "def-server.VectorTileSource.type", + "type": "string", "tags": [], - "label": "antialias", - "description": [ - "\nIf true, the gl context will be created with MSA antialiasing, which can be useful for antialiasing custom layers.\nThis is false by default as a performance optimization." - ], + "label": "type", + "description": [], "signature": [ - "boolean | undefined" + "\"vector\"" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.attributionControl", - "type": "CompoundType", + "id": "def-server.VectorTileSource.id", + "type": "string", "tags": [], - "label": "attributionControl", - "description": [ - "If true, an attribution control will be added to the map." - ], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "id", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.bearing", + "id": "def-server.VectorTileSource.minzoom", "type": "number", "tags": [], - "label": "bearing", + "label": "minzoom", "description": [], - "signature": [ - "number | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.bearingSnap", + "id": "def-server.VectorTileSource.maxzoom", "type": "number", "tags": [], - "label": "bearingSnap", - "description": [ - "Snap to north threshold in degrees." - ], - "signature": [ - "number | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.bounds", - "type": "CompoundType", - "tags": [], - "label": "bounds", - "description": [ - "The initial bounds of the map. If bounds is specified, it overrides center and zoom constructor options." - ], - "signature": [ - "maplibregl.LngLatBoundsLike | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "maxzoom", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.boxZoom", - "type": "CompoundType", + "id": "def-server.VectorTileSource.url", + "type": "string", "tags": [], - "label": "boxZoom", - "description": [ - "If true, enable the \"box zoom\" interaction (see BoxZoomHandler)" - ], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "url", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.center", - "type": "CompoundType", + "id": "def-server.VectorTileSource.scheme", + "type": "string", "tags": [], - "label": "center", - "description": [ - "initial map center" - ], - "signature": [ - "maplibregl.LngLatLike | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "scheme", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.clickTolerance", + "id": "def-server.VectorTileSource.tileSize", "type": "number", - "tags": [ - "default" - ], - "label": "clickTolerance", - "description": [ - "\nThe max number of pixels a user can shift the mouse pointer during a click for it to be\nconsidered a valid click (as opposed to a mouse drag).\n" - ], - "signature": [ - "number | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.collectResourceTiming", - "type": "CompoundType", - "tags": [ - "default" - ], - "label": "collectResourceTiming", - "description": [ - "\nIf `true`, Resource Timing API information will be collected for requests made by GeoJSON\nand Vector Tile web workers (this information is normally inaccessible from the main\nJavascript thread). Information will be returned in a `resourceTiming` property of\nrelevant `data` events.\n" - ], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "tags": [], + "label": "tileSize", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.crossSourceCollisions", + "id": "def-server.VectorTileSource.promoteId", "type": "CompoundType", - "tags": [ - "default" - ], - "label": "crossSourceCollisions", - "description": [ - "\nIf `true`, symbols from multiple sources can collide with each other during collision\ndetection. If `false`, collision detection is run separately for the symbols in each source.\n" - ], + "tags": [], + "label": "promoteId", + "description": [], "signature": [ - "boolean | undefined" + "string | { [_: string]: string; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.container", - "type": "CompoundType", + "id": "def-server.VectorTileSource._options", + "type": "Object", "tags": [], - "label": "container", - "description": [ - "ID of the container element" - ], + "label": "_options", + "description": [], "signature": [ - "string | HTMLElement" + "{ type: \"vector\"; url?: string | undefined; tiles?: string[] | undefined; bounds?: [number, number, number, number] | undefined; scheme?: \"xyz\" | \"tms\" | undefined; minzoom?: number | undefined; maxzoom?: number | undefined; attribution?: string | undefined; promoteId?: maplibregl.PromoteIdSpecification | undefined; volatile?: boolean | undefined; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.customAttribution", - "type": "CompoundType", + "id": "def-server.VectorTileSource._collectResourceTiming", + "type": "boolean", "tags": [], - "label": "customAttribution", - "description": [ - "String or strings to show in an AttributionControl.\nOnly applicable if options.attributionControl is `true`." - ], - "signature": [ - "string | string[] | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "_collectResourceTiming", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.dragPan", - "type": "CompoundType", + "id": "def-server.VectorTileSource.dispatcher", + "type": "Object", "tags": [], - "label": "dragPan", - "description": [ - "If true, enable the \"drag to pan\" interaction (see DragPanHandler)." - ], + "label": "dispatcher", + "description": [], "signature": [ - "boolean | undefined" + "maplibregl.Dispatcher" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.dragRotate", - "type": "CompoundType", + "id": "def-server.VectorTileSource.map", + "type": "Object", "tags": [], - "label": "dragRotate", - "description": [ - "If true, enable the \"drag to rotate\" interaction (see DragRotateHandler)." - ], + "label": "map", + "description": [], "signature": [ - "boolean | undefined" + "maplibregl.Map" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.doubleClickZoom", - "type": "CompoundType", + "id": "def-server.VectorTileSource.bounds", + "type": "Object", "tags": [], - "label": "doubleClickZoom", - "description": [ - "If true, enable the \"double click to zoom\" interaction (see DoubleClickZoomHandler)." - ], + "label": "bounds", + "description": [], "signature": [ - "boolean | undefined" + "[number, number, number, number]" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.hash", - "type": "CompoundType", + "id": "def-server.VectorTileSource.tiles", + "type": "Array", "tags": [], - "label": "hash", - "description": [ - "If `true`, the map's position (zoom, center latitude, center longitude, bearing, and pitch) will be synced with the hash fragment of the page's URL.\nFor example, `http://path/to/my/page.html#2.59/39.26/53.07/-24.1/60`.\nAn additional string may optionally be provided to indicate a parameter-styled hash,\ne.g. http://path/to/my/page.html#map=2.59/39.26/53.07/-24.1/60&foo=bar, where foo\nis a custom parameter and bar is an arbitrary hash distinct from the map hash." - ], + "label": "tiles", + "description": [], "signature": [ - "string | boolean | undefined" + "string[]" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.fadeDuration", - "type": "number", - "tags": [ - "default" - ], - "label": "fadeDuration", - "description": [ - "\nControls the duration of the fade-in/fade-out animation for label collisions, in milliseconds.\nThis setting affects all symbol layers. This setting does not affect the duration of runtime\nstyling transitions or raster tile cross-fading.\n" - ], + "id": "def-server.VectorTileSource.tileBounds", + "type": "Object", + "tags": [], + "label": "tileBounds", + "description": [], "signature": [ - "number | undefined" + "maplibregl.TileBounds" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.failIfMajorPerformanceCaveat", - "type": "CompoundType", + "id": "def-server.VectorTileSource.reparseOverscaled", + "type": "boolean", "tags": [], - "label": "failIfMajorPerformanceCaveat", - "description": [ - "If true, map creation will fail if the implementation determines that the performance of the created WebGL context would be dramatically lower than expected." - ], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "reparseOverscaled", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.fitBoundsOptions", - "type": "Object", + "id": "def-server.VectorTileSource.isTileClipped", + "type": "boolean", "tags": [], - "label": "fitBoundsOptions", - "description": [ - "A fitBounds options object to use only when setting the bounds option." - ], - "signature": [ - "maplibregl.FitBoundsOptions | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "isTileClipped", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.interactive", - "type": "CompoundType", + "id": "def-server.VectorTileSource._tileJSONRequest", + "type": "Object", "tags": [], - "label": "interactive", - "description": [ - "If false, no mouse, touch, or keyboard listeners are attached to the map, so it will not respond to input" - ], + "label": "_tileJSONRequest", + "description": [], "signature": [ - "boolean | undefined" + "{ cancel: () => void; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.keyboard", - "type": "CompoundType", + "id": "def-server.VectorTileSource._loaded", + "type": "boolean", "tags": [], - "label": "keyboard", - "description": [ - "If true, enable keyboard shortcuts (see KeyboardHandler)." - ], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "_loaded", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.locale", - "type": "Object", + "id": "def-server.VectorTileSource.Unnamed", + "type": "Function", "tags": [], - "label": "locale", - "description": [ - "A patch to apply to the default localization table for UI strings, e.g. control tooltips.\nThe `locale` object maps namespaced UI string IDs to translated strings in the target language;\nsee `src/ui/default_locale.js` for an example with all supported string IDs.\nThe object may specify all UI strings (thereby adding support for a new translation) or\nonly a subset of strings (thereby patching the default translation table)." - ], + "label": "Constructor", + "description": [], "signature": [ - "{ [key: string]: string; } | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.localIdeographFontFamily", - "type": "string", - "tags": [ - "default" - ], - "label": "localIdeographFontFamily", - "description": [ - "\nIf specified, defines a CSS font-family for locally overriding generation of glyphs in the\n'CJK Unified Ideographs' and 'Hangul Syllables' ranges. In these ranges, font settings from\nthe map's style will be ignored, except for font-weight keywords (light/regular/medium/bold).\nThe purpose of this option is to avoid bandwidth-intensive glyph server requests.\n" + "any" ], - "signature": [ - "string | undefined" + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.Unnamed.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.Unnamed.$2", + "type": "CompoundType", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "maplibregl.VectorSourceSpecification & { collectResourceTiming: boolean; }" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "dispatcher", + "description": [], + "signature": [ + "maplibregl.Dispatcher" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.Unnamed.$4", + "type": "Object", + "tags": [], + "label": "eventedParent", + "description": [], + "signature": [ + "maplibregl.Evented" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.logoPosition", - "type": "CompoundType", - "tags": [ - "default" - ], - "label": "logoPosition", - "description": [ - "\nA string representing the position of the Mapbox wordmark on the map.\n" - ], + "id": "def-server.VectorTileSource.load", + "type": "Function", + "tags": [], + "label": "load", + "description": [], "signature": [ - "\"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\" | undefined" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.maxBounds", - "type": "CompoundType", + "id": "def-server.VectorTileSource.loaded", + "type": "Function", "tags": [], - "label": "maxBounds", - "description": [ - "If set, the map is constrained to the given bounds." - ], + "label": "loaded", + "description": [], "signature": [ - "maplibregl.LngLatBoundsLike | undefined" + "() => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.maxPitch", - "type": "number", + "id": "def-server.VectorTileSource.hasTile", + "type": "Function", "tags": [], - "label": "maxPitch", - "description": [ - "Maximum pitch of the map." - ], + "label": "hasTile", + "description": [], "signature": [ - "number | undefined" + "(tileID: maplibregl.OverscaledTileID) => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.hasTile.$1", + "type": "Object", + "tags": [], + "label": "tileID", + "description": [], + "signature": [ + "maplibregl.OverscaledTileID" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.maxZoom", - "type": "number", + "id": "def-server.VectorTileSource.onAdd", + "type": "Function", "tags": [], - "label": "maxZoom", - "description": [ - "Maximum zoom of the map." - ], + "label": "onAdd", + "description": [], "signature": [ - "number | undefined" + "(map: maplibregl.Map) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.onAdd.$1", + "type": "Object", + "tags": [], + "label": "map", + "description": [], + "signature": [ + "maplibregl.Map" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.minPitch", - "type": "number", + "id": "def-server.VectorTileSource.setSourceProperty", + "type": "Function", "tags": [], - "label": "minPitch", - "description": [ - "Minimum pitch of the map." - ], + "label": "setSourceProperty", + "description": [], "signature": [ - "number | undefined" + "(callback: Function) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.setSourceProperty.$1", + "type": "Object", + "tags": [], + "label": "callback", + "description": [], + "signature": [ + "Function" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.minZoom", - "type": "number", + "id": "def-server.VectorTileSource.setTiles", + "type": "Function", "tags": [], - "label": "minZoom", + "label": "setTiles", "description": [ - "Minimum zoom of the map." + "\nSets the source `tiles` property and re-renders the map.\n" ], "signature": [ - "number | undefined" + "(tiles: string[]) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.setTiles.$1", + "type": "Array", + "tags": [], + "label": "tiles", + "description": [ + "An array of one or more tile source URLs, as in the TileJSON spec." + ], + "signature": [ + "string[]" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "this" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.preserveDrawingBuffer", - "type": "CompoundType", + "id": "def-server.VectorTileSource.setUrl", + "type": "Function", "tags": [], - "label": "preserveDrawingBuffer", + "label": "setUrl", "description": [ - "If true, The maps canvas can be exported to a PNG using map.getCanvas().toDataURL();. This is false by default as a performance optimization." + "\nSets the source `url` property and re-renders the map.\n" ], "signature": [ - "boolean | undefined" + "(url: string) => this" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.setUrl.$1", + "type": "string", + "tags": [], + "label": "url", + "description": [ + "A URL to a TileJSON resource. Supported protocols are `http:` and `https:`." + ], + "signature": [ + "string" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "this" + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.pitch", - "type": "number", - "tags": [ - "default" - ], - "label": "pitch", - "description": [ - "\nThe initial pitch (tilt) of the map, measured in degrees away from the plane of the\nscreen (0-60).\n" - ], + "id": "def-server.VectorTileSource.onRemove", + "type": "Function", + "tags": [], + "label": "onRemove", + "description": [], "signature": [ - "number | undefined" + "() => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.pitchWithRotate", - "type": "CompoundType", - "tags": [ - "default" - ], - "label": "pitchWithRotate", - "description": [ - "\nIf `false`, the map's pitch (tilt) control with \"drag to rotate\" interaction will be disabled.\n" - ], + "id": "def-server.VectorTileSource.serialize", + "type": "Function", + "tags": [], + "label": "serialize", + "description": [], "signature": [ - "boolean | undefined" + "() => any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.refreshExpiredTiles", - "type": "CompoundType", - "tags": [ - "default" - ], - "label": "refreshExpiredTiles", - "description": [ - "\nIf `false`, the map won't attempt to re-request tiles once they expire per their HTTP\n`cacheControl`/`expires` headers.\n" - ], + "id": "def-server.VectorTileSource.loadTile", + "type": "Function", + "tags": [], + "label": "loadTile", + "description": [], "signature": [ - "boolean | undefined" + "(tile: maplibregl.Tile, callback: maplibregl.Callback) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.loadTile.$1", + "type": "Object", + "tags": [], + "label": "tile", + "description": [], + "signature": [ + "maplibregl.Tile" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.loadTile.$2", + "type": "Function", + "tags": [], + "label": "callback", + "description": [], + "signature": [ + "maplibregl.Callback" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.renderWorldCopies", - "type": "CompoundType", - "tags": [ - "default" + "id": "def-server.VectorTileSource.abortTile", + "type": "Function", + "tags": [], + "label": "abortTile", + "description": [], + "signature": [ + "(tile: maplibregl.Tile) => void" ], - "label": "renderWorldCopies", - "description": [ - "\nIf `true`, multiple copies of the world will be rendered, when zoomed out.\n" + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.abortTile.$1", + "type": "Object", + "tags": [], + "label": "tile", + "description": [], + "signature": [ + "maplibregl.Tile" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.unloadTile", + "type": "Function", + "tags": [], + "label": "unloadTile", + "description": [], "signature": [ - "boolean | undefined" + "(tile: maplibregl.Tile) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.VectorTileSource.unloadTile.$1", + "type": "Object", + "tags": [], + "label": "tile", + "description": [], + "signature": [ + "maplibregl.Tile" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.scrollZoom", - "type": "CompoundType", + "id": "def-server.VectorTileSource.hasTransition", + "type": "Function", "tags": [], - "label": "scrollZoom", - "description": [ - "If true, enable the \"scroll to zoom\" interaction" - ], + "label": "hasTransition", + "description": [], "signature": [ - "boolean | undefined" + "() => boolean" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.CustomLayerInterface", + "type": "Interface", + "tags": [ + "interface" + ], + "label": "CustomLayerInterface", + "description": [ + "\nInterface for custom style layers. This is a specification for\nimplementers to model: it is not an exported method or class.\n\nCustom layers allow a user to render directly into the map's GL context using the map's camera.\nThese layers can be added between any regular layers using {@link Map#addLayer}.\n\nCustom layers must have a unique `id` and must have the `type` of `\"custom\"`.\nThey must implement `render` and may implement `prerender`, `onAdd` and `onRemove`.\nThey can trigger rendering using {@link Map#triggerRepaint}\nand they should appropriately handle {@link Map.event:webglcontextlost} and\n{@link Map.event:webglcontextrestored}.\n\nThe `renderingMode` property controls whether the layer is treated as a `\"2d\"` or `\"3d\"` map layer. Use:\n- `\"renderingMode\": \"3d\"` to use the depth buffer and share it with other layers\n- `\"renderingMode\": \"2d\"` to add a layer with no depth. If you need to use the depth buffer for a `\"2d\"` layer you must use an offscreen\n framebuffer and {@link CustomLayerInterface#prerender}\n" + ], + "signature": [ + "maplibregl.CustomLayerInterface" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.CustomLayerInterface.id", + "type": "string", + "tags": [ + "property" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "label": "id", + "description": [], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.style", - "type": "CompoundType", - "tags": [], - "label": "style", - "description": [ - "stylesheet location" + "id": "def-server.CustomLayerInterface.type", + "type": "string", + "tags": [ + "property" ], + "label": "type", + "description": [], "signature": [ - "string | maplibregl.Style | undefined" + "\"custom\"" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.trackResize", + "id": "def-server.CustomLayerInterface.renderingMode", "type": "CompoundType", - "tags": [], - "label": "trackResize", - "description": [ - "If true, the map will automatically resize when the browser window resizes" + "tags": [ + "property" ], + "label": "renderingMode", + "description": [], "signature": [ - "boolean | undefined" + "\"2d\" | \"3d\" | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.transformRequest", + "id": "def-server.CustomLayerInterface.render", "type": "Function", "tags": [ - "default" - ], - "label": "transformRequest", - "description": [ - "\nA callback run before the Map makes a request for an external URL. The callback can be\nused to modify the url, set headers, or set the credentials property for cross-origin requests.\n" - ], - "signature": [ - "maplibregl.TransformRequestFunction | undefined" + "function", + "memberof", + "instance", + "name" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.touchZoomRotate", - "type": "CompoundType", - "tags": [], - "label": "touchZoomRotate", + "label": "render", "description": [ - "If true, enable the \"pinch to rotate and zoom\" interaction (see TouchZoomRotateHandler)." + "\nCalled during a render frame allowing the layer to draw into the GL context.\n\nThe layer can assume blending and depth state is set to allow the layer to properly\nblend and clip other layers. The layer cannot make any other assumptions about the\ncurrent GL state.\n\nIf the layer needs to render to a texture, it should implement the `prerender` method\nto do this and only use the `render` method for drawing directly into the main framebuffer.\n\nThe blend function is set to `gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)`. This expects\ncolors to be provided in premultiplied alpha form where the `r`, `g` and `b` values are already\nmultiplied by the `a` value. If you are unable to provide colors in premultiplied form you\nmay want to change the blend function to\n`gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA)`.\n" ], "signature": [ - "boolean | undefined" + "(gl: WebGLRenderingContext, matrix: ", + "mat4", + ") => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.CustomLayerInterface.render.$1", + "type": "Object", + "tags": [], + "label": "gl", + "description": [ + "The map's gl context." + ], + "signature": [ + "WebGLRenderingContext" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.CustomLayerInterface.render.$2", + "type": "CompoundType", + "tags": [], + "label": "matrix", + "description": [ + "The map's camera matrix. It projects spherical mercator\ncoordinates to gl coordinates. The spherical mercator coordinate `[0, 0]` represents the\ntop left corner of the mercator world and `[1, 1]` represents the bottom right corner. When\nthe `renderingMode` is `\"3d\"`, the z coordinate is conformal. A box with identical x, y, and z\nlengths in mercator units would be rendered as a cube. {@link MercatorCoordinate }.fromLngLat\ncan be used to project a `LngLat` to a mercator coordinate." + ], + "signature": [ + "Float32Array | [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number]" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false + } + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.touchPitch", - "type": "CompoundType", - "tags": [], - "label": "touchPitch", - "description": [ - "If true, the \"drag to pitch\" interaction is enabled" - ], - "signature": [ - "boolean | undefined" + "id": "def-server.CustomLayerInterface.prerender", + "type": "Function", + "tags": [ + "function", + "memberof", + "instance", + "name" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.zoom", - "type": "number", - "tags": [], - "label": "zoom", + "label": "prerender", "description": [ - "Initial zoom level" + "\nOptional method called during a render frame to allow a layer to prepare resources or render into a texture.\n\nThe layer cannot make any assumptions about the current GL state and must bind a framebuffer before rendering.\n" ], "signature": [ - "number | undefined" + "maplibregl.CustomRenderMethod | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.maxTileCacheSize", - "type": "number", + "id": "def-server.CustomLayerInterface.onAdd", + "type": "Function", "tags": [ - "default" + "function", + "memberof", + "instance", + "name" ], - "label": "maxTileCacheSize", + "label": "onAdd", "description": [ - "\nThe maximum number of tiles stored in the tile cache for a given source. If omitted, the\ncache will be dynamically sized based on the current viewport.\n" + "\nOptional method called when the layer has been added to the Map with {@link Map#addLayer}. This\ngives the layer a chance to initialize gl resources and register event listeners.\n" ], "signature": [ - "number | undefined" + "((map: maplibregl.Map, gl: WebGLRenderingContext) => void) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.CustomLayerInterface.onAdd.$1", + "type": "Object", + "tags": [], + "label": "map", + "description": [ + "The Map this custom layer was just added to." + ], + "signature": [ + "maplibregl.Map" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.CustomLayerInterface.onAdd.$2", + "type": "Object", + "tags": [], + "label": "gl", + "description": [ + "The gl context for the map." + ], + "signature": [ + "WebGLRenderingContext" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxOptions.accessToken", - "type": "string", + "id": "def-server.CustomLayerInterface.onRemove", + "type": "Function", "tags": [ - "default" + "function", + "memberof", + "instance", + "name" ], - "label": "accessToken", + "label": "onRemove", "description": [ - "\nIf specified, map will use this token instead of the one defined in maplibregl.accessToken.\n" + "\nOptional method called when the layer has been removed from the Map with {@link Map#removeLayer}. This\ngives the layer a chance to clean up gl resources and event listeners.\n" ], "signature": [ - "string | undefined" + "((map: maplibregl.Map, gl: WebGLRenderingContext) => void) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.CustomLayerInterface.onRemove.$1", + "type": "Object", + "tags": [], + "label": "map", + "description": [ + "The Map this custom layer was just added to." + ], + "signature": [ + "maplibregl.Map" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.CustomLayerInterface.onRemove.$2", + "type": "Object", + "tags": [], + "label": "gl", + "description": [ + "The gl context for the map." + ], + "signature": [ + "WebGLRenderingContext" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -6402,9 +6954,9 @@ "label": "MapSourceDataEvent", "description": [], "signature": [ - "maplibregl.MapSourceDataEvent extends maplibregl.MapboxEvent" + "maplibregl.MapSourceDataEvent extends maplibregl.MapLibreEvent" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { @@ -6417,7 +6969,7 @@ "signature": [ "\"source\"" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { @@ -6427,20 +6979,20 @@ "tags": [], "label": "isSourceLoaded", "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", "id": "def-server.MapSourceDataEvent.source", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "source", "description": [], "signature": [ - "maplibregl.Source" + "maplibregl.VectorSourceSpecification | maplibregl.RasterSourceSpecification | maplibregl.RasterDEMSourceSpecification | maplibregl.GeoJSONSourceSpecification | maplibregl.VideoSourceSpecification | maplibregl.ImageSourceSpecification" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { @@ -6450,7 +7002,7 @@ "tags": [], "label": "sourceId", "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { @@ -6463,7 +7015,7 @@ "signature": [ "\"metadata\" | \"content\"" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { @@ -6476,20 +7028,7 @@ "signature": [ "any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapSourceDataEvent.coord", - "type": "Object", - "tags": [], - "label": "coord", - "description": [], - "signature": [ - "maplibregl.Coordinate" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false } ], @@ -6497,315 +7036,471 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style", + "id": "def-server.Source", "type": "Interface", - "tags": [], - "label": "Style", - "description": [], + "tags": [ + "private", + "fires", + "property", + "property", + "property", + "property", + "property", + "property" + ], + "label": "Source", + "description": [ + "\nThe `Source` interface must be implemented by each source type, including \"core\" types (`vector`, `raster`,\n`video`, etc.) and all custom, third-party types.\n" + ], "signature": [ - "maplibregl.Style" + "maplibregl.Source" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "children": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.bearing", - "type": "number", + "id": "def-server.Source.type", + "type": "string", "tags": [], - "label": "bearing", + "label": "type", "description": [], - "signature": [ - "number | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.center", - "type": "Array", + "id": "def-server.Source.id", + "type": "string", "tags": [], - "label": "center", + "label": "id", "description": [], - "signature": [ - "number[] | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.glyphs", - "type": "string", + "id": "def-server.Source.minzoom", + "type": "number", "tags": [], - "label": "glyphs", + "label": "minzoom", "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.layers", - "type": "Array", + "id": "def-server.Source.maxzoom", + "type": "number", "tags": [], - "label": "layers", + "label": "maxzoom", "description": [], - "signature": [ - "maplibregl.AnyLayer[] | undefined" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.metadata", - "type": "Any", + "id": "def-server.Source.tileSize", + "type": "number", "tags": [], - "label": "metadata", + "label": "tileSize", "description": [], - "signature": [ - "any" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.name", + "id": "def-server.Source.attribution", "type": "string", "tags": [], - "label": "name", + "label": "attribution", "description": [], "signature": [ "string | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.pitch", - "type": "number", + "id": "def-server.Source.roundZoom", + "type": "CompoundType", "tags": [], - "label": "pitch", + "label": "roundZoom", "description": [], "signature": [ - "number | undefined" + "boolean | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.light", - "type": "Object", + "id": "def-server.Source.isTileClipped", + "type": "CompoundType", "tags": [], - "label": "light", + "label": "isTileClipped", "description": [], "signature": [ - "maplibregl.Light | undefined" + "boolean | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.sources", + "id": "def-server.Source.tileID", "type": "Object", "tags": [], - "label": "sources", + "label": "tileID", "description": [], "signature": [ - "maplibregl.Sources | undefined" + "maplibregl.CanonicalTileID | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.sprite", - "type": "string", + "id": "def-server.Source.reparseOverscaled", + "type": "CompoundType", "tags": [], - "label": "sprite", + "label": "reparseOverscaled", "description": [], "signature": [ - "string | undefined" + "boolean | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.transition", - "type": "Object", + "id": "def-server.Source.vectorLayerIds", + "type": "Array", "tags": [], - "label": "transition", + "label": "vectorLayerIds", "description": [], "signature": [ - "maplibregl.Transition | undefined" + "string[] | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.version", - "type": "number", + "id": "def-server.Source.hasTransition", + "type": "Function", "tags": [], - "label": "version", + "label": "hasTransition", "description": [], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "signature": [ + "() => boolean" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.Style.zoom", - "type": "number", + "id": "def-server.Source.loaded", + "type": "Function", "tags": [], - "label": "zoom", + "label": "loaded", "description": [], "signature": [ - "number | undefined" + "() => boolean" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource", - "type": "Interface", - "tags": [], - "label": "VectorSource", - "description": [], - "signature": [ - "maplibregl.VectorSource extends maplibregl.Source" - ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false, - "children": [ + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.type", - "type": "string", + "id": "def-server.Source.fire", + "type": "Function", "tags": [], - "label": "type", + "label": "fire", "description": [], "signature": [ - "\"vector\"" + "(event: maplibregl.Event) => unknown" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.fire.$1", + "type": "Object", + "tags": [], + "label": "event", + "description": [], + "signature": [ + "maplibregl.Event" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.url", - "type": "string", + "id": "def-server.Source.onAdd", + "type": "Function", "tags": [], - "label": "url", + "label": "onAdd", "description": [], "signature": [ - "string | undefined" + "((map: maplibregl.Map) => void) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.onAdd.$1", + "type": "Object", + "tags": [], + "label": "map", + "description": [], + "signature": [ + "maplibregl.Map" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.tiles", - "type": "Array", + "id": "def-server.Source.onRemove", + "type": "Function", "tags": [], - "label": "tiles", + "label": "onRemove", "description": [], "signature": [ - "string[] | undefined" + "((map: maplibregl.Map) => void) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.onRemove.$1", + "type": "Object", + "tags": [], + "label": "map", + "description": [], + "signature": [ + "maplibregl.Map" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.bounds", - "type": "Array", + "id": "def-server.Source.loadTile", + "type": "Function", "tags": [], - "label": "bounds", + "label": "loadTile", "description": [], "signature": [ - "number[] | undefined" + "(tile: maplibregl.Tile, callback: maplibregl.Callback) => void" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.loadTile.$1", + "type": "Object", + "tags": [], + "label": "tile", + "description": [], + "signature": [ + "maplibregl.Tile" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.loadTile.$2", + "type": "Function", + "tags": [], + "label": "callback", + "description": [], + "signature": [ + "maplibregl.Callback" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.scheme", - "type": "CompoundType", + "id": "def-server.Source.hasTile", + "type": "Function", "tags": [], - "label": "scheme", + "label": "hasTile", "description": [], "signature": [ - "\"xyz\" | \"tms\" | undefined" + "((tileID: maplibregl.OverscaledTileID) => boolean) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.hasTile.$1", + "type": "Object", + "tags": [], + "label": "tileID", + "description": [], + "signature": [ + "maplibregl.OverscaledTileID" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.minzoom", - "type": "number", + "id": "def-server.Source.abortTile", + "type": "Function", "tags": [], - "label": "minzoom", + "label": "abortTile", "description": [], "signature": [ - "number | undefined" + "((tile: maplibregl.Tile, callback: maplibregl.Callback) => void) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.abortTile.$1", + "type": "Object", + "tags": [], + "label": "tile", + "description": [], + "signature": [ + "maplibregl.Tile" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.abortTile.$2", + "type": "Function", + "tags": [], + "label": "callback", + "description": [], + "signature": [ + "maplibregl.Callback" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.maxzoom", - "type": "number", + "id": "def-server.Source.unloadTile", + "type": "Function", "tags": [], - "label": "maxzoom", + "label": "unloadTile", "description": [], "signature": [ - "number | undefined" + "((tile: maplibregl.Tile, callback: maplibregl.Callback) => void) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.unloadTile.$1", + "type": "Object", + "tags": [], + "label": "tile", + "description": [], + "signature": [ + "maplibregl.Tile" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Source.unloadTile.$2", + "type": "Function", + "tags": [], + "label": "callback", + "description": [], + "signature": [ + "maplibregl.Callback" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.attribution", - "type": "string", - "tags": [], - "label": "attribution", + "id": "def-server.Source.serialize", + "type": "Function", + "tags": [ + "private" + ], + "label": "serialize", "description": [], "signature": [ - "string | undefined" + "() => any" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "A plain (stringifiable) JS object representing the current state of the source.\nCreating a source using the returned object as the `options` should result in a Source that is\nequivalent to this one." + ] }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.VectorSource.promoteId", - "type": "CompoundType", + "id": "def-server.Source.prepare", + "type": "Function", "tags": [], - "label": "promoteId", + "label": "prepare", "description": [], "signature": [ - "maplibregl.PromoteIdSpecification | undefined" + "(() => void) | undefined" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", - "deprecated": false + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -6815,38 +7510,80 @@ "misc": [ { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.AnyLayer", + "id": "def-server.FeatureIdentifier", + "type": "Type", + "tags": [], + "label": "FeatureIdentifier", + "description": [], + "signature": [ + "{ id?: string | number | undefined; source: string; sourceLayer?: string | undefined; }" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.FilterSpecification", + "type": "Type", + "tags": [], + "label": "FilterSpecification", + "description": [], + "signature": [ + "[\"at\", number, (string | number)[]] | [\"get\", string, (Record | undefined)?] | [\"has\", string, (Record | undefined)?] | [\"in\", ...maplibregl.FilterSpecificationInputType[], maplibregl.FilterSpecificationInputType | maplibregl.FilterSpecificationInputType[]] | [\"index-of\", maplibregl.FilterSpecificationInputType, maplibregl.FilterSpecificationInputType | maplibregl.FilterSpecificationInputType[]] | [\"length\", string | string[]] | [\"slice\", string | string[], number] | [\"!\", maplibregl.FilterSpecification] | [\"!=\", string | maplibregl.FilterSpecification, maplibregl.FilterSpecificationInputType] | [\"<\", string | maplibregl.FilterSpecification, maplibregl.FilterSpecificationInputType] | [\"<=\", string | maplibregl.FilterSpecification, maplibregl.FilterSpecificationInputType] | [\"==\", string | maplibregl.FilterSpecification, maplibregl.FilterSpecificationInputType] | [\">\", string | maplibregl.FilterSpecification, maplibregl.FilterSpecificationInputType] | [\">=\", string | maplibregl.FilterSpecification, maplibregl.FilterSpecificationInputType] | [\"all\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | [\"any\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | [\"case\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | [\"coalesce\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | [\"match\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | [\"within\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | [\"!in\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | [\"!has\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | [\"none\", ...maplibregl.FilterSpecification[], maplibregl.FilterSpecificationInputType] | (string | maplibregl.FilterSpecification)[]" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.LayerSpecification", + "type": "Type", + "tags": [], + "label": "LayerSpecification", + "description": [], + "signature": [ + "maplibregl.FillLayerSpecification | maplibregl.LineLayerSpecification | maplibregl.SymbolLayerSpecification | maplibregl.CircleLayerSpecification | maplibregl.HeatmapLayerSpecification | maplibregl.FillExtrusionLayerSpecification | maplibregl.RasterLayerSpecification | maplibregl.HillshadeLayerSpecification | maplibregl.BackgroundLayerSpecification" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.MapEvent", "type": "Type", "tags": [], - "label": "AnyLayer", + "label": "MapEvent", "description": [], "signature": [ - "maplibregl.BackgroundLayer | maplibregl.CircleLayer | maplibregl.FillExtrusionLayer | maplibregl.FillLayer | maplibregl.HeatmapLayer | maplibregl.HillshadeLayer | maplibregl.LineLayer | maplibregl.RasterLayer | maplibregl.SymbolLayer | maplibregl.CustomLayerInterface" + "\"remove\" | \"error\" | \"data\" | \"render\" | \"move\" | \"rotate\" | \"idle\" | \"resize\" | \"zoom\" | \"mousedown\" | \"mouseup\" | \"mouseover\" | \"mousemove\" | \"click\" | \"dblclick\" | \"mouseenter\" | \"mouseleave\" | \"mouseout\" | \"contextmenu\" | \"wheel\" | \"touchstart\" | \"touchend\" | \"touchmove\" | \"touchcancel\" | \"movestart\" | \"moveend\" | \"dragstart\" | \"drag\" | \"dragend\" | \"zoomstart\" | \"zoomend\" | \"rotatestart\" | \"rotateend\" | \"pitchstart\" | \"pitch\" | \"pitchend\" | \"boxzoomstart\" | \"boxzoomend\" | \"boxzoomcancel\" | \"webglcontextlost\" | \"webglcontextrestored\" | \"load\" | \"styledata\" | \"sourcedata\" | \"dataloading\" | \"styledataloading\" | \"sourcedataloading\" | \"styleimagemissing\" | \"style.load\" | \"dataabort\" | \"sourcedataabort\"" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.MapboxGeoJSONFeature", + "id": "def-server.MapGeoJSONFeature", "type": "Type", "tags": [], - "label": "MapboxGeoJSONFeature", + "label": "MapGeoJSONFeature", "description": [], "signature": [ - "GeoJSON.Feature & { layer: maplibregl.Layer; source: string; sourceLayer: string; state: { [key: string]: any; }; }" + "maplibregl.GeoJSONFeature & { layer: Omit & { source: string; }; source: string; sourceLayer?: string | undefined; state: { [key: string]: any; }; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.mapboxgl", + "id": "def-server.maplibregl", "type": "Any", "tags": [], - "label": "mapboxgl", + "label": "maplibregl", "description": [], "signature": [ "any" @@ -6857,15 +7594,62 @@ }, { "parentPluginId": "@kbn/mapbox-gl", - "id": "def-server.PointLike", + "id": "def-server.MapOptions", "type": "Type", "tags": [], + "label": "MapOptions", + "description": [], + "signature": [ + "{ hash?: string | boolean | undefined; interactive?: boolean | undefined; container: string | HTMLElement; bearingSnap?: number | undefined; attributionControl?: boolean | undefined; customAttribution?: string | string[] | undefined; maplibreLogo?: boolean | undefined; logoPosition?: maplibregl.ControlPosition | undefined; failIfMajorPerformanceCaveat?: boolean | undefined; preserveDrawingBuffer?: boolean | undefined; antialias?: boolean | undefined; refreshExpiredTiles?: boolean | undefined; maxBounds?: maplibregl.LngLatBoundsLike | undefined; scrollZoom?: boolean | undefined; minZoom?: number | null | undefined; maxZoom?: number | null | undefined; minPitch?: number | null | undefined; maxPitch?: number | null | undefined; boxZoom?: boolean | undefined; dragRotate?: boolean | undefined; dragPan?: boolean | maplibregl.DragPanOptions | undefined; keyboard?: boolean | undefined; doubleClickZoom?: boolean | undefined; touchZoomRotate?: boolean | undefined; touchPitch?: boolean | undefined; trackResize?: boolean | undefined; center?: maplibregl.LngLatLike | undefined; zoom?: number | undefined; bearing?: number | undefined; pitch?: number | undefined; renderWorldCopies?: boolean | undefined; maxTileCacheSize?: number | undefined; transformRequest?: maplibregl.RequestTransformFunction | undefined; locale?: any; fadeDuration?: number | undefined; crossSourceCollisions?: boolean | undefined; collectResourceTiming?: boolean | undefined; clickTolerance?: number | undefined; bounds?: maplibregl.LngLatBoundsLike | undefined; fitBoundsOptions?: Object | undefined; localIdeographFontFamily?: string | undefined; style: string | maplibregl.StyleSpecification; pitchWithRotate?: boolean | undefined; pixelRatio?: number | undefined; }" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.Point2D", + "type": "Type", + "tags": [], + "label": "Point2D", + "description": [], + "signature": [ + "{ x: number; y: number; }" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.PointLike", + "type": "Type", + "tags": [ + "typedef" + ], "label": "PointLike", + "description": [ + "\nA [Point](https://github.com/mapbox/point-geometry) or an array of two numbers representing `x` and `y` screen coordinates in pixels.\n" + ], + "signature": [ + "[number, number] | ", + "node_modules/@types/mapbox__point-geometry/index" + ], + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/mapbox-gl", + "id": "def-server.StyleSpecification", + "type": "Type", + "tags": [], + "label": "StyleSpecification", "description": [], "signature": [ - "[number, number] | maplibregl.Point" + "{ version: 8; name?: string | undefined; metadata?: unknown; center?: number[] | undefined; zoom?: number | undefined; bearing?: number | undefined; pitch?: number | undefined; light?: maplibregl.LightSpecification | undefined; sources: { [_: string]: maplibregl.SourceSpecification; }; sprite?: string | undefined; glyphs?: string | undefined; transition?: maplibregl.TransitionSpecification | undefined; layers: maplibregl.LayerSpecification[]; }" ], - "path": "node_modules/maplibre-gl/src/index.d.ts", + "path": "node_modules/maplibre-gl/dist/maplibre-gl.d.ts", "deprecated": false, "initialIsOpen": false } diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 53aa377e5c7a7..98e67f9b8208e 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/mapbox-gl plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 466 | 1 | 1 | 0 | +| 494 | 1 | 1 | 0 | ## Server diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 71a68c280f4c4..e0dbc611af5a0 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/monaco plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] 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. --- diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 2a473e955b4f0..589a60a957724 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/optimizer plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] 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. --- diff --git a/api_docs/kbn_plugin_discovery.devdocs.json b/api_docs/kbn_plugin_discovery.devdocs.json index f3e8e676b568f..331ea07e1db83 100644 --- a/api_docs/kbn_plugin_discovery.devdocs.json +++ b/api_docs/kbn_plugin_discovery.devdocs.json @@ -19,7 +19,7 @@ "label": "getPluginSearchPaths", "description": [], "signature": [ - "({ rootDir, oss, examples }: ", + "({ rootDir, oss, examples, testPlugins }: ", { "pluginId": "@kbn/plugin-discovery", "scope": "server", @@ -37,7 +37,7 @@ "id": "def-server.getPluginSearchPaths.$1", "type": "Object", "tags": [], - "label": "{ rootDir, oss, examples }", + "label": "{ rootDir, oss, examples, testPlugins }", "description": [], "signature": [ { @@ -289,6 +289,19 @@ "path": "packages/kbn-plugin-discovery/src/parse_kibana_platform_plugin.ts", "deprecated": false }, + { + "parentPluginId": "@kbn/plugin-discovery", + "id": "def-server.KibanaPlatformPluginManifest.enabledOnAnonymousPages", + "type": "CompoundType", + "tags": [], + "label": "enabledOnAnonymousPages", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-plugin-discovery/src/parse_kibana_platform_plugin.ts", + "deprecated": false + }, { "parentPluginId": "@kbn/plugin-discovery", "id": "def-server.KibanaPlatformPluginManifest.serviceFolders", @@ -396,6 +409,19 @@ "description": [], "path": "packages/kbn-plugin-discovery/src/plugin_search_paths.ts", "deprecated": false + }, + { + "parentPluginId": "@kbn/plugin-discovery", + "id": "def-server.SearchOptions.testPlugins", + "type": "CompoundType", + "tags": [], + "label": "testPlugins", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-plugin-discovery/src/plugin_search_paths.ts", + "deprecated": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_plugin_discovery.mdx b/api_docs/kbn_plugin_discovery.mdx index 0bdfc493aa7d4..1e30d398d906c 100644 --- a/api_docs/kbn_plugin_discovery.mdx +++ b/api_docs/kbn_plugin_discovery.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-discovery title: "@kbn/plugin-discovery" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-discovery plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-discovery'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 28 | 0 | 27 | 0 | +| 30 | 0 | 29 | 0 | ## Server diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 6803a60cd1d81..85a2f9ace93de 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-generator plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] 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. --- diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index b549f24fa74fa..abcb0613f1d31 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-helpers plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] 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. --- diff --git a/api_docs/kbn_pm.devdocs.json b/api_docs/kbn_pm.devdocs.json index ec66a824a63a3..d43dd55273e42 100644 --- a/api_docs/kbn_pm.devdocs.json +++ b/api_docs/kbn_pm.devdocs.json @@ -328,23 +328,6 @@ "children": [], "returnComment": [] }, - { - "parentPluginId": "@kbn/pm", - "id": "def-server.Project.getIntermediateBuildDirectory", - "type": "Function", - "tags": [], - "label": "getIntermediateBuildDirectory", - "description": [ - "\nReturns the directory that should be copied into the Kibana build artifact.\nThis config can be specified to only include the project's build artifacts\ninstead of everything located in the project directory." - ], - "signature": [ - "() => string" - ], - "path": "packages/kbn-pm/src/utils/project.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, { "parentPluginId": "@kbn/pm", "id": "def-server.Project.getCleanConfig", @@ -578,177 +561,12 @@ "deprecated": false, "children": [], "returnComment": [] - }, - { - "parentPluginId": "@kbn/pm", - "id": "def-server.Project.installDependencies", - "type": "Function", - "tags": [], - "label": "installDependencies", - "description": [], - "signature": [ - "(options?: { extraArgs?: string[] | undefined; }) => Promise" - ], - "path": "packages/kbn-pm/src/utils/project.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/pm", - "id": "def-server.Project.installDependencies.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "packages/kbn-pm/src/utils/project.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/pm", - "id": "def-server.Project.installDependencies.$1.extraArgs", - "type": "Array", - "tags": [], - "label": "extraArgs", - "description": [], - "signature": [ - "string[] | undefined" - ], - "path": "packages/kbn-pm/src/utils/project.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [] } ], "initialIsOpen": false } ], "functions": [ - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildBazelProductionProjects", - "type": "Function", - "tags": [], - "label": "buildBazelProductionProjects", - "description": [], - "signature": [ - "({\n kibanaRoot,\n buildRoot,\n onlyOSS,\n}: { kibanaRoot: string; buildRoot: string; onlyOSS?: boolean | undefined; }) => Promise" - ], - "path": "packages/kbn-pm/src/production/build_bazel_production_projects.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildBazelProductionProjects.$1", - "type": "Object", - "tags": [], - "label": "{\n kibanaRoot,\n buildRoot,\n onlyOSS,\n}", - "description": [], - "path": "packages/kbn-pm/src/production/build_bazel_production_projects.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildBazelProductionProjects.$1.kibanaRoot", - "type": "string", - "tags": [], - "label": "kibanaRoot", - "description": [], - "path": "packages/kbn-pm/src/production/build_bazel_production_projects.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildBazelProductionProjects.$1.buildRoot", - "type": "string", - "tags": [], - "label": "buildRoot", - "description": [], - "path": "packages/kbn-pm/src/production/build_bazel_production_projects.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildBazelProductionProjects.$1.onlyOSS", - "type": "CompoundType", - "tags": [], - "label": "onlyOSS", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "packages/kbn-pm/src/production/build_bazel_production_projects.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildNonBazelProductionProjects", - "type": "Function", - "tags": [], - "label": "buildNonBazelProductionProjects", - "description": [], - "signature": [ - "({\n kibanaRoot,\n buildRoot,\n onlyOSS,\n}: { kibanaRoot: string; buildRoot: string; onlyOSS?: boolean | undefined; }) => Promise" - ], - "path": "packages/kbn-pm/src/production/build_non_bazel_production_projects.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildNonBazelProductionProjects.$1", - "type": "Object", - "tags": [], - "label": "{\n kibanaRoot,\n buildRoot,\n onlyOSS,\n}", - "description": [], - "path": "packages/kbn-pm/src/production/build_non_bazel_production_projects.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildNonBazelProductionProjects.$1.kibanaRoot", - "type": "string", - "tags": [], - "label": "kibanaRoot", - "description": [], - "path": "packages/kbn-pm/src/production/build_non_bazel_production_projects.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildNonBazelProductionProjects.$1.buildRoot", - "type": "string", - "tags": [], - "label": "buildRoot", - "description": [], - "path": "packages/kbn-pm/src/production/build_non_bazel_production_projects.ts", - "deprecated": false - }, - { - "parentPluginId": "@kbn/pm", - "id": "def-server.buildNonBazelProductionProjects.$1.onlyOSS", - "type": "CompoundType", - "tags": [], - "label": "onlyOSS", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "packages/kbn-pm/src/production/build_non_bazel_production_projects.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/pm", "id": "def-server.getProjectPaths", @@ -889,42 +707,6 @@ ], "returnComment": [], "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/pm", - "id": "def-server.transformDependencies", - "type": "Function", - "tags": [], - "label": "transformDependencies", - "description": [ - "\nReplaces `link:` dependencies with `file:` dependencies. When installing\ndependencies, these `file:` dependencies will be copied into `node_modules`\ninstead of being symlinked.\n\nThis will allow us to copy packages into the build and run `yarn`, which\nwill then _copy_ the `file:` dependencies into `node_modules` instead of\nsymlinking like we do in development.\n\nAdditionally it also taken care of replacing `link:bazel-bin/` with\n`file:` so we can also support the copy of the Bazel packages dist already into\nbuild/packages to be copied into the node_modules" - ], - "signature": [ - "(dependencies: ", - "IPackageDependencies", - ") => ", - "IPackageDependencies" - ], - "path": "packages/kbn-pm/src/utils/package_json.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/pm", - "id": "def-server.transformDependencies.$1", - "type": "Object", - "tags": [], - "label": "dependencies", - "description": [], - "signature": [ - "IPackageDependencies" - ], - "path": "packages/kbn-pm/src/utils/package_json.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false } ], "interfaces": [], diff --git a/api_docs/kbn_pm.mdx b/api_docs/kbn_pm.mdx index c71a8c2a1e351..b720c9ac68580 100644 --- a/api_docs/kbn_pm.mdx +++ b/api_docs/kbn_pm.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-pm title: "@kbn/pm" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/pm plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/pm'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 63 | 0 | 49 | 5 | +| 47 | 0 | 35 | 5 | ## Server diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 5ada92c6138c5..6253496021689 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/react-field plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] 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. --- diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 13068a7957a81..94645ec075d4d 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/rule-data-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] 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. --- diff --git a/api_docs/kbn_securitysolution_autocomplete.devdocs.json b/api_docs/kbn_securitysolution_autocomplete.devdocs.json index ee08de8665996..3c23bf9f43822 100644 --- a/api_docs/kbn_securitysolution_autocomplete.devdocs.json +++ b/api_docs/kbn_securitysolution_autocomplete.devdocs.json @@ -305,9 +305,9 @@ "\nGiven an array of lists and optionally a field this will return all\nthe lists that match against the field based on the types from the field\n\nNOTE: That we support one additional property from \"FieldSpec\" located here:\nsrc/plugins/data/common/index_patterns/fields/types.ts\nThis type property is esTypes. If it exists and is on there we will read off the esTypes." ], "signature": [ - "(lists: { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[], field?: (", + "(lists: { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[], field?: (", "DataViewFieldBase", - " & { esTypes?: string[] | undefined; }) | undefined) => { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]" + " & { esTypes?: string[] | undefined; }) | undefined) => { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]" ], "path": "packages/kbn-securitysolution-autocomplete/src/filter_field_to_list/index.ts", "deprecated": false, @@ -322,7 +322,7 @@ "The lists to match against the field" ], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]" ], "path": "packages/kbn-securitysolution-autocomplete/src/filter_field_to_list/index.ts", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index c2866fcd43b3f..e007783b67ee3 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] 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. --- diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index ed7d867290493..4662dfc9e1a4e 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] 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. --- diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 41a05b8d05265..4894eb915413e 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] 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. --- diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index bb61fa2b22770..f0e0356561dd8 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] 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. --- diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json index f3b10dd30d340..333ab73f958fc 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json +++ b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json @@ -27,7 +27,7 @@ "label": "updateExceptionListItemValidate", "description": [], "signature": [ - "(schema: { 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) => string[]" + "(schema: { 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) => string[]" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_exception_list_item_validation/index.ts", "deprecated": false, @@ -40,7 +40,7 @@ "label": "schema", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_exception_list_item_validation/index.ts", "deprecated": false, @@ -58,7 +58,7 @@ "label": "validateComments", "description": [], "signature": [ - "(item: { 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) => string[]" + "(item: { 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) => string[]" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_exception_list_item_validation/index.ts", "deprecated": false, @@ -71,7 +71,7 @@ "label": "item", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_exception_list_item_validation/index.ts", "deprecated": false, @@ -153,7 +153,7 @@ "label": "listItem", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/typescript_types/index.ts", "deprecated": false @@ -1216,7 +1216,7 @@ "label": "listItem", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/typescript_types/index.ts", "deprecated": false @@ -1307,7 +1307,7 @@ "label": "exceptions", "description": [], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; 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; }[]" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; 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": "packages/kbn-securitysolution-io-ts-list-types/src/typescript_types/index.ts", "deprecated": false @@ -1897,7 +1897,7 @@ "label": "CreateEndpointListItemSchemaDecoded", "description": [], "signature": [ - "Omit<{ description: string; entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; comments: { comment: string; }[] | undefined; item_id: string | undefined; meta: object | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\" | \"item_id\" | \"os_types\"> & { comments: { comment: string; }[]; tags: string[]; item_id: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" + "Omit<{ description: string; entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; comments: { comment: string; }[] | undefined; item_id: string | undefined; meta: object | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\" | \"item_id\" | \"os_types\"> & { comments: { comment: string; }[]; tags: string[]; item_id: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_endpoint_list_item_schema/index.ts", "deprecated": false, @@ -1925,7 +1925,7 @@ "label": "CreateExceptionListItemSchema", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_exception_list_item_schema/index.ts", "deprecated": false, @@ -1939,7 +1939,7 @@ "label": "CreateExceptionListItemSchemaDecoded", "description": [], "signature": [ - "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; list_id: string; name: string; type: \"simple\"; comments: { comment: string; }[] | undefined; item_id: string | undefined; meta: object | undefined; namespace_type: \"single\" | \"agnostic\" | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\" | \"item_id\" | \"namespace_type\"> & { comments: { comment: string; }[]; tags: string[]; item_id: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" + "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; list_id: string; name: string; type: \"simple\"; comments: { comment: string; }[] | undefined; item_id: string | undefined; meta: object | undefined; namespace_type: \"single\" | \"agnostic\" | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\" | \"item_id\" | \"namespace_type\"> & { comments: { comment: string; }[]; tags: string[]; item_id: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_exception_list_item_schema/index.ts", "deprecated": false, @@ -2009,7 +2009,7 @@ "label": "CreateListSchema", "description": [], "signature": [ - "{ description: string; name: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; } & { deserializer?: string | undefined; id?: string | undefined; meta?: object | undefined; serializer?: string | undefined; version?: number | undefined; }" + "{ description: string; name: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; } & { deserializer?: string | undefined; id?: string | undefined; meta?: object | undefined; serializer?: string | undefined; version?: number | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_list_schema/index.ts", "deprecated": false, @@ -2023,7 +2023,7 @@ "label": "CreateListSchemaDecoded", "description": [], "signature": [ - "{ type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; id: string | undefined; description: string; name: string; meta: object | undefined; serializer: string | undefined; deserializer: string | undefined; } & { version: number; }" + "{ id: string | undefined; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; description: string; name: string; meta: object | undefined; serializer: string | undefined; deserializer: string | undefined; } & { version: number; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_list_schema/index.ts", "deprecated": false, @@ -2317,7 +2317,7 @@ "label": "EntriesArray", "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]" + "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/entries/index.ts", "deprecated": false, @@ -2331,7 +2331,7 @@ "label": "EntriesArrayOrUndefined", "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[] | undefined" + "({ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[] | undefined" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/entries/index.ts", "deprecated": false, @@ -2345,7 +2345,7 @@ "label": "Entry", "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/entries/index.ts", "deprecated": false, @@ -2373,7 +2373,7 @@ "label": "EntryList", "description": [], "signature": [ - "{ field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; }" + "{ field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/entries_list/index.ts", "deprecated": false, @@ -2443,7 +2443,7 @@ "label": "ExceptionListItemSchema", "description": [], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; 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; }" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; 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": "packages/kbn-securitysolution-io-ts-list-types/src/response/exception_list_item_schema/index.ts", "deprecated": false, @@ -2765,7 +2765,7 @@ "label": "FoundExceptionListItemSchema", "description": [], "signature": [ - "{ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; 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; } & { pit?: string | undefined; }" + "{ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; 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; } & { pit?: string | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/found_exception_list_item_schema/index.ts", "deprecated": false, @@ -2793,7 +2793,7 @@ "label": "FoundListItemSchema", "description": [], "signature": [ - "{ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]; page: number; per_page: number; total: number; }" + "{ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]; page: number; per_page: number; total: number; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/found_list_item_schema/index.ts", "deprecated": false, @@ -2807,7 +2807,7 @@ "label": "FoundListSchema", "description": [], "signature": [ - "{ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }" + "{ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/found_list_schema/index.ts", "deprecated": false, @@ -2919,7 +2919,7 @@ "label": "ImportExceptionListItemSchema", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; item_id: string; list_id: string; name: string; type: \"simple\"; } & { id?: string | undefined; comments?: (({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; }) | { comment: string; })[] | undefined; created_at?: string | undefined; updated_at?: string | undefined; created_by?: string | undefined; updated_by?: string | undefined; _version?: string | undefined; tie_breaker_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; item_id: string; list_id: string; name: string; type: \"simple\"; } & { id?: string | undefined; comments?: (({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; }) | { comment: string; })[] | undefined; created_at?: string | undefined; updated_at?: string | undefined; created_by?: string | undefined; updated_by?: string | undefined; _version?: string | undefined; tie_breaker_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/import_exception_item_schema/index.ts", "deprecated": false, @@ -2933,7 +2933,7 @@ "label": "ImportExceptionListItemSchemaDecoded", "description": [], "signature": [ - "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; item_id: string; list_id: string; name: string; type: \"simple\"; } & { id?: string | undefined; comments?: (({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; }) | { comment: string; })[] | undefined; created_at?: string | undefined; updated_at?: string | undefined; created_by?: string | undefined; updated_by?: string | undefined; _version?: string | undefined; tie_breaker_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\" | \"item_id\" | \"namespace_type\"> & { comments: (({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; }) | { comment: string; })[]; tags: string[]; item_id: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" + "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; item_id: string; list_id: string; name: string; type: \"simple\"; } & { id?: string | undefined; comments?: (({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; }) | { comment: string; })[] | undefined; created_at?: string | undefined; updated_at?: string | undefined; created_by?: string | undefined; updated_by?: string | undefined; _version?: string | undefined; tie_breaker_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\" | \"item_id\" | \"namespace_type\"> & { comments: (({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; }) | { comment: string; })[]; tags: string[]; item_id: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/import_exception_item_schema/index.ts", "deprecated": false, @@ -2989,7 +2989,7 @@ "label": "ImportListItemQuerySchema", "description": [], "signature": [ - "{ deserializer: string | undefined; list_id: string | undefined; serializer: string | undefined; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\" | undefined; }" + "{ deserializer: string | undefined; list_id: string | undefined; serializer: string | undefined; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\" | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/import_list_item_query_schema/index.ts", "deprecated": false, @@ -3003,7 +3003,7 @@ "label": "ImportListItemQuerySchemaEncoded", "description": [], "signature": [ - "{ deserializer?: string | undefined; list_id?: string | undefined; serializer?: string | undefined; type?: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\" | undefined; }" + "{ deserializer?: string | undefined; list_id?: string | undefined; serializer?: string | undefined; type?: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\" | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/import_list_item_query_schema/index.ts", "deprecated": false, @@ -3115,7 +3115,7 @@ "label": "ListArraySchema", "description": [], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/list_schema/index.ts", "deprecated": false, @@ -3157,7 +3157,7 @@ "label": "ListItemArraySchema", "description": [], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/list_item_schema/index.ts", "deprecated": false, @@ -3185,7 +3185,7 @@ "label": "ListItemSchema", "description": [], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/list_item_schema/index.ts", "deprecated": false, @@ -3213,7 +3213,7 @@ "label": "ListSchema", "description": [], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/list_schema/index.ts", "deprecated": false, @@ -3423,7 +3423,7 @@ "label": "NonEmptyEntriesArray", "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]" + "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/non_empty_entries_array/index.ts", "deprecated": false, @@ -3437,7 +3437,7 @@ "label": "NonEmptyEntriesArrayDecoded", "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]" + "({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/non_empty_entries_array/index.ts", "deprecated": false, @@ -3829,7 +3829,7 @@ "label": "SearchListItemArraySchema", "description": [], "signature": [ - "{ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }[]" + "{ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }[]" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/search_list_item_schema/index.ts", "deprecated": false, @@ -3843,7 +3843,7 @@ "label": "SearchListItemSchema", "description": [], "signature": [ - "{ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }" + "{ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/response/search_list_item_schema/index.ts", "deprecated": false, @@ -3983,7 +3983,7 @@ "label": "Type", "description": [], "signature": [ - "\"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"" + "\"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/type/index.ts", "deprecated": false, @@ -3997,7 +3997,7 @@ "label": "TypeOrUndefined", "description": [], "signature": [ - "\"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\" | undefined" + "\"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\" | undefined" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/type/index.ts", "deprecated": false, @@ -4053,7 +4053,7 @@ "label": "UpdateEndpointListItemSchema", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts", "deprecated": false, @@ -4067,7 +4067,7 @@ "label": "UpdateEndpointListItemSchemaDecoded", "description": [], "signature": [ - "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; _version: string | undefined; comments: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id: string | undefined; item_id: string | undefined; meta: object | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\"> & { comments: ({ comment: string; } & { id?: string | undefined; })[]; tags: string[]; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" + "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; _version: string | undefined; comments: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id: string | undefined; item_id: string | undefined; meta: object | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\"> & { comments: ({ comment: string; } & { id?: string | undefined; })[]; tags: string[]; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts", "deprecated": false, @@ -4081,7 +4081,7 @@ "label": "UpdateExceptionListItemSchema", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_exception_list_item_schema/index.ts", "deprecated": false, @@ -4095,7 +4095,7 @@ "label": "UpdateExceptionListItemSchemaDecoded", "description": [], "signature": [ - "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; _version: string | undefined; comments: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id: string | undefined; item_id: string | undefined; meta: object | undefined; namespace_type: \"single\" | \"agnostic\" | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\" | \"namespace_type\" | \"os_types\"> & { comments: ({ comment: string; } & { id?: string | undefined; })[]; tags: string[]; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" + "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; _version: string | undefined; comments: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id: string | undefined; item_id: string | undefined; meta: object | undefined; namespace_type: \"single\" | \"agnostic\" | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"tags\" | \"entries\" | \"comments\" | \"namespace_type\" | \"os_types\"> & { comments: ({ comment: string; } & { id?: string | undefined; })[]; tags: string[]; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[]; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_exception_list_item_schema/index.ts", "deprecated": false, @@ -4628,7 +4628,7 @@ "StringC", "; entries: ", "Type", - "<({ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>; list_id: ", + "<({ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>; list_id: ", "Type", "; name: ", "StringC", @@ -6914,7 +6914,7 @@ "StringC", "; entries: ", "Type", - "<({ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>; item_id: ", + "<({ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>; item_id: ", "Type", "; list_id: ", "Type", @@ -7847,7 +7847,7 @@ ], "signature": [ "Type", - "<({ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>" + "<({ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/common/non_empty_entries_array/index.ts", "deprecated": false, @@ -8780,7 +8780,7 @@ "StringC", "; entries: ", "Type", - "<({ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>; name: ", + "<({ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>; name: ", "StringC", "; type: ", "KeyofC", @@ -8833,7 +8833,7 @@ "StringC", "; entries: ", "Type", - "<({ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>; name: ", + "<({ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; })[], unknown>; name: ", "StringC", "; type: ", "KeyofC", diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index dd8f1bf8648d9..22b0760147191 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] 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. --- diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 65d532fec19e4..40ecac1736349 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] 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. --- diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index a5c39ba338990..04e891298a380 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] 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. --- diff --git a/api_docs/kbn_securitysolution_list_api.devdocs.json b/api_docs/kbn_securitysolution_list_api.devdocs.json index 816e93b590a41..8c92d4257224a 100644 --- a/api_docs/kbn_securitysolution_list_api.devdocs.json +++ b/api_docs/kbn_securitysolution_list_api.devdocs.json @@ -62,7 +62,7 @@ "signature": [ "({ http, listItem, signal, }: ", "AddExceptionListItemProps", - ") => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-api/src/api/index.ts", "deprecated": false, @@ -206,7 +206,7 @@ "signature": [ "({ http, id, namespaceType, signal, }: ", "ApiCallByIdProps", - ") => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-api/src/api/index.ts", "deprecated": false, @@ -245,7 +245,7 @@ "section": "def-common.DeleteListParams", "text": "DeleteListParams" }, - ") => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }>" ], "path": "packages/kbn-securitysolution-list-api/src/list_api/index.ts", "deprecated": false, @@ -399,7 +399,7 @@ "signature": [ "({ http, id, namespaceType, signal, }: ", "ApiCallByIdProps", - ") => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-api/src/api/index.ts", "deprecated": false, @@ -432,7 +432,7 @@ "signature": [ "({ filterOptions, http, listIds, namespaceTypes, pagination, signal, }: ", "ApiCallByListIdProps", - ") => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }>" + ") => 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }>" ], "path": "packages/kbn-securitysolution-list-api/src/api/index.ts", "deprecated": false, @@ -504,7 +504,7 @@ "section": "def-common.FindListsParams", "text": "FindListsParams" }, - ") => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }>" ], "path": "packages/kbn-securitysolution-list-api/src/list_api/index.ts", "deprecated": false, @@ -549,7 +549,7 @@ "section": "def-common.ImportListParams", "text": "ImportListParams" }, - ") => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }>" ], "path": "packages/kbn-securitysolution-list-api/src/list_api/index.ts", "deprecated": false, @@ -743,7 +743,7 @@ "signature": [ "({ http, listItem, signal, }: ", "UpdateExceptionListItemProps", - ") => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-api/src/api/index.ts", "deprecated": false, @@ -1076,7 +1076,7 @@ "label": "type", "description": [], "signature": [ - "\"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\" | undefined" + "\"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\" | undefined" ], "path": "packages/kbn-securitysolution-list-api/src/list_api/types.ts", "deprecated": false diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 0f81fc34f3478..8b6b8cf07c15a 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] 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. --- diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 698ac13af76d0..6615bac9efb38 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] 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. --- diff --git a/api_docs/kbn_securitysolution_list_hooks.devdocs.json b/api_docs/kbn_securitysolution_list_hooks.devdocs.json index 248881607be2d..48a866f37b9f3 100644 --- a/api_docs/kbn_securitysolution_list_hooks.devdocs.json +++ b/api_docs/kbn_securitysolution_list_hooks.devdocs.json @@ -29,7 +29,7 @@ "\nThis adds an id to the incoming exception item entries as ReactJS prefers to have\nan id added to them for use as a stable id. Later if we decide to change the data\nmodel to have id's within the array then this code should be removed. If not, then\nthis code should stay as an adapter for ReactJS.\n\nThis does break the type system slightly as we are lying a bit to the type system as we return\nthe same exceptionItem as we have previously but are augmenting the arrays with an id which TypeScript\ndoesn't mind us doing here. However, downstream you will notice that you have an id when the type\ndoes not indicate it. In that case use (ExceptionItem & { id: string }) temporarily if you're using the id. If you're not,\nyou can ignore the id and just use the normal TypeScript with ReactJS.\n" ], "signature": [ - "(exceptionItem: { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }) => { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }" + "(exceptionItem: { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }) => { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -44,7 +44,7 @@ "The exceptionItem to add an id to the threat matches." ], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -66,7 +66,7 @@ "\nThis removes an id from the exceptionItem entries as ReactJS prefers to have\nan id added to them for use as a stable id. Later if we decide to change the data\nmodel to have id's within the array then this code should be removed. If not, then\nthis code should stay as an adapter for ReactJS.\n" ], "signature": [ - "(exceptionItem: T) => T" + "(exceptionItem: T) => T" ], "path": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -103,7 +103,7 @@ "\nTransforms the output of rules to compensate for technical debt or UI concerns such as\nReactJS preferences for having ids within arrays if the data is not modeled that way.\n\nIf you add a new transform of the input called \"myNewTransform\" do it\nin the form of:\nflow(addIdToExceptionItemEntries, myNewTransform)(exceptionItem)\n" ], "signature": [ - "(exceptionItem: { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }) => { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }" + "(exceptionItem: { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }) => { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -118,7 +118,7 @@ "The exceptionItem to transform the output of" ], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -138,7 +138,7 @@ "label": "transformNewItemOutput", "description": [], "signature": [ - "(exceptionItem: { description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) => { description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "(exceptionItem: { description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) => { description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -151,7 +151,7 @@ "label": "exceptionItem", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -171,7 +171,7 @@ "\nTransforms the output of exception items to compensate for technical debt or UI concerns such as\nReactJS preferences for having ids within arrays if the data is not modeled that way.\n\nIf you add a new transform of the output called \"myNewTransform\" do it\nin the form of:\nflow(removeIdFromExceptionItemsEntries, myNewTransform)(exceptionItem)\n" ], "signature": [ - "(exceptionItem: { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; })) => { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; })" + "(exceptionItem: { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; })) => { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; })" ], "path": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -186,7 +186,7 @@ "The exceptionItem to transform the output of" ], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; })" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; })" ], "path": "packages/kbn-securitysolution-list-hooks/src/transforms/index.ts", "deprecated": false, @@ -317,7 +317,7 @@ "OptionalSignalArgs", "<", "DeleteListParams", - ">], { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }>" + ">], { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }>" ], "path": "packages/kbn-securitysolution-list-hooks/src/use_delete_list/index.ts", "deprecated": false, @@ -445,7 +445,7 @@ "OptionalSignalArgs", "<", "FindListsParams", - ">], { 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }>" + ">], { 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }[]; page: number; per_page: number; total: number; }>" ], "path": "packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.ts", "deprecated": false, @@ -467,7 +467,7 @@ "OptionalSignalArgs", "<", "ImportListParams", - ">], { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }>" + ">], { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }>" ], "path": "packages/kbn-securitysolution-list-hooks/src/use_import_list/index.ts", "deprecated": false, @@ -623,7 +623,7 @@ "label": "addExceptionListItem", "description": [], "signature": [ - "(arg: { listItem: { description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }; }) => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }>" + "(arg: { listItem: { description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }; }) => 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-hooks/src/use_api/index.ts", "deprecated": false, @@ -646,7 +646,7 @@ "label": "listItem", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-list-hooks/src/use_api/index.ts", "deprecated": false @@ -664,7 +664,7 @@ "label": "updateExceptionListItem", "description": [], "signature": [ - "(arg: { listItem: { description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }; }) => 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }>" + "(arg: { listItem: { description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }; }) => 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-hooks/src/use_api/index.ts", "deprecated": false, @@ -687,7 +687,7 @@ "label": "listItem", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-list-hooks/src/use_api/index.ts", "deprecated": false @@ -771,7 +771,7 @@ "signature": [ "(arg: ", "ApiCallMemoProps", - " & { onSuccess: (arg: { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }) => void; }) => Promise" + " & { onSuccess: (arg: { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }) => void; }) => Promise" ], "path": "packages/kbn-securitysolution-list-hooks/src/use_api/index.ts", "deprecated": false, @@ -785,7 +785,7 @@ "description": [], "signature": [ "ApiCallMemoProps", - " & { onSuccess: (arg: { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }) => void; }" + " & { onSuccess: (arg: { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }) => void; }" ], "path": "packages/kbn-securitysolution-list-hooks/src/use_api/index.ts", "deprecated": false, @@ -954,7 +954,7 @@ "label": "ReturnExceptionListAndItems", "description": [], "signature": [ - "[boolean, { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }[], ", + "[boolean, { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }[], ", "Pagination", ", Func | null]" ], @@ -996,7 +996,7 @@ "label": "ReturnPersistExceptionItem", "description": [], "signature": [ - "[PersistReturnExceptionItem, React.Dispatch<({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) | null>]" + "[PersistReturnExceptionItem, React.Dispatch<({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }) | null>]" ], "path": "packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index db34eab6092e6..70e03cbfed95c 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] 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. --- diff --git a/api_docs/kbn_securitysolution_list_utils.devdocs.json b/api_docs/kbn_securitysolution_list_utils.devdocs.json index e10ed1097e954..89f36219cbe6b 100644 --- a/api_docs/kbn_securitysolution_list_utils.devdocs.json +++ b/api_docs/kbn_securitysolution_list_utils.devdocs.json @@ -27,7 +27,7 @@ "label": "addIdToEntries", "description": [], "signature": [ - "(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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; })[]" + "(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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-utils/src/helpers/index.ts", "deprecated": false, @@ -40,7 +40,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-utils/src/helpers/index.ts", "deprecated": false, @@ -58,7 +58,7 @@ "label": "buildExceptionFilter", "description": [], "signature": [ - "({ lists, excludeExceptions, chunkSize, alias, }: { lists: ({ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }))[]; excludeExceptions: boolean; chunkSize: number; alias: string | null; }) => ", + "({ lists, excludeExceptions, chunkSize, alias, }: { lists: ({ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }))[]; excludeExceptions: boolean; chunkSize: number; alias: string | null; }) => ", "Filter", " | undefined" ], @@ -83,7 +83,7 @@ "label": "lists", "description": [], "signature": [ - "({ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }))[]" + "({ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }))[]" ], "path": "packages/kbn-securitysolution-list-utils/src/build_exception_filter/index.ts", "deprecated": false @@ -703,7 +703,7 @@ "section": "def-common.ExceptionsBuilderExceptionItem", "text": "ExceptionsBuilderExceptionItem" }, - "[]) => ({ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }))[]" + "[]) => ({ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }))[]" ], "path": "packages/kbn-securitysolution-list-utils/src/helpers/index.ts", "deprecated": false, @@ -957,7 +957,7 @@ "section": "def-common.FormattedBuilderEntry", "text": "FormattedBuilderEntry" }, - ") => ({ 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; }) & { id?: string | undefined; }" + ") => ({ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; }) & { id?: string | undefined; }" ], "path": "packages/kbn-securitysolution-list-utils/src/helpers/index.ts", "deprecated": false, @@ -1099,7 +1099,7 @@ "section": "def-common.FormattedBuilderEntry", "text": "FormattedBuilderEntry" }, - ", newField: { _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }) => { index: number; updatedEntry: ", + ", newField: { _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }) => { index: number; updatedEntry: ", { "pluginId": "@kbn/securitysolution-list-utils", "scope": "common", @@ -1144,7 +1144,7 @@ "- newly selected list" ], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }" ], "path": "packages/kbn-securitysolution-list-utils/src/helpers/index.ts", "deprecated": false, @@ -2529,7 +2529,7 @@ "label": "hasLargeValueList", "description": [], "signature": [ - "(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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; })[]) => boolean" + "(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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; })[]) => boolean" ], "path": "packages/kbn-securitysolution-list-utils/src/has_large_value_list/index.ts", "deprecated": false, @@ -2542,7 +2542,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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": "packages/kbn-securitysolution-list-utils/src/has_large_value_list/index.ts", "deprecated": false, @@ -3170,7 +3170,7 @@ "label": "BuilderEntry", "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; }) & { id?: string | undefined; }) | ", + "(({ 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; }) & { id?: string | undefined; }) | ", { "pluginId": "@kbn/securitysolution-list-utils", "scope": "common", @@ -3229,7 +3229,7 @@ "label": "CreateExceptionListItemBuilderSchema", "description": [], "signature": [ - "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }, \"meta\" | \"entries\"> & { meta: { temporaryUuid: string; }; entries: ", + "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }, \"meta\" | \"entries\"> & { meta: { temporaryUuid: string; }; entries: ", { "pluginId": "@kbn/securitysolution-list-utils", "scope": "common", @@ -3363,7 +3363,7 @@ "label": "ExceptionListItemBuilderSchema", "description": [], "signature": [ - "Omit<{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }, \"entries\"> & { entries: ", + "Omit<{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }, \"entries\"> & { entries: ", { "pluginId": "@kbn/securitysolution-list-utils", "scope": "common", diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 935139d5e2871..39b7d58043270 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] 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. --- diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 8063a4d5dd5fa..e0a298ed33ecc 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-rules plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] 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. --- diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 6b5ef155d35b4..269196aeeda43 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] 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. --- diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index d9c6d570aa91b..f89634ac45a1b 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] 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. --- diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 5947022a02051..b7177420222a4 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/server-http-tools plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] 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. --- diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 59f1273b9499f..b4ded054b09ea 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/server-route-repository plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] 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. --- diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.devdocs.json b/api_docs/kbn_shared_ux_button_exit_full_screen.devdocs.json new file mode 100644 index 0000000000000..bec75a657ccc1 --- /dev/null +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.devdocs.json @@ -0,0 +1,242 @@ +{ + "id": "@kbn/shared-ux-button-exit-full-screen", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.ExitFullScreenButton", + "type": "Function", + "tags": [], + "label": "ExitFullScreenButton", + "description": [ + "\nA component that can be used to exit full screen mode in Kibana. Requires a Provider for\nrelevant services." + ], + "signature": [ + "React.ForwardRefExoticComponent<", + "Props", + " & React.RefAttributes<{}>>" + ], + "path": "packages/shared-ux/button/exit_full_screen/src/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.ExitFullScreenButton.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.ExitFullScreenButtonComponent", + "type": "Function", + "tags": [], + "label": "ExitFullScreenButtonComponent", + "description": [ + "\nA pure component that resembles a button to exit full screen mode." + ], + "signature": [ + "React.ForwardRefExoticComponent<", + "Props", + " & React.RefAttributes<{}>>" + ], + "path": "packages/shared-ux/button/exit_full_screen/src/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.ExitFullScreenButtonComponent.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.ExitFullScreenButtonKibanaProvider", + "type": "Function", + "tags": [], + "label": "ExitFullScreenButtonKibanaProvider", + "description": [ + "\nKibana-specific Provider that maps to known dependency types." + ], + "signature": [ + "({ children, ...services }: React.PropsWithChildren<", + "KibanaServices", + ">) => JSX.Element" + ], + "path": "packages/shared-ux/button/exit_full_screen/src/services.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.ExitFullScreenButtonKibanaProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n children,\n ...services\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + "KibanaServices", + ">" + ], + "path": "packages/shared-ux/button/exit_full_screen/src/services.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.ExitFullScreenButtonProvider", + "type": "Function", + "tags": [], + "label": "ExitFullScreenButtonProvider", + "description": [ + "\nAbstract external service Provider." + ], + "signature": [ + "({ children, ...services }: React.PropsWithChildren<", + "Services", + ">) => JSX.Element" + ], + "path": "packages/shared-ux/button/exit_full_screen/src/services.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.ExitFullScreenButtonProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{ children, ...services }", + "description": [], + "signature": [ + "React.PropsWithChildren<", + "Services", + ">" + ], + "path": "packages/shared-ux/button/exit_full_screen/src/services.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.LazyExitFullScreenButton", + "type": "Function", + "tags": [], + "label": "LazyExitFullScreenButton", + "description": [ + "\nLazy-loaded connected component. Must be wrapped in `React.Suspense` and a Provider." + ], + "signature": [ + "React.ExoticComponent<", + "Props", + "> & { readonly _result: ({ onExit, toggleChrome }: ", + "Props", + ") => JSX.Element; }" + ], + "path": "packages/shared-ux/button/exit_full_screen/src/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.LazyExitFullScreenButton.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.LazyExitFullScreenButtonComponent", + "type": "Function", + "tags": [], + "label": "LazyExitFullScreenButtonComponent", + "description": [ + "\nLazy-loaded pure component. Must be wrapped in `React.Suspense`." + ], + "signature": [ + "React.ExoticComponent<", + "Props", + "> & { readonly _result: ({ onClick, className }: ", + "Props", + ") => JSX.Element; }" + ], + "path": "packages/shared-ux/button/exit_full_screen/src/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-exit-full-screen", + "id": "def-common.LazyExitFullScreenButtonComponent.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx new file mode 100644 index 0000000000000..16c76cd894f90 --- /dev/null +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnSharedUxButtonExitFullScreenPluginApi +slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen +title: "@kbn/shared-ux-button-exit-full-screen" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/shared-ux-button-exit-full-screen plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] +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 kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 12 | 0 | 2 | 3 | + +## Common + +### Functions + + diff --git a/api_docs/kbn_shared_ux_components.devdocs.json b/api_docs/kbn_shared_ux_components.devdocs.json index 77f778bb3f118..fd3d022aeaef2 100644 --- a/api_docs/kbn_shared_ux_components.devdocs.json +++ b/api_docs/kbn_shared_ux_components.devdocs.json @@ -54,12 +54,12 @@ }, { "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.ExitFullScreenButton", + "id": "def-common.IconButtonGroup", "type": "Function", "tags": [], - "label": "ExitFullScreenButton", + "label": "IconButtonGroup", "description": [ - "\nA `ExitFullScreenButton` component that is wrapped by the `withSuspense` HOC. This component can\nbe used directly by consumers and will load the `LazyExitFullScreenButton` component lazily with\na predefined fallback and error boundary." + "\nThe IconButtonGroup component that is wrapped by the `withSuspence` HOC." ], "signature": [ "React.ForwardRefExoticComponent<", @@ -72,7 +72,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.ExitFullScreenButton.$1", + "id": "def-common.IconButtonGroup.$1", "type": "Uncategorized", "tags": [], "label": "props", @@ -88,17 +88,35 @@ }, { "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.IconButtonGroup", + "id": "def-common.KibanaPageTemplate", "type": "Function", "tags": [], - "label": "IconButtonGroup", + "label": "KibanaPageTemplate", "description": [ - "\nThe IconButtonGroup component that is wrapped by the `withSuspence` HOC." + "\nA `KibanaPageTemplate` component that is wrapped by the `withSuspense` HOC. This component can\nbe used directly by consumers and will load the `KibanaPageTemplateLazy` component lazily with\na predefined fallback and error boundary." ], "signature": [ - "React.ForwardRefExoticComponent<", - "Props", - " & React.RefAttributes<{}>>" + "React.ForwardRefExoticComponent & { template?: \"default\" | \"empty\" | \"centeredBody\" | \"centeredContent\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; pageSideBar?: React.ReactNode; pageSideBarProps?: ", + "EuiPageSideBarProps", + " | undefined; pageHeader?: ", + "EuiPageHeaderProps", + " | undefined; pageBodyProps?: ", + "EuiPageBodyProps", + "<\"main\"> | undefined; pageContentProps?: ", + "EuiPageContentProps", + " | undefined; pageContentBodyProps?: ", + "EuiPageContentBodyProps", + " | undefined; bottomBar?: React.ReactNode; bottomBarProps?: ", + "EuiBottomBarProps", + " | undefined; fullHeight?: boolean | \"noscroll\" | undefined; minHeight?: ", + "MinHeightProperty", + " | undefined; } & { isEmptyState?: boolean | undefined; solutionNav?: ", + "KibanaPageTemplateSolutionNavProps", + " | undefined; noDataConfig?: ", + "NoDataPageProps", + " | undefined; } & React.RefAttributes<{}>>" ], "path": "packages/kbn-shared-ux-components/src/index.ts", "deprecated": false, @@ -106,7 +124,61 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.IconButtonGroup.$1", + "id": "def-common.KibanaPageTemplate.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-components", + "id": "def-common.KibanaPageTemplateLazy", + "type": "Function", + "tags": [], + "label": "KibanaPageTemplateLazy", + "description": [ + "\nThe lazily loaded `KibanaPageTemplate` component that is wrapped by the `withSuspense` HOC. Consumers should use\n`React.Suspense` or `withSuspense` HOC to load this component." + ], + "signature": [ + "React.ExoticComponent & { template?: \"default\" | \"empty\" | \"centeredBody\" | \"centeredContent\" | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"l\" | undefined; pageSideBar?: React.ReactNode; pageSideBarProps?: ", + "EuiPageSideBarProps", + " | undefined; pageHeader?: ", + "EuiPageHeaderProps", + " | undefined; pageBodyProps?: ", + "EuiPageBodyProps", + "<\"main\"> | undefined; pageContentProps?: ", + "EuiPageContentProps", + " | undefined; pageContentBodyProps?: ", + "EuiPageContentBodyProps", + " | undefined; bottomBar?: React.ReactNode; bottomBarProps?: ", + "EuiBottomBarProps", + " | undefined; fullHeight?: boolean | \"noscroll\" | undefined; minHeight?: ", + "MinHeightProperty", + " | undefined; } & { isEmptyState?: boolean | undefined; solutionNav?: ", + "KibanaPageTemplateSolutionNavProps", + " | undefined; noDataConfig?: ", + "NoDataPageProps", + " | undefined; } & { children?: React.ReactNode; }> & { readonly _result: React.FunctionComponent<", + "KibanaPageTemplateProps", + ">; }" + ], + "path": "packages/kbn-shared-ux-components/src/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/shared-ux-components", + "id": "def-common.KibanaPageTemplateLazy.$1", "type": "Uncategorized", "tags": [], "label": "props", @@ -280,42 +352,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.LazyExitFullScreenButton", - "type": "Function", - "tags": [], - "label": "LazyExitFullScreenButton", - "description": [ - "\nThe Lazily-loaded `ExitFullScreenButton` component. Consumers should use `React.Suspennse` or the\n`withSuspense` HOC to load this component." - ], - "signature": [ - "React.ExoticComponent<", - "Props", - "> & { readonly _result: ({ onExit, toggleChrome }: ", - "Props", - ") => JSX.Element; }" - ], - "path": "packages/kbn-shared-ux-components/src/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.LazyExitFullScreenButton.$1", - "type": "Uncategorized", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "P" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/shared-ux-components", "id": "def-common.LazyIconButtonGroup", @@ -323,7 +359,7 @@ "tags": [], "label": "LazyIconButtonGroup", "description": [ - "\nThe Lazily-loaded `IconButtonGroup` component. Consumers should use `React.Suspennse` or the\n`withSuspense` HOC to load this component." + "\nThe Lazily-loaded `IconButtonGroup` component. Consumers should use `React.Suspense` or the\n`withSuspense` HOC to load this component." ], "signature": [ "React.ExoticComponent<", @@ -359,7 +395,7 @@ "tags": [], "label": "LazyNoDataViews", "description": [ - "\nThe Lazily-loaded `NoDataViews` component. Consumers should use `React.Suspennse` or the\n`withSuspense` HOC to load this component." + "\nThe Lazily-loaded `NoDataViews` component. Consumers should use `React.Suspense` or the\n`withSuspense` HOC to load this component." ], "signature": [ "React.ExoticComponent<", @@ -395,7 +431,7 @@ "tags": [], "label": "LazyNoDataViewsComponent", "description": [ - "\nA pure `NoDataViews` component, with no services hooks. Consumers should use `React.Suspennse` or the\n`withSuspense` HOC to load this component." + "\nA pure `NoDataViews` component, with no services hooks. Consumers should use `React.Suspense` or the\n`withSuspense` HOC to load this component." ], "signature": [ "React.ExoticComponent<", @@ -434,7 +470,7 @@ "signature": [ "React.ExoticComponent<", "Props", - "> & { readonly _result: ({ label, ...rest }: ", + "> & { readonly _result: ({ label, iconSide, ...rest }: ", "Props", ") => JSX.Element; }" ], @@ -536,7 +572,7 @@ "signature": [ "React.ExoticComponent & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: React.FC<", + " & { children?: React.ReactNode; }, \"children\" | \"color\" | \"className\" | \"title\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"key\" | \"id\" | \"css\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"style\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"role\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-label\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"currentAppId$\" | \"navigateToUrl\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: React.FC<", "RedirectAppLinksProps", ">; }" ], @@ -593,6 +629,39 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-components", + "id": "def-common.ToolbarPopover", + "type": "Function", + "tags": [], + "label": "ToolbarPopover", + "description": [], + "signature": [ + "({ label, iconType, children, iconSide, ...popover }: ", + "Props", + ") => JSX.Element" + ], + "path": "packages/kbn-shared-ux-components/src/toolbar/popovers/popover.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-components", + "id": "def-common.ToolbarPopover.$1", + "type": "CompoundType", + "tags": [], + "label": "{ label, iconType, children, iconSide, ...popover }", + "description": [], + "signature": [ + "Props" + ], + "path": "packages/kbn-shared-ux-components/src/toolbar/popovers/popover.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [], diff --git a/api_docs/kbn_shared_ux_components.mdx b/api_docs/kbn_shared_ux_components.mdx index f5b118c1b36d2..41704c6d85694 100644 --- a/api_docs/kbn_shared_ux_components.mdx +++ b/api_docs/kbn_shared_ux_components.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-components title: "@kbn/shared-ux-components" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-components plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-components'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 32 | 0 | 4 | 4 | +| 34 | 0 | 6 | 6 | ## Common diff --git a/api_docs/kbn_shared_ux_services.mdx b/api_docs/kbn_shared_ux_services.mdx index e2cb765ac7161..98fc062b43b0b 100644 --- a/api_docs/kbn_shared_ux_services.mdx +++ b/api_docs/kbn_shared_ux_services.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-services title: "@kbn/shared-ux-services" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-services plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-services'] 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. --- diff --git a/api_docs/kbn_shared_ux_storybook.mdx b/api_docs/kbn_shared_ux_storybook.mdx index 7643af3cf9f90..2ce78307c21c8 100644 --- a/api_docs/kbn_shared_ux_storybook.mdx +++ b/api_docs/kbn_shared_ux_storybook.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook title: "@kbn/shared-ux-storybook" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-storybook plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook'] 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. --- diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 31ccc6897e4cb..5d8a6344b7906 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-utility plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] 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. --- diff --git a/api_docs/kbn_sort_package_json.devdocs.json b/api_docs/kbn_sort_package_json.devdocs.json new file mode 100644 index 0000000000000..1c3fb56277e17 --- /dev/null +++ b/api_docs/kbn_sort_package_json.devdocs.json @@ -0,0 +1,59 @@ +{ + "id": "@kbn/sort-package-json", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/sort-package-json", + "id": "def-server.sortPackageJson", + "type": "Function", + "tags": [], + "label": "sortPackageJson", + "description": [], + "signature": [ + "(json: string) => string" + ], + "path": "packages/kbn-sort-package-json/src/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/sort-package-json", + "id": "def-server.sortPackageJson.$1", + "type": "string", + "tags": [], + "label": "json", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-sort-package-json/src/index.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx new file mode 100644 index 0000000000000..de6879b4cef66 --- /dev/null +++ b/api_docs/kbn_sort_package_json.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnSortPackageJsonPluginApi +slug: /kibana-dev-docs/api/kbn-sort-package-json +title: "@kbn/sort-package-json" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/sort-package-json plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] +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 kbnSortPackageJsonObj from './kbn_sort_package_json.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 2 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_std.devdocs.json b/api_docs/kbn_std.devdocs.json index 3c7b5119d2b21..95993490eec8d 100644 --- a/api_docs/kbn_std.devdocs.json +++ b/api_docs/kbn_std.devdocs.json @@ -55,7 +55,7 @@ ], "signature": [ "(iterable: ", - "IterableInput", + "ObservableInput", ", fn: ", "AsyncMapFn", ") => Promise" @@ -73,7 +73,7 @@ "Items to iterate" ], "signature": [ - "IterableInput", + "ObservableInput", "" ], "path": "packages/kbn-std/src/iteration/for_each.ts", @@ -112,7 +112,7 @@ ], "signature": [ "(iterable: ", - "IterableInput", + "ObservableInput", ", limit: number, fn: ", "AsyncMapFn", ") => Promise" @@ -130,7 +130,7 @@ "Items to iterate" ], "signature": [ - "IterableInput", + "ObservableInput", "" ], "path": "packages/kbn-std/src/iteration/for_each.ts", @@ -185,7 +185,7 @@ ], "signature": [ "(iterable: ", - "IterableInput", + "ObservableInput", ", fn: ", "AsyncMapFn", ") => Promise" @@ -203,7 +203,7 @@ "Items to iterate" ], "signature": [ - "IterableInput", + "ObservableInput", "" ], "path": "packages/kbn-std/src/iteration/map.ts", @@ -242,7 +242,7 @@ ], "signature": [ "(iterable: ", - "IterableInput", + "ObservableInput", ", limit: number, fn: ", "AsyncMapFn", ") => Promise" @@ -260,7 +260,7 @@ "Items to iterate" ], "signature": [ - "IterableInput", + "ObservableInput", "" ], "path": "packages/kbn-std/src/iteration/map.ts", @@ -370,40 +370,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/std", - "id": "def-server.firstValueFrom", - "type": "Function", - "tags": [], - "label": "firstValueFrom", - "description": [], - "signature": [ - "(source: ", - "Observable", - ") => Promise" - ], - "path": "packages/kbn-std/src/rxjs_7.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/std", - "id": "def-server.firstValueFrom.$1", - "type": "Object", - "tags": [], - "label": "source", - "description": [], - "signature": [ - "Observable", - "" - ], - "path": "packages/kbn-std/src/rxjs_7.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/std", "id": "def-server.get", @@ -806,40 +772,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/std", - "id": "def-server.lastValueFrom", - "type": "Function", - "tags": [], - "label": "lastValueFrom", - "description": [], - "signature": [ - "(source: ", - "Observable", - ") => Promise" - ], - "path": "packages/kbn-std/src/rxjs_7.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/std", - "id": "def-server.lastValueFrom.$1", - "type": "Object", - "tags": [], - "label": "source", - "description": [], - "signature": [ - "Observable", - "" - ], - "path": "packages/kbn-std/src/rxjs_7.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/std", "id": "def-server.map$", @@ -851,7 +783,7 @@ ], "signature": [ "(iterable: ", - "IterableInput", + "ObservableInput", ", fn: ", "AsyncMapFn", ") => ", @@ -871,7 +803,7 @@ "Items to iterate" ], "signature": [ - "IterableInput", + "ObservableInput", "" ], "path": "packages/kbn-std/src/iteration/observable.ts", @@ -941,7 +873,7 @@ ], "signature": [ "(iterable: ", - "IterableInput", + "ObservableInput", ", limit: number, fn: ", "AsyncMapFn", ") => ", @@ -961,7 +893,7 @@ "Items to iterate" ], "signature": [ - "IterableInput", + "ObservableInput", "" ], "path": "packages/kbn-std/src/iteration/observable.ts", diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index ad1559fa9ea9d..f998a00c60e83 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/std plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 96 | 1 | 63 | 2 | +| 92 | 1 | 59 | 1 | ## Server diff --git a/api_docs/kbn_stdio_dev_helpers.devdocs.json b/api_docs/kbn_stdio_dev_helpers.devdocs.json new file mode 100644 index 0000000000000..478b3ea7c54e8 --- /dev/null +++ b/api_docs/kbn_stdio_dev_helpers.devdocs.json @@ -0,0 +1,104 @@ +{ + "id": "@kbn/stdio-dev-helpers", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/stdio-dev-helpers", + "id": "def-server.observeLines", + "type": "Function", + "tags": [ + "return" + ], + "label": "observeLines", + "description": [ + "\n Creates an Observable from a Readable Stream that:\n - splits data from `readable` into lines\n - completes when `readable` emits \"end\"\n - fails if `readable` emits \"errors\"\n" + ], + "signature": [ + "(readable: ", + "Readable", + ") => ", + "Observable", + "" + ], + "path": "packages/kbn-stdio-dev-helpers/src/observe_lines.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/stdio-dev-helpers", + "id": "def-server.observeLines.$1", + "type": "Object", + "tags": [], + "label": "readable", + "description": [], + "signature": [ + "Readable" + ], + "path": "packages/kbn-stdio-dev-helpers/src/observe_lines.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/stdio-dev-helpers", + "id": "def-server.observeReadable", + "type": "Function", + "tags": [], + "label": "observeReadable", + "description": [ + "\n Produces an Observable from a ReadableSteam that:\n - completes on the first \"end\" event\n - fails on the first \"error\" event" + ], + "signature": [ + "(readable: ", + "Readable", + ") => ", + "Observable", + "" + ], + "path": "packages/kbn-stdio-dev-helpers/src/observe_readable.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/stdio-dev-helpers", + "id": "def-server.observeReadable.$1", + "type": "Object", + "tags": [], + "label": "readable", + "description": [], + "signature": [ + "Readable" + ], + "path": "packages/kbn-stdio-dev-helpers/src/observe_readable.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx new file mode 100644 index 0000000000000..0397b21fa5d78 --- /dev/null +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnStdioDevHelpersPluginApi +slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers +title: "@kbn/stdio-dev-helpers" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/stdio-dev-helpers plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] +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 kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 4 | 0 | 2 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 98453e30ef707..c44717161b692 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/storybook plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] 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. --- diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 0e9beedb79fde..e925254e723ee 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/telemetry-tools plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] 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. --- diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index f44a7d8a0b889..5edb2515010a2 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/test plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] 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. --- diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 4c9edbd805851..0f711e998f1c7 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/test-jest-helpers plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] 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. --- diff --git a/api_docs/kbn_tooling_log.devdocs.json b/api_docs/kbn_tooling_log.devdocs.json new file mode 100644 index 0000000000000..6442d3feca9f3 --- /dev/null +++ b/api_docs/kbn_tooling_log.devdocs.json @@ -0,0 +1,1251 @@ +{ + "id": "@kbn/tooling-log", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog", + "type": "Class", + "tags": [], + "label": "ToolingLog", + "description": [], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "writerConfig", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.ToolingLogTextWriterConfig", + "text": "ToolingLogTextWriterConfig" + }, + " | undefined" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.ToolingLogOptions", + "text": "ToolingLogOptions" + }, + " | undefined" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.getIndent", + "type": "Function", + "tags": [], + "label": "getIndent", + "description": [ + "\nGet the current indentation level of the ToolingLog" + ], + "signature": [ + "() => number" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.indent", + "type": "Function", + "tags": [], + "label": "indent", + "description": [], + "signature": [ + "{ (delta: number): void; (delta: number, block: () => Promise): Promise; (delta: number, block: () => T): T; }" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.indent.$1", + "type": "number", + "tags": [], + "label": "delta", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.indent.$2", + "type": "Function", + "tags": [], + "label": "block", + "description": [], + "signature": [ + "(() => T | Promise) | undefined" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.verbose", + "type": "Function", + "tags": [], + "label": "verbose", + "description": [], + "signature": [ + "(...args: any[]) => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.verbose.$1", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.debug", + "type": "Function", + "tags": [], + "label": "debug", + "description": [], + "signature": [ + "(...args: any[]) => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.debug.$1", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.info", + "type": "Function", + "tags": [], + "label": "info", + "description": [], + "signature": [ + "(...args: any[]) => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.info.$1", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.success", + "type": "Function", + "tags": [], + "label": "success", + "description": [], + "signature": [ + "(...args: any[]) => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.success.$1", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.warning", + "type": "Function", + "tags": [], + "label": "warning", + "description": [], + "signature": [ + "(...args: any[]) => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.warning.$1", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.error", + "type": "Function", + "tags": [], + "label": "error", + "description": [], + "signature": [ + "(error: string | Error) => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.error.$1", + "type": "CompoundType", + "tags": [], + "label": "error", + "description": [], + "signature": [ + "string | Error" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.write", + "type": "Function", + "tags": [], + "label": "write", + "description": [], + "signature": [ + "(...args: any[]) => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.write.$1", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.getWriters", + "type": "Function", + "tags": [], + "label": "getWriters", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Writer", + "text": "Writer" + }, + "[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.setWriters", + "type": "Function", + "tags": [], + "label": "setWriters", + "description": [], + "signature": [ + "(writers: ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Writer", + "text": "Writer" + }, + "[]) => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.setWriters.$1", + "type": "Array", + "tags": [], + "label": "writers", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Writer", + "text": "Writer" + }, + "[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.getWritten$", + "type": "Function", + "tags": [], + "label": "getWritten$", + "description": [], + "signature": [ + "() => ", + "Observable", + "<", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + }, + ">" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.withType", + "type": "Function", + "tags": [], + "label": "withType", + "description": [ + "\nCreate a new ToolingLog which sets a different \"type\", allowing messages to be filtered out by \"source\"" + ], + "signature": [ + "(type: string) => ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.ToolingLog", + "text": "ToolingLog" + } + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLog.withType.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "A string that will be passed along with messages from this logger which can be used to filter messages with `ignoreSources`" + ], + "signature": [ + "string" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogCollectingWriter", + "type": "Class", + "tags": [], + "label": "ToolingLogCollectingWriter", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.ToolingLogCollectingWriter", + "text": "ToolingLogCollectingWriter" + }, + " extends ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.ToolingLogTextWriter", + "text": "ToolingLogTextWriter" + } + ], + "path": "packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogCollectingWriter.messages", + "type": "Array", + "tags": [], + "label": "messages", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogCollectingWriter.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogCollectingWriter.Unnamed.$1", + "type": "CompoundType", + "tags": [], + "label": "level", + "description": [], + "signature": [ + "\"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\"" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogCollectingWriter.write", + "type": "Function", + "tags": [], + "label": "write", + "description": [ + "\nCalled by ToolingLog, extends messages with the source if message includes one." + ], + "signature": [ + "(msg: ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + }, + ") => boolean" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogCollectingWriter.write.$1", + "type": "Object", + "tags": [], + "label": "msg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + } + ], + "path": "packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter", + "type": "Class", + "tags": [], + "label": "ToolingLogTextWriter", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.ToolingLogTextWriter", + "text": "ToolingLogTextWriter" + }, + " implements ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Writer", + "text": "Writer" + } + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.level", + "type": "Object", + "tags": [], + "label": "level", + "description": [], + "signature": [ + "{ name: \"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\"; flags: { error: boolean; success: boolean; warning: boolean; info: boolean; debug: boolean; silent: boolean; verbose: boolean; }; }" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.writeTo", + "type": "Object", + "tags": [], + "label": "writeTo", + "description": [], + "signature": [ + "{ write(msg: string): void; }" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.ToolingLogTextWriterConfig", + "text": "ToolingLogTextWriterConfig" + } + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.write", + "type": "Function", + "tags": [], + "label": "write", + "description": [], + "signature": [ + "(msg: ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + }, + ") => boolean" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.write.$1", + "type": "Object", + "tags": [], + "label": "msg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + } + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.write", + "type": "Function", + "tags": [], + "label": "write", + "description": [], + "signature": [ + "(writeTo: { write(msg: string): void; }, prefix: string, msg: ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + }, + ") => void" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.write.$1", + "type": "Object", + "tags": [], + "label": "writeTo", + "description": [], + "signature": [ + "{ write(msg: string): void; }" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.write.$2", + "type": "string", + "tags": [], + "label": "prefix", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriter.write.$3", + "type": "Object", + "tags": [], + "label": "msg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + } + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.getLogLevelFlagsHelp", + "type": "Function", + "tags": [], + "label": "getLogLevelFlagsHelp", + "description": [], + "signature": [ + "(defaultLogLevel: string) => string" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.getLogLevelFlagsHelp.$1", + "type": "string", + "tags": [], + "label": "defaultLogLevel", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.parseLogLevel", + "type": "Function", + "tags": [], + "label": "parseLogLevel", + "description": [], + "signature": [ + "(name: \"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\") => { name: \"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\"; flags: { error: boolean; success: boolean; warning: boolean; info: boolean; debug: boolean; silent: boolean; verbose: boolean; }; }" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.parseLogLevel.$1", + "type": "CompoundType", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "\"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\"" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.pickLevelFromFlags", + "type": "Function", + "tags": [], + "label": "pickLevelFromFlags", + "description": [], + "signature": [ + "(flags: Record, options: { default?: \"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\" | undefined; }) => \"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\"" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.pickLevelFromFlags.$1", + "type": "Object", + "tags": [], + "label": "flags", + "description": [], + "signature": [ + "Record" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.pickLevelFromFlags.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.pickLevelFromFlags.$2.default", + "type": "CompoundType", + "tags": [], + "label": "default", + "description": [], + "signature": [ + "\"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\" | undefined" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.Message", + "type": "Interface", + "tags": [], + "label": "Message", + "description": [ + "\nThe object shape passed to ToolingLog writers each time the log is used." + ], + "path": "packages/kbn-tooling-log/src/message.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.Message.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [ + "level/type of message" + ], + "signature": [ + "\"error\" | \"success\" | \"warning\" | \"write\" | \"info\" | \"debug\" | \"verbose\"" + ], + "path": "packages/kbn-tooling-log/src/message.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.Message.indent", + "type": "number", + "tags": [], + "label": "indent", + "description": [ + "indentation intended when message written to a text log" + ], + "path": "packages/kbn-tooling-log/src/message.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.Message.source", + "type": "string", + "tags": [], + "label": "source", + "description": [ + "type of logger this message came from" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-tooling-log/src/message.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.Message.args", + "type": "Array", + "tags": [], + "label": "args", + "description": [ + "args passed to the logging method" + ], + "signature": [ + "any[]" + ], + "path": "packages/kbn-tooling-log/src/message.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogOptions", + "type": "Interface", + "tags": [], + "label": "ToolingLogOptions", + "description": [], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogOptions.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\ntype name for this logger, will be assigned to the \"source\"\nproperties of messages produced by this logger" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogOptions.parent", + "type": "Object", + "tags": [], + "label": "parent", + "description": [ + "\nparent ToolingLog. When a ToolingLog has a parent they will both\nshare indent and writers state. Changing the indent width or\nwriters on either log will update the other too." + ], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.ToolingLog", + "text": "ToolingLog" + }, + " | undefined" + ], + "path": "packages/kbn-tooling-log/src/tooling_log.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriterConfig", + "type": "Interface", + "tags": [], + "label": "ToolingLogTextWriterConfig", + "description": [], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriterConfig.level", + "type": "CompoundType", + "tags": [], + "label": "level", + "description": [ + "\nLog level, messages below this level will be ignored" + ], + "signature": [ + "\"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\"" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriterConfig.ignoreSources", + "type": "Array", + "tags": [], + "label": "ignoreSources", + "description": [ + "\nList of message sources/ToolingLog types which will be ignored. Create\na logger with `ToolingLog#withType()` to create messages with a specific\nsource. Ignored messages will be dropped without writing." + ], + "signature": [ + "string[] | undefined" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ToolingLogTextWriterConfig.writeTo", + "type": "Object", + "tags": [], + "label": "writeTo", + "description": [ + "\nTarget which will receive formatted message lines, a common value for `writeTo`\nis process.stdout" + ], + "signature": [ + "{ write(s: string): void; }" + ], + "path": "packages/kbn-tooling-log/src/tooling_log_text_writer.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.Writer", + "type": "Interface", + "tags": [], + "label": "Writer", + "description": [ + "\nAn object which received ToolingLog `Messages` and sends them to\nsome interface for collecting logs like stdio, or a file" + ], + "path": "packages/kbn-tooling-log/src/writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.Writer.write", + "type": "Function", + "tags": [], + "label": "write", + "description": [ + "\nCalled with every log message, should return true if the message\nwas written and false if it was ignored." + ], + "signature": [ + "(msg: ", + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + }, + ") => boolean" + ], + "path": "packages/kbn-tooling-log/src/writer.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.Writer.write.$1", + "type": "Object", + "tags": [], + "label": "msg", + "description": [ + "The log message to write" + ], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "server", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-server.Message", + "text": "Message" + } + ], + "path": "packages/kbn-tooling-log/src/writer.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.DEFAULT_LOG_LEVEL", + "type": "string", + "tags": [], + "label": "DEFAULT_LOG_LEVEL", + "description": [], + "signature": [ + "\"info\"" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.LOG_LEVEL_FLAGS", + "type": "Array", + "tags": [], + "label": "LOG_LEVEL_FLAGS", + "description": [], + "signature": [ + "{ name: string; help: string; }[]" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.LogLevel", + "type": "Type", + "tags": [], + "label": "LogLevel", + "description": [], + "signature": [ + "\"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\"" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/tooling-log", + "id": "def-server.ParsedLogLevel", + "type": "Type", + "tags": [], + "label": "ParsedLogLevel", + "description": [], + "signature": [ + "{ name: \"error\" | \"success\" | \"warning\" | \"info\" | \"debug\" | \"silent\" | \"verbose\"; flags: { error: boolean; success: boolean; warning: boolean; info: boolean; debug: boolean; silent: boolean; verbose: boolean; }; }" + ], + "path": "packages/kbn-tooling-log/src/log_levels.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx new file mode 100644 index 0000000000000..7dcb0b67415cb --- /dev/null +++ b/api_docs/kbn_tooling_log.mdx @@ -0,0 +1,36 @@ +--- +id: kibKbnToolingLogPluginApi +slug: /kibana-dev-docs/api/kbn-tooling-log +title: "@kbn/tooling-log" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/tooling-log plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] +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 kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 72 | 0 | 55 | 0 | + +## Server + +### Functions + + +### Classes + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index 385d3c755dfe2..c715205758b5e 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/type-summarizer plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] 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. --- diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 02f14ac7a325b..66d08cdf52378 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/typed-react-router-config plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] 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. --- diff --git a/api_docs/kbn_ui_theme.devdocs.json b/api_docs/kbn_ui_theme.devdocs.json index c4272d206e8bd..bcfd5d506638a 100644 --- a/api_docs/kbn_ui_theme.devdocs.json +++ b/api_docs/kbn_ui_theme.devdocs.json @@ -52,7 +52,7 @@ "label": "Theme", "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; 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "packages/kbn-ui-theme/src/theme.ts", "deprecated": false, @@ -82,7 +82,7 @@ "label": "euiDarkVars", "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; 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "packages/kbn-ui-theme/src/theme.ts", "deprecated": false, @@ -96,7 +96,7 @@ "label": "euiLightVars", "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; 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "packages/kbn-ui-theme/src/theme.ts", "deprecated": false, @@ -112,7 +112,7 @@ "\nEUI Theme vars that automatically adjust to light/dark theme" ], "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; 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "packages/kbn-ui-theme/src/theme.ts", "deprecated": false, diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 48796dd5266f6..bb34a249143f0 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ui-theme plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] 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. --- diff --git a/api_docs/kbn_utility_types.devdocs.json b/api_docs/kbn_utility_types.devdocs.json index 2734d6eadc135..bb3eb25102399 100644 --- a/api_docs/kbn_utility_types.devdocs.json +++ b/api_docs/kbn_utility_types.devdocs.json @@ -249,6 +249,22 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/utility-types", + "id": "def-server.AwaitedProperties", + "type": "Type", + "tags": [], + "label": "AwaitedProperties", + "description": [ + "\nUnwrap all promise attributes of the given type" + ], + "signature": [ + "{ [K in keyof T]: Awaited; }" + ], + "path": "packages/kbn-utility-types/src/index.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/utility-types", "id": "def-server.Class", diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index f000ebff89f1f..5af644c15e127 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utility-types plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] 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. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 27 | 0 | 10 | 1 | +| 28 | 0 | 10 | 1 | ## Server diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 5359a84655647..3ada49f8bdb89 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] 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. --- diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index e61834056f960..155ccdd4f45b8 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaOverview plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index fa0be3526203f..36fdcb2139cdf 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -885,7 +885,9 @@ "parentPluginId": "kibanaReact", "id": "def-public.KibanaPageTemplate", "type": "Function", - "tags": [], + "tags": [ + "deprecated" + ], "label": "KibanaPageTemplate", "description": [], "signature": [ @@ -900,7 +902,193 @@ ">) => JSX.Element" ], "path": "src/plugins/kibana_react/public/page_template/page_template.tsx", - "deprecated": false, + "deprecated": true, + "references": [ + { + "plugin": "management", + "path": "src/plugins/management/public/components/management_app/management_app.tsx" + }, + { + "plugin": "management", + "path": "src/plugins/management/public/components/management_app/management_app.tsx" + }, + { + "plugin": "management", + "path": "src/plugins/management/public/components/management_app/management_app.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/space_selector/space_selector.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/space_selector/space_selector.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/space_selector/space_selector.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/public/components/home/home.component.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/public/components/home/home.component.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/public/components/home/home.component.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/shared/version_mismatch/version_mismatch_page.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/shared/version_mismatch/version_mismatch_page.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/shared/version_mismatch/version_mismatch_page.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/app_search/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/app_search/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/app_search/components/error_connecting/error_connecting.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/workplace_search/views/error_state/error_state.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/workplace_search/views/error_state/error_state.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/workplace_search/views/error_state/error_state.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/components/empty_state.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/components/empty_state.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/overview/overview.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/overview/overview.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/overview/overview.tsx" + } + ], "children": [ { "parentPluginId": "kibanaReact", @@ -1689,44 +1877,44 @@ "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/shared_imports.ts" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/lib/alert_types/alert_messages.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/lib/alert_types/alert_messages.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/lib/alert_types/alert_messages.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/uptime_app.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/lib/alert_types/alert_messages.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/uptime_app.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/lib/alert_types/alert_messages.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/uptime_app.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/lib/alert_types/alert_messages.tsx" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/shared_imports.ts" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/apps/uptime_app.tsx" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/apps/uptime_app.tsx" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/apps/uptime_app.tsx" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" }, { "plugin": "ux", @@ -3370,6 +3558,25 @@ ], "path": "src/plugins/kibana_react/public/table_list_view/table_list_view.tsx", "deprecated": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.TableListViewProps.application", + "type": "Object", + "tags": [], + "label": "application", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreApplicationPluginApi", + "section": "def-public.ApplicationStart", + "text": "ApplicationStart" + } + ], + "path": "src/plugins/kibana_react/public/table_list_view/table_list_view.tsx", + "deprecated": false } ], "initialIsOpen": false @@ -3884,7 +4091,9 @@ "parentPluginId": "kibanaReact", "id": "def-public.KibanaPageTemplateProps", "type": "Type", - "tags": [], + "tags": [ + "deprecated" + ], "label": "KibanaPageTemplateProps", "description": [ "\nA thin wrapper around EuiPageTemplate with a few Kibana specific additions" @@ -3919,7 +4128,169 @@ " | undefined; }" ], "path": "src/plugins/kibana_react/public/page_template/page_template.tsx", - "deprecated": false, + "deprecated": true, + "references": [ + { + "plugin": "management", + "path": "src/plugins/management/public/components/management_app/management_app.tsx" + }, + { + "plugin": "management", + "path": "src/plugins/management/public/components/management_app/management_app.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/components/shared/page_template/page_template.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/utils/no_data_config.ts" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/utils/no_data_config.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/public/pages/logs/page_template.tsx" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/public/pages/logs/page_template.tsx" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/public/pages/metrics/page_template.tsx" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/public/pages/metrics/page_template.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/templates/no_data_config.ts" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/templates/no_data_config.ts" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/templates/apm_main_template.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/templates/apm_main_template.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/templates/service_group_template.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/templates/service_group_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/csp_page_template.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/pages/rules/index.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/pages/rules/index.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/shared/layout/page_template.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_primary_navigation.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_primary_navigation.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/use_no_data_config.ts" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/use_no_data_config.ts" + }, + { + "plugin": "ux", + "path": "x-pack/plugins/ux/public/components/app/rum_dashboard/rum_home.tsx" + }, + { + "plugin": "ux", + "path": "x-pack/plugins/ux/public/components/app/rum_dashboard/rum_home.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/overview/overview.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/overview/overview.tsx" + } + ], "initialIsOpen": false }, { @@ -4333,14 +4704,6 @@ { "plugin": "dashboard", "path": "src/plugins/dashboard/public/plugin.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/connected_components/map_container/map_container.tsx" } ], "initialIsOpen": false @@ -4793,7 +5156,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; 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: 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; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: 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; 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; 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; euiLoadingSpinnerSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: 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; euiTextColors: { default: string; subdued: 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; success: string; warning: string; danger: string; subdued: string; ghost: string; text: 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; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; 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; euiTooltipBorderColor: 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; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "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 60767318538de..3def8e96dfcf8 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaReact plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] 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. --- @@ -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 | |-------------------|-----------|------------------------|-----------------| -| 239 | 0 | 203 | 5 | +| 240 | 0 | 204 | 5 | ## Client diff --git a/api_docs/kibana_utils.devdocs.json b/api_docs/kibana_utils.devdocs.json index 18bb3b4a35d4a..ff686632d0f4a 100644 --- a/api_docs/kibana_utils.devdocs.json +++ b/api_docs/kibana_utils.devdocs.json @@ -7606,6 +7606,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -7680,7 +7684,9 @@ "section": "def-server.ResponseErrorAttributes", "text": "ResponseErrorAttributes" }, - " | undefined; }>" + " | undefined; } | Buffer | ", + "Stream", + ">" ], "path": "src/plugins/kibana_utils/server/report_server_error.ts", "deprecated": false, @@ -7821,6 +7827,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index e049912e4e732..b639f92c9c96c 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaUtils plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] 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. --- diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json index 53b0ee481dc97..ae98881027a3b 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -335,13 +335,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }>" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", @@ -491,7 +485,7 @@ "section": "def-common.Datatable", "text": "Datatable" }, - "> | undefined) => Record<\"enabled\" | \"disabled\", { kuery: ", + "> | undefined) => Record<\"disabled\" | \"enabled\", { kuery: ", "Query", "[][]; lucene: ", "Query", @@ -1958,13 +1952,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined" ], "path": "x-pack/plugins/lens/common/types.ts", @@ -2403,13 +2391,7 @@ "label": "mainPalette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined" ], "path": "x-pack/plugins/lens/public/types.ts", @@ -2615,7 +2597,7 @@ "label": "params", "description": [], "signature": [ - "{ size: number; orderBy: { type: \"alphabetical\"; fallback?: boolean | undefined; } | { type: \"rare\"; maxDocCount: number; } | { type: \"column\"; columnId: string; }; orderDirection: \"asc\" | \"desc\"; otherBucket?: boolean | undefined; missingBucket?: boolean | undefined; secondaryFields?: string[] | undefined; format?: ", + "{ size: number; accuracyMode?: boolean | undefined; orderBy: { type: \"alphabetical\"; fallback?: boolean | undefined; } | { type: \"rare\"; maxDocCount: number; } | { type: \"column\"; columnId: string; }; orderDirection: \"asc\" | \"desc\"; otherBucket?: boolean | undefined; missingBucket?: boolean | undefined; secondaryFields?: string[] | undefined; format?: ", "ValueFormatConfig", " | undefined; parentFormat?: { id: string; } | undefined; }" ], @@ -2708,13 +2690,7 @@ ], "signature": [ "(addNewLayer: () => string, state?: T | undefined, mainPalette?: ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined) => T" ], "path": "x-pack/plugins/lens/public/types.ts", @@ -2756,13 +2732,7 @@ "label": "mainPalette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined" ], "path": "x-pack/plugins/lens/public/types.ts", @@ -2781,13 +2751,7 @@ "description": [], "signature": [ "((state: T) => ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined) | undefined" ], "path": "x-pack/plugins/lens/public/types.ts", @@ -3805,15 +3769,9 @@ "label": "toExpression", "description": [], "signature": [ - "(state: T, datasourceLayers: Record, attributes?: Partial<{ title: string; description: string; }> | undefined) => string | ", + "(state: T, datasourceLayers: ", + "DatasourceLayers", + ", attributes?: Partial<{ title: string; description: string; }> | undefined) => string | ", { "pluginId": "expressions", "scope": "common", @@ -3848,15 +3806,7 @@ "label": "datasourceLayers", "description": [], "signature": [ - "Record" + "DatasourceLayers" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -3889,15 +3839,9 @@ "\nExpression to render a preview version of the chart in very constrained space.\nIf there is no expression provided, the preview icon is used." ], "signature": [ - "((state: T, datasourceLayers: Record) => string | ", + "((state: T, datasourceLayers: ", + "DatasourceLayers", + ") => string | ", { "pluginId": "expressions", "scope": "common", @@ -3932,15 +3876,7 @@ "label": "datasourceLayers", "description": [], "signature": [ - "Record" + "DatasourceLayers" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -3959,15 +3895,9 @@ "\nThe frame will call this function on all visualizations at few stages (pre-build/build error) in order\nto provide more context to the error and show it to the user" ], "signature": [ - "(state: T, datasourceLayers?: Record | undefined) => { shortMessage: string; longMessage: React.ReactNode; }[] | undefined" + "(state: T, datasourceLayers?: ", + "DatasourceLayers", + " | undefined) => { shortMessage: string; longMessage: React.ReactNode; }[] | undefined" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -3994,15 +3924,8 @@ "label": "datasourceLayers", "description": [], "signature": [ - "Record | undefined" + "DatasourceLayers", + " | undefined" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -4822,13 +4745,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined" ], "path": "x-pack/plugins/lens/public/xy_visualization/types.ts", @@ -7445,37 +7362,13 @@ "description": [], "signature": [ "{ columns: { palette?: ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<", - { - "pluginId": "lens", - "scope": "common", - "docId": "kibLensPluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", "> | undefined; colorMode?: \"none\" | \"text\" | \"cell\" | undefined; }[]; } | { palette?: ", - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<", - { - "pluginId": "lens", - "scope": "common", - "docId": "kibLensPluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", "> | undefined; }" ], "path": "x-pack/plugins/lens/server/migrations/types.ts", @@ -7769,203 +7662,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "lens", - "id": "def-common.ColorStop", - "type": "Interface", - "tags": [], - "label": "ColorStop", - "description": [], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "lens", - "id": "def-common.ColorStop.color", - "type": "string", - "tags": [], - "label": "color", - "description": [], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.ColorStop.stop", - "type": "number", - "tags": [], - "label": "stop", - "description": [], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams", - "type": "Interface", - "tags": [], - "label": "CustomPaletteParams", - "description": [], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.reverse", - "type": "CompoundType", - "tags": [], - "label": "reverse", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.rangeType", - "type": "CompoundType", - "tags": [], - "label": "rangeType", - "description": [], - "signature": [ - "\"number\" | \"percent\" | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.continuity", - "type": "CompoundType", - "tags": [], - "label": "continuity", - "description": [], - "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" - }, - " | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.progression", - "type": "string", - "tags": [], - "label": "progression", - "description": [], - "signature": [ - "\"fixed\" | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.rangeMin", - "type": "number", - "tags": [], - "label": "rangeMin", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.rangeMax", - "type": "number", - "tags": [], - "label": "rangeMax", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.stops", - "type": "Array", - "tags": [], - "label": "stops", - "description": [], - "signature": [ - { - "pluginId": "lens", - "scope": "common", - "docId": "kibLensPluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[] | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.colorStops", - "type": "Array", - "tags": [], - "label": "colorStops", - "description": [], - "signature": [ - { - "pluginId": "lens", - "scope": "common", - "docId": "kibLensPluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" - }, - "[] | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "lens", - "id": "def-common.CustomPaletteParams.steps", - "type": "number", - "tags": [], - "label": "steps", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "lens", "id": "def-common.DateRange", @@ -8271,21 +7967,9 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<", - { - "pluginId": "lens", - "scope": "common", - "docId": "kibLensPluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", "> | undefined" ], "path": "x-pack/plugins/lens/common/types.ts", @@ -8527,13 +8211,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined" ], "path": "x-pack/plugins/lens/common/types.ts", @@ -8833,13 +8511,7 @@ "label": "CustomPaletteParamsConfig", "description": [], "signature": [ - { - "pluginId": "lens", - "scope": "common", - "docId": "kibLensPluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, + "CustomPaletteParams", " & { maxSteps?: number | undefined; }" ], "path": "x-pack/plugins/lens/common/types.ts", @@ -9083,28 +8755,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "lens", - "id": "def-common.RequiredPaletteParamTypes", - "type": "Type", - "tags": [], - "label": "RequiredPaletteParamTypes", - "description": [], - "signature": [ - "Required<", - { - "pluginId": "lens", - "scope": "common", - "docId": "kibLensPluginApi", - "section": "def-common.CustomPaletteParams", - "text": "CustomPaletteParams" - }, - "> & { maxSteps?: number | undefined; }" - ], - "path": "x-pack/plugins/lens/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "lens", "id": "def-common.SortingHint", diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 2974c7140ed53..13b19ffe60e56 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github summary: API docs for the lens plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] 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. --- @@ -18,7 +18,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 542 | 0 | 467 | 29 | +| 527 | 0 | 452 | 30 | ## Client diff --git a/api_docs/license_api_guard.devdocs.json b/api_docs/license_api_guard.devdocs.json index 3cb1dbcca2a83..06339738fe611 100644 --- a/api_docs/license_api_guard.devdocs.json +++ b/api_docs/license_api_guard.devdocs.json @@ -230,6 +230,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -420,6 +424,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -638,6 +646,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index ff9b643e9d694..875d654c0267b 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github summary: API docs for the licenseApiGuard plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] 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. --- diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index f2ad339d8c0d8..d81ae2975260d 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the licenseManagement plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] 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. --- diff --git a/api_docs/licensing.devdocs.json b/api_docs/licensing.devdocs.json index 7d63612c554c2..264859dfa2e6a 100644 --- a/api_docs/licensing.devdocs.json +++ b/api_docs/licensing.devdocs.json @@ -1037,6 +1037,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -1227,6 +1231,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", @@ -1449,6 +1457,8 @@ "section": "def-server.ResponseError", "text": "ResponseError" }, + " | Buffer | ", + "Stream", ">) => ", "KibanaResponse", "; redirected: (options: ", + " | undefined; } | Buffer | ", + "Stream", + ">; redirected: (options: ", { "pluginId": "core", "scope": "server", diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index e9208ee1f9f8e..cb395af82c70a 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github summary: API docs for the licensing plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] 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. --- diff --git a/api_docs/lists.devdocs.json b/api_docs/lists.devdocs.json index 950e244c88b49..a2134a2c8ffb3 100644 --- a/api_docs/lists.devdocs.json +++ b/api_docs/lists.devdocs.json @@ -311,7 +311,7 @@ "label": "exceptionItems", "description": [], "signature": [ - "({ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }))[]" + "({ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } | ({ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { field: string; list: { id: string; type: \"boolean\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; } | { 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\"; })[]; list_id: string; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; namespace_type?: \"single\" | \"agnostic\" | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }))[]" ], "path": "x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx", "deprecated": false @@ -324,7 +324,7 @@ "label": "exceptionsToDelete", "description": [], "signature": [ - "{ _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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; }[]" + "{ _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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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/public/exceptions/components/builder/exception_items_renderer.tsx", "deprecated": false @@ -463,7 +463,9 @@ "type": "Class", "tags": [], "label": "ExceptionListClient", - "description": [], + "description": [ + "\nClass for use for exceptions that are with trusted applications or\nwith rules." + ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, "children": [ @@ -473,7 +475,9 @@ "type": "Function", "tags": [], "label": "Constructor", - "description": [], + "description": [ + "\nConstructs the exception list" + ], "signature": [ "any" ], @@ -501,12 +505,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.getExceptionList", "type": "Function", - "tags": [ - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "getExceptionList", "description": [ "\nFetch an exception list parent container" @@ -535,20 +534,14 @@ } ], "returnComment": [ - "the found exception list or null if none exists" + "The found exception list or null if none exists" ] }, { "parentPluginId": "lists", "id": "def-server.ExceptionListClient.getExceptionListSummary", "type": "Function", - "tags": [ - "params", - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "getExceptionListSummary", "description": [ "\nFetch an exception list parent container" @@ -577,19 +570,14 @@ } ], "returnComment": [ - "summary of exception list item os types" + "Summary of exception list item os types" ] }, { "parentPluginId": "lists", "id": "def-server.ExceptionListClient.getExceptionListItem", "type": "Function", - "tags": [ - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "getExceptionListItem", "description": [ "\nFetch an exception list item container" @@ -597,7 +585,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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, @@ -655,7 +643,9 @@ "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The exception list schema or null if it does not exist" + ] }, { "parentPluginId": "lists", @@ -669,7 +659,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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, @@ -689,7 +679,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The exception list item created, otherwise null if not created" + ] }, { "parentPluginId": "lists", @@ -703,7 +695,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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, @@ -723,7 +715,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The exception list item updated, otherwise null if not updated" + ] }, { "parentPluginId": "lists", @@ -737,7 +731,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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, @@ -757,24 +751,15 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The exception list item found, otherwise null" + ] }, { "parentPluginId": "lists", "id": "def-server.ExceptionListClient.createExceptionList", "type": "Function", - "tags": [ - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "createExceptionList", "description": [ "\nCreate an exception list container" @@ -810,19 +795,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.updateExceptionList", "type": "Function", - "tags": [ - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "updateExceptionList", "description": [ "\nUpdate an existing exception list container" @@ -858,12 +831,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.deleteExceptionList", "type": "Function", - "tags": [ - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "deleteExceptionList", "description": [ "\nDelete an exception list container by either id or list_id" @@ -899,19 +867,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.createExceptionListItem", "type": "Function", - "tags": [ - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "createExceptionListItem", "description": [ "\nCreate an exception list item container" @@ -925,7 +881,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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, @@ -959,21 +915,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.updateExceptionListItem", "type": "Function", - "tags": [ - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "updateExceptionListItem", "description": [ "\nUpdate an existing exception list item" @@ -987,7 +929,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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, @@ -1021,12 +963,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.deleteExceptionListItem", "type": "Function", - "tags": [ - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "deleteExceptionListItem", "description": [ "\nDelete an exception list item by either id or item_id" @@ -1034,7 +971,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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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, @@ -1062,11 +999,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.deleteExceptionListItemById", "type": "Function", - "tags": [ - "params", - "params", - "return" - ], + "tags": [], "label": "deleteExceptionListItemById", "description": [ "\nDelete an exception list item by id" @@ -1103,12 +1036,12 @@ "tags": [], "label": "deleteEndpointListItem", "description": [ - "\nThis is the same as \"deleteExceptionListItem\" except it applies specifically to the endpoint list." + "\nThis is the same as \"deleteExceptionListItem\" except it applies specifically to the endpoint list.\nEither id or itemId has to be defined to delete but not both is required. If both are provided, the id\nis preferred." ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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, @@ -1136,11 +1069,13 @@ "type": "Function", "tags": [], "label": "findExceptionListItem", - "description": [], + "description": [ + "\nFinds an exception list item given a set of criteria." + ], "signature": [ "({ listId, filter, perPage, pit, page, searchAfter, 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }) | 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }) | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -1160,7 +1095,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The found exception list items or null if nothing is found" + ] }, { "parentPluginId": "lists", @@ -1168,11 +1105,13 @@ "type": "Function", "tags": [], "label": "findExceptionListsItem", - "description": [], + "description": [ + "\nFinds exception lists items given a set of criteria." + ], "signature": [ "({ listId, filter, perPage, pit, page, searchAfter, 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }) | 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }) | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -1192,7 +1131,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The found exception lists items or null if nothing is found" + ] }, { "parentPluginId": "lists", @@ -1200,11 +1141,13 @@ "type": "Function", "tags": [], "label": "findValueListExceptionListItems", - "description": [], + "description": [ + "\nFinds value list exception items given a set of criteria." + ], "signature": [ "({ perPage, pit, page, searchAfter, 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }) | 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }) | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -1224,7 +1167,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The found value list exception list item or null if nothing is found" + ] }, { "parentPluginId": "lists", @@ -1232,7 +1177,9 @@ "type": "Function", "tags": [], "label": "findExceptionList", - "description": [], + "description": [ + "\nFinds exception lists given a set of criteria." + ], "signature": [ "({ filter, perPage, page, pit, searchAfter, sortField, sortOrder, namespaceType, }: ", "FindExceptionListOptions", @@ -1256,7 +1203,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The found exception lists or null if nothing is found" + ] }, { "parentPluginId": "lists", @@ -1270,7 +1219,7 @@ "signature": [ "({ filter, perPage, page, pit, searchAfter, 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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }) | 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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; } & { pit?: string | undefined; }) | null>" ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", "deprecated": false, @@ -1290,18 +1239,15 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The found exception list items or null if nothing is found" + ] }, { "parentPluginId": "lists", "id": "def-server.ExceptionListClient.exportExceptionListAndItems", "type": "Function", - "tags": [ - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "exportExceptionListAndItems", "description": [ "\nExport an exception list parent container and it's items" @@ -1345,12 +1291,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.importExceptionListAndItems", "type": "Function", - "tags": [ - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "importExceptionListAndItems", "description": [ "\nImport exception lists parent containers and items as stream" @@ -1386,12 +1327,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.importExceptionListAndItemsAsArray", "type": "Function", - "tags": [ - "params", - "params", - "params", - "return" - ], + "tags": [], "label": "importExceptionListAndItemsAsArray", "description": [ "\nImport exception lists parent containers and items as array" @@ -1427,11 +1363,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.openPointInTime", "type": "Function", - "tags": [ - "params", - "params", - "return" - ], + "tags": [], "label": "openPointInTime", "description": [ "\nOpens a point in time (PIT) for either exception lists or exception list items.\nSee: https://www.elastic.co/guide/en/elasticsearch/reference/current/point-in-time-api.html" @@ -1475,10 +1407,7 @@ "parentPluginId": "lists", "id": "def-server.ExceptionListClient.closePointInTime", "type": "Function", - "tags": [ - "params", - "return" - ], + "tags": [], "label": "closePointInTime", "description": [ "\nCloses a point in time (PIT) for either exception lists or exception list items.\nSee: https://www.elastic.co/guide/en/elasticsearch/reference/current/point-in-time-api.html" @@ -1663,7 +1592,9 @@ "type": "Class", "tags": [], "label": "ListClient", - "description": [], + "description": [ + "\nClass for use for value lists are are associated with exception lists.\nSee {@link https://www.elastic.co/guide/en/security/current/lists-api-create-container.html}" + ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [ @@ -1673,7 +1604,9 @@ "type": "Function", "tags": [], "label": "Constructor", - "description": [], + "description": [ + "\nConstructs the value list" + ], "signature": [ "any" ], @@ -1703,14 +1636,18 @@ "type": "Function", "tags": [], "label": "getListIndex", - "description": [], + "description": [ + "\nReturns the list index name" + ], "signature": [ "() => string" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The list index name" + ] }, { "parentPluginId": "lists", @@ -1718,14 +1655,18 @@ "type": "Function", "tags": [], "label": "getListItemIndex", - "description": [], + "description": [ + "\nReturns the list item index name" + ], "signature": [ "() => string" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The list item index name" + ] }, { "parentPluginId": "lists", @@ -1733,11 +1674,13 @@ "type": "Function", "tags": [], "label": "getList", - "description": [], + "description": [ + "\nGiven a list id, this will return the list container" + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1757,7 +1700,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The List container if found, otherwise null" + ] }, { "parentPluginId": "lists", @@ -1765,11 +1710,13 @@ "type": "Function", "tags": [], "label": "createList", - "description": [], + "description": [ + "\nCreates a list, if given at least the \"name\", \"description\", \"type\", and \"version\"\nSee {@link https://www.elastic.co/guide/en/security/current/lists-api-create-container.html}\nfor more information around formats of the deserializer and serializer" + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1789,7 +1736,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The list created" + ] }, { "parentPluginId": "lists", @@ -1797,11 +1746,13 @@ "type": "Function", "tags": [], "label": "createListIfItDoesNotExist", - "description": [], + "description": [ + "\nCreates a list, if given at least the \"name\", \"description\", \"type\", and \"version\"\nSee {@link https://www.elastic.co/guide/en/security/current/lists-api-create-container.html}\nfor more information around formats of the deserializer and serializer.\nThis will create the list if it does not exist. If the list exists, this will ignore creating\nanything and just return the existing list." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; }>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -1821,7 +1772,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The list created" + ] }, { "parentPluginId": "lists", @@ -1829,14 +1782,18 @@ "type": "Function", "tags": [], "label": "getListIndexExists", - "description": [], + "description": [ + "\nTrue if the list index exists, otherwise false" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if the list index exists, otherwise false" + ] }, { "parentPluginId": "lists", @@ -1844,14 +1801,18 @@ "type": "Function", "tags": [], "label": "getListItemIndexExists", - "description": [], + "description": [ + "\nTrue if the list index item exists, otherwise false" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if the list item index exists, otherwise false" + ] }, { "parentPluginId": "lists", @@ -1859,14 +1820,18 @@ "type": "Function", "tags": [], "label": "createListBootStrapIndex", - "description": [], + "description": [ + "\nCreates the list boot strap index for ILM policies." + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the bootstrap response from Elasticsearch" + ] }, { "parentPluginId": "lists", @@ -1874,14 +1839,18 @@ "type": "Function", "tags": [], "label": "createListItemBootStrapIndex", - "description": [], + "description": [ + "\nCreates the list item boot strap index for ILM policies." + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the bootstrap response from Elasticsearch" + ] }, { "parentPluginId": "lists", @@ -1889,14 +1858,18 @@ "type": "Function", "tags": [], "label": "getListPolicyExists", - "description": [], + "description": [ + "\nReturns true if the list policy for ILM exists, otherwise false" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if the list policy for ILM exists, otherwise false." + ] }, { "parentPluginId": "lists", @@ -1904,14 +1877,18 @@ "type": "Function", "tags": [], "label": "getListItemPolicyExists", - "description": [], + "description": [ + "\nReturns true if the list item policy for ILM exists, otherwise false" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if the list item policy for ILM exists, otherwise false." + ] }, { "parentPluginId": "lists", @@ -1919,14 +1896,18 @@ "type": "Function", "tags": [], "label": "getListTemplateExists", - "description": [], + "description": [ + "\nReturns true if the list template for ILM exists, otherwise false" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if the list template for ILM exists, otherwise false." + ] }, { "parentPluginId": "lists", @@ -1934,14 +1915,18 @@ "type": "Function", "tags": [], "label": "getListItemTemplateExists", - "description": [], + "description": [ + "\nReturns true if the list item template for ILM exists, otherwise false" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if the list item template for ILM exists, otherwise false." + ] }, { "parentPluginId": "lists", @@ -1949,14 +1934,18 @@ "type": "Function", "tags": [], "label": "getListTemplate", - "description": [], + "description": [ + "\nReturns the list template for ILM." + ], "signature": [ "() => Record" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list template for ILM." + ] }, { "parentPluginId": "lists", @@ -1964,14 +1953,18 @@ "type": "Function", "tags": [], "label": "getListItemTemplate", - "description": [], + "description": [ + "\nReturns the list item template for ILM." + ], "signature": [ "() => Record" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list item template for ILM." + ] }, { "parentPluginId": "lists", @@ -1979,14 +1972,18 @@ "type": "Function", "tags": [], "label": "setListTemplate", - "description": [], + "description": [ + "\nSets the list template for ILM." + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list template for ILM." + ] }, { "parentPluginId": "lists", @@ -1994,14 +1991,18 @@ "type": "Function", "tags": [], "label": "setListItemTemplate", - "description": [], + "description": [ + "\nSets the list item template for ILM." + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list item template for ILM." + ] }, { "parentPluginId": "lists", @@ -2009,14 +2010,18 @@ "type": "Function", "tags": [], "label": "setListPolicy", - "description": [], + "description": [ + "\nSets the list policy" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list policy set" + ] }, { "parentPluginId": "lists", @@ -2024,14 +2029,18 @@ "type": "Function", "tags": [], "label": "setListItemPolicy", - "description": [], + "description": [ + "\nSets the list item policy" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list policy set" + ] }, { "parentPluginId": "lists", @@ -2039,14 +2048,18 @@ "type": "Function", "tags": [], "label": "deleteListIndex", - "description": [], + "description": [ + "\nDeletes the list index" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if the list index was deleted, otherwise false" + ] }, { "parentPluginId": "lists", @@ -2054,14 +2067,18 @@ "type": "Function", "tags": [], "label": "deleteListItemIndex", - "description": [], + "description": [ + "\nDeletes the list item index" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "True if the list item index was deleted, otherwise false" + ] }, { "parentPluginId": "lists", @@ -2069,14 +2086,18 @@ "type": "Function", "tags": [], "label": "deleteListPolicy", - "description": [], + "description": [ + "\nDeletes the list policy" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list policy" + ] }, { "parentPluginId": "lists", @@ -2084,14 +2105,18 @@ "type": "Function", "tags": [], "label": "deleteListItemPolicy", - "description": [], + "description": [ + "\nDeletes the list item policy" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list item policy" + ] }, { "parentPluginId": "lists", @@ -2099,14 +2124,18 @@ "type": "Function", "tags": [], "label": "deleteListTemplate", - "description": [], + "description": [ + "\nDeletes the list template" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list template" + ] }, { "parentPluginId": "lists", @@ -2114,14 +2143,18 @@ "type": "Function", "tags": [], "label": "deleteListItemTemplate", - "description": [], + "description": [ + "\nDeletes the list item template" + ], "signature": [ "() => Promise" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, "children": [], - "returnComment": [] + "returnComment": [ + "The contents of the list item template" + ] }, { "parentPluginId": "lists", @@ -2129,11 +2162,13 @@ "type": "Function", "tags": [], "label": "deleteListItem", - "description": [], + "description": [ + "\nGiven a list item id, this will delete the single list item" + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2153,7 +2188,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The list item if found, otherwise null" + ] }, { "parentPluginId": "lists", @@ -2161,11 +2198,13 @@ "type": "Function", "tags": [], "label": "deleteListItemByValue", - "description": [], + "description": [ + "\nGiven a list value, this will delete all list items that have that value" + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2185,7 +2224,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The list items deleted." + ] }, { "parentPluginId": "lists", @@ -2193,11 +2234,13 @@ "type": "Function", "tags": [], "label": "deleteList", - "description": [], + "description": [ + "\nGiven a list id, this will delete the list from the id" + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2217,7 +2260,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The list deleted if found, otherwise null" + ] }, { "parentPluginId": "lists", @@ -2225,7 +2270,9 @@ "type": "Function", "tags": [], "label": "exportListItemsToStream", - "description": [], + "description": [ + "\nExports list items to a stream" + ], "signature": [ "({ stringToAppend, listId, stream, }: ", "ExportListItemsToStreamOptions", @@ -2257,11 +2304,13 @@ "type": "Function", "tags": [], "label": "importListItemsToStream", - "description": [], + "description": [ + "\nImports list items to a stream. If the list already exists, this will append the list items to the existing list.\nIf the list does not exist, this will auto-create the list and then add the items to that list.\nSee {@link https://www.elastic.co/guide/en/security/current/lists-api-create-container.html}\nfor more information around formats of the deserializer and serializer." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2289,11 +2338,13 @@ "type": "Function", "tags": [], "label": "getListItemByValue", - "description": [], + "description": [ + "\nReturns all list items found by value." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2313,7 +2364,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The list items by value found." + ] }, { "parentPluginId": "lists", @@ -2321,11 +2374,13 @@ "type": "Function", "tags": [], "label": "createListItem", - "description": [], + "description": [ + "\nCreates a list item given at least \"value\", \"type\", and a \"listId\" where \"listId\" is the parent container that this list\nitem belongs to.\nSee {@link https://www.elastic.co/guide/en/security/current/lists-api-create-container.html}\nfor more information around formats of the deserializer and serializer." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2353,11 +2408,13 @@ "type": "Function", "tags": [], "label": "updateListItem", - "description": [], + "description": [ + "\nUpdates a list item's value given the id of the list item.\nSee {@link https://www.elastic.co/guide/en/elasticsearch/reference/current/optimistic-concurrency-control.html}\nfor more information around optimistic concurrency control." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2385,11 +2442,13 @@ "type": "Function", "tags": [], "label": "updateList", - "description": [], + "description": [ + "\nUpdates a list container's value given the id of the list.\nSee {@link https://www.elastic.co/guide/en/elasticsearch/reference/current/optimistic-concurrency-control.html}\nfor more information around optimistic concurrency control." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; version: number; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2417,11 +2476,13 @@ "type": "Function", "tags": [], "label": "getListItem", - "description": [], + "description": [ + "\nGiven a list item id, this returns the list item if it exists, otherwise \"null\"." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; } | null>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2441,7 +2502,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "The list item found if it exists, otherwise \"null\"." + ] }, { "parentPluginId": "lists", @@ -2449,11 +2512,13 @@ "type": "Function", "tags": [], "label": "getListItemByValues", - "description": [], + "description": [ + "\nGiven a list item value, this returns all list items found with that value." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2473,7 +2538,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "All list items that match the value sent in." + ] }, { "parentPluginId": "lists", @@ -2481,11 +2548,13 @@ "type": "Function", "tags": [], "label": "searchListItemByValues", - "description": [], + "description": [ + "\nGiven a list item value, this search for all list items found with that value." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; updated_at: string; updated_by: string; value: string; }[]; value: unknown; }[]>" ], "path": "x-pack/plugins/lists/server/services/lists/list_client.ts", "deprecated": false, @@ -2505,7 +2574,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "All list items that match the value sent in." + ] }, { "parentPluginId": "lists", @@ -2513,11 +2584,13 @@ "type": "Function", "tags": [], "label": "findList", - "description": [], + "description": [ + "\nFinds lists based on a filter passed in. This is a bit complicated as it existed before\nPIT (Point in Time) and other mechanisms. This uses an older way of doing \"hops\" and\naccepting a \"currentIndexPosition\" which acts like a pointer to where the search should continue." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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, @@ -2537,7 +2610,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "All lists found based on the passed in filter." + ] }, { "parentPluginId": "lists", @@ -2545,11 +2620,13 @@ "type": "Function", "tags": [], "label": "findListItem", - "description": [], + "description": [ + "\nFinds list items based on a filter passed in. This is a bit complicated as it existed before\nPIT (Point in Time) and other mechanisms. This uses an older way of doing \"hops\" and\naccepting a \"currentIndexPosition\" which acts like a pointer to where the search should continue." + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; 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, @@ -2569,7 +2646,9 @@ "isRequired": true } ], - "returnComment": [] + "returnComment": [ + "All list items found based on the passed in filter." + ] } ], "initialIsOpen": false @@ -2583,7 +2662,9 @@ "type": "Interface", "tags": [], "label": "CreateExceptionListItemOptions", - "description": [], + "description": [ + "\nExceptionListClient.createExceptionListItem\n{@link ExceptionListClient.createExceptionListItem}" + ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", "deprecated": false, "children": [ @@ -2593,7 +2674,9 @@ "type": "Array", "tags": [], "label": "comments", - "description": [], + "description": [ + "User comments for the exception list item" + ], "signature": [ "{ comment: string; }[]" ], @@ -2606,9 +2689,11 @@ "type": "Array", "tags": [], "label": "entries", - "description": [], + "description": [ + "an array with the exception list item entries" + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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 @@ -2619,7 +2704,9 @@ "type": "string", "tags": [], "label": "itemId", - "description": [], + "description": [ + "the \"item_id\" of the exception list item" + ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", "deprecated": false }, @@ -2629,7 +2716,9 @@ "type": "string", "tags": [], "label": "listId", - "description": [], + "description": [ + "the \"list_id\" of the parent exception list" + ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", "deprecated": false }, @@ -2639,7 +2728,9 @@ "type": "CompoundType", "tags": [], "label": "namespaceType", - "description": [], + "description": [ + "saved object namespace (single | agnostic)" + ], "signature": [ "\"single\" | \"agnostic\"" ], @@ -2652,7 +2743,9 @@ "type": "string", "tags": [], "label": "name", - "description": [], + "description": [ + "the \"name\" of the exception list" + ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", "deprecated": false }, @@ -2662,7 +2755,9 @@ "type": "Array", "tags": [], "label": "osTypes", - "description": [], + "description": [ + "item os types to apply" + ], "signature": [ "(\"windows\" | \"linux\" | \"macos\")[]" ], @@ -2675,7 +2770,9 @@ "type": "string", "tags": [], "label": "description", - "description": [], + "description": [ + "a description of the exception list" + ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", "deprecated": false }, @@ -2685,7 +2782,9 @@ "type": "Uncategorized", "tags": [], "label": "meta", - "description": [], + "description": [ + "Optional meta data about the list item" + ], "signature": [ "object | undefined" ], @@ -2698,7 +2797,9 @@ "type": "Array", "tags": [], "label": "tags", - "description": [], + "description": [ + "user assigned tags of exception list" + ], "signature": [ "string[]" ], @@ -2711,7 +2812,9 @@ "type": "string", "tags": [], "label": "type", - "description": [], + "description": [ + "container type" + ], "signature": [ "\"simple\"" ], @@ -2836,7 +2939,9 @@ "type": "Interface", "tags": [], "label": "UpdateExceptionListItemOptions", - "description": [], + "description": [ + "\nExceptionListClient.updateExceptionListItem\n{@link ExceptionListClient.updateExceptionListItem}" + ], "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts", "deprecated": false, "children": [ @@ -2846,7 +2951,9 @@ "type": "string", "tags": [], "label": "_version", - "description": [], + "description": [ + "document version" + ], "signature": [ "string | undefined" ], @@ -2859,7 +2966,9 @@ "type": "Array", "tags": [], "label": "comments", - "description": [], + "description": [ + "user comments attached to item" + ], "signature": [ "({ comment: string; } & { id?: string | undefined; })[]" ], @@ -2872,9 +2981,11 @@ "type": "Array", "tags": [], "label": "entries", - "description": [], + "description": [ + "item exception entries logic" + ], "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\" | \"keyword\" | \"ip\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"text\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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\" | \"keyword\" | \"ip\" | \"text\" | \"date\" | \"geo_point\" | \"geo_shape\" | \"binary\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"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 @@ -2885,7 +2996,9 @@ "type": "string", "tags": [], "label": "id", - "description": [], + "description": [ + "the \"id\" of the exception list item" + ], "signature": [ "string | undefined" ], @@ -2898,7 +3011,9 @@ "type": "string", "tags": [], "label": "itemId", - "description": [], + "description": [ + "the \"item_id\" of the exception list item" + ], "signature": [ "string | undefined" ], @@ -2911,7 +3026,9 @@ "type": "CompoundType", "tags": [], "label": "namespaceType", - "description": [], + "description": [ + "saved object namespace (single | agnostic)" + ], "signature": [ "\"single\" | \"agnostic\"" ], @@ -2924,7 +3041,9 @@ "type": "string", "tags": [], "label": "name", - "description": [], + "description": [ + "the \"name\" of the exception list" + ], "signature": [ "string | undefined" ], @@ -2937,7 +3056,9 @@ "type": "Array", "tags": [], "label": "osTypes", - "description": [], + "description": [ + "item os types to apply" + ], "signature": [ "(\"windows\" | \"linux\" | \"macos\")[]" ], @@ -2950,7 +3071,9 @@ "type": "string", "tags": [], "label": "description", - "description": [], + "description": [ + "a description of the exception list" + ], "signature": [ "string | undefined" ], @@ -2963,7 +3086,9 @@ "type": "Uncategorized", "tags": [], "label": "meta", - "description": [], + "description": [ + "Optional meta data about the exception list item" + ], "signature": [ "object | undefined" ], @@ -2976,7 +3101,9 @@ "type": "Array", "tags": [], "label": "tags", - "description": [], + "description": [ + "user assigned tags of exception list" + ], "signature": [ "string[] | undefined" ], @@ -2989,7 +3116,9 @@ "type": "string", "tags": [], "label": "type", - "description": [], + "description": [ + "container type" + ], "signature": [ "\"simple\" | undefined" ], diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 4be9824f833d2..d41261a0cd841 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github summary: API docs for the lists plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] 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. --- @@ -18,7 +18,7 @@ Contact [Security detections response](https://github.com/orgs/elastic/teams/sec | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 198 | 0 | 162 | 49 | +| 198 | 0 | 90 | 49 | ## Client diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 3f6a113909a8b..30294c621c92c 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github summary: API docs for the management plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] 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. --- diff --git a/api_docs/maps.devdocs.json b/api_docs/maps.devdocs.json index 7b25903f0b349..63493ac786c58 100644 --- a/api_docs/maps.devdocs.json +++ b/api_docs/maps.devdocs.json @@ -80,29 +80,8 @@ "label": "getMeta", "description": [], "signature": [ - "() => Partial<", - "DataFilters", - " & { applyGlobalQuery: boolean; applyGlobalTime: boolean; applyForceRefresh: boolean; fieldNames: string[]; geogridPrecision?: number | undefined; timesliceMaskField?: string | undefined; sourceQuery?: ", - "Query", - " | undefined; sourceMeta: object | null; isForceRefresh: boolean; } & ", - "VectorJoinSourceRequestMeta", - " & { dynamicStyleFields: string[]; isTimeAware: boolean; sourceQuery: ", - "Query", - "; timeFilters: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - "; } & ", - "ESSearchSourceResponseMeta", - " & ", - "ESGeoLineSourceResponseMeta", - " & ", - "VectorTileLayerMeta", - ">" + "() => ", + "DataRequestMeta" ], "path": "x-pack/plugins/maps/public/classes/util/data_request.ts", "deprecated": false, @@ -1188,6 +1167,20 @@ ], "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx", "deprecated": false + }, + { + "parentPluginId": "maps", + "id": "def-public.BoundsRequestMeta.joinKeyFilter", + "type": "Object", + "tags": [], + "label": "joinKeyFilter", + "description": [], + "signature": [ + "Filter", + " | undefined" + ], + "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx", + "deprecated": false } ], "initialIsOpen": false @@ -3051,7 +3044,7 @@ "label": "SourceEditorArgs", "description": [], "signature": [ - "{ clearJoins: () => void; currentLayerType: string; hasJoins: boolean; onChange: (...args: ", + "{ currentLayerType: string; numberOfJoins: number; onChange: (...args: ", "OnSourceChangeArgs", "[]) => Promise; }" ], diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index ae9babe656796..980ecd53f8ee9 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github summary: API docs for the maps plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] 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. --- @@ -18,7 +18,7 @@ Contact [GIS](https://github.com/orgs/elastic/teams/kibana-gis) for questions re | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 223 | 0 | 222 | 27 | +| 224 | 0 | 223 | 25 | ## Client diff --git a/api_docs/maps_ems.devdocs.json b/api_docs/maps_ems.devdocs.json index 18ef0a3cf340b..0649ee441acdf 100644 --- a/api_docs/maps_ems.devdocs.json +++ b/api_docs/maps_ems.devdocs.json @@ -88,7 +88,7 @@ "label": "MapConfig", "description": [], "signature": [ - "{ readonly tilemap: Readonly<{ url?: string | undefined; } & { options: Readonly<{ default?: boolean | undefined; tileSize?: number | undefined; subdomains?: string[] | undefined; errorTileUrl?: string | undefined; tms?: boolean | undefined; reuseTiles?: boolean | undefined; bounds?: number[] | undefined; } & { attribution: string; minZoom: number; maxZoom: number; }>; }>; readonly includeElasticMapsService: boolean; readonly emsUrl: string; readonly emsFileApiUrl: string; readonly emsTileApiUrl: string; readonly emsLandingPageUrl: string; readonly emsFontLibraryUrl: string; readonly emsTileLayerId: Readonly<{} & { bright: string; desaturated: string; dark: string; }>; }" + "{ readonly tilemap: Readonly<{ url?: string | undefined; } & { options: Readonly<{ default?: boolean | undefined; tileSize?: number | undefined; subdomains?: string[] | undefined; errorTileUrl?: string | undefined; tms?: boolean | undefined; reuseTiles?: boolean | undefined; bounds?: number[] | undefined; } & { attribution: string; minZoom: number; maxZoom: number; }>; }>; readonly includeElasticMapsService: boolean; readonly emsUrl: string; readonly emsFileApiUrl: string; readonly emsTileApiUrl: string; readonly emsLandingPageUrl: string; readonly emsFontLibraryUrl: string; readonly emsTileLayerId: Readonly<{} & { dark: string; bright: string; desaturated: string; }>; }" ], "path": "src/plugins/maps_ems/config.ts", "deprecated": false, @@ -141,7 +141,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly tilemap: Readonly<{ url?: string | undefined; } & { options: Readonly<{ default?: boolean | undefined; tileSize?: number | undefined; subdomains?: string[] | undefined; errorTileUrl?: string | undefined; tms?: boolean | undefined; reuseTiles?: boolean | undefined; bounds?: number[] | undefined; } & { attribution: string; minZoom: number; maxZoom: number; }>; }>; readonly includeElasticMapsService: boolean; readonly emsUrl: string; readonly emsFileApiUrl: string; readonly emsTileApiUrl: string; readonly emsLandingPageUrl: string; readonly emsFontLibraryUrl: string; readonly emsTileLayerId: Readonly<{} & { bright: string; desaturated: string; dark: string; }>; }" + "{ readonly tilemap: Readonly<{ url?: string | undefined; } & { options: Readonly<{ default?: boolean | undefined; tileSize?: number | undefined; subdomains?: string[] | undefined; errorTileUrl?: string | undefined; tms?: boolean | undefined; reuseTiles?: boolean | undefined; bounds?: number[] | undefined; } & { attribution: string; minZoom: number; maxZoom: number; }>; }>; readonly includeElasticMapsService: boolean; readonly emsUrl: string; readonly emsFileApiUrl: string; readonly emsTileApiUrl: string; readonly emsLandingPageUrl: string; readonly emsFontLibraryUrl: string; readonly emsTileLayerId: Readonly<{} & { dark: string; bright: string; desaturated: string; }>; }" ], "path": "src/plugins/maps_ems/public/index.ts", "deprecated": false @@ -441,7 +441,7 @@ "section": "def-server.PluginInitializerContext", "text": "PluginInitializerContext" }, - "; }>; includeElasticMapsService: boolean; emsUrl: string; emsFileApiUrl: string; emsTileApiUrl: string; emsLandingPageUrl: string; emsFontLibraryUrl: string; emsTileLayerId: Readonly<{} & { bright: string; desaturated: string; dark: string; }>; }>>" + "; }>; includeElasticMapsService: boolean; emsUrl: string; emsFileApiUrl: string; emsTileApiUrl: string; emsLandingPageUrl: string; emsFontLibraryUrl: string; emsTileLayerId: Readonly<{} & { dark: string; bright: string; desaturated: string; }>; }>>" ], "path": "src/plugins/maps_ems/server/index.ts", "deprecated": false @@ -474,7 +474,7 @@ "section": "def-server.PluginInitializerContext", "text": "PluginInitializerContext" }, - "; }>; includeElasticMapsService: boolean; emsUrl: string; emsFileApiUrl: string; emsTileApiUrl: string; emsLandingPageUrl: string; emsFontLibraryUrl: string; emsTileLayerId: Readonly<{} & { bright: string; desaturated: string; dark: string; }>; }>>" + "; }>; includeElasticMapsService: boolean; emsUrl: string; emsFileApiUrl: string; emsTileApiUrl: string; emsLandingPageUrl: string; emsFontLibraryUrl: string; emsTileLayerId: Readonly<{} & { dark: string; bright: string; desaturated: string; }>; }>>" ], "path": "src/plugins/maps_ems/server/index.ts", "deprecated": false, @@ -499,7 +499,7 @@ "section": "def-server.CoreSetup", "text": "CoreSetup" }, - ", plugins: MapsEmsSetupServerDependencies) => { config: Readonly<{} & { tilemap: Readonly<{ url?: string | undefined; } & { options: Readonly<{ default?: boolean | undefined; tileSize?: number | undefined; subdomains?: string[] | undefined; errorTileUrl?: string | undefined; tms?: boolean | undefined; reuseTiles?: boolean | undefined; bounds?: number[] | undefined; } & { attribution: string; minZoom: number; maxZoom: number; }>; }>; includeElasticMapsService: boolean; emsUrl: string; emsFileApiUrl: string; emsTileApiUrl: string; emsLandingPageUrl: string; emsFontLibraryUrl: string; emsTileLayerId: Readonly<{} & { bright: string; desaturated: string; dark: string; }>; }>; createEMSSettings: () => ", + ", plugins: MapsEmsSetupServerDependencies) => { config: Readonly<{} & { tilemap: Readonly<{ url?: string | undefined; } & { options: Readonly<{ default?: boolean | undefined; tileSize?: number | undefined; subdomains?: string[] | undefined; errorTileUrl?: string | undefined; tms?: boolean | undefined; reuseTiles?: boolean | undefined; bounds?: number[] | undefined; } & { attribution: string; minZoom: number; maxZoom: number; }>; }>; includeElasticMapsService: boolean; emsUrl: string; emsFileApiUrl: string; emsTileApiUrl: string; emsLandingPageUrl: string; emsFontLibraryUrl: string; emsTileLayerId: Readonly<{} & { dark: string; bright: string; desaturated: string; }>; }>; createEMSSettings: () => ", { "pluginId": "mapsEms", "scope": "common", @@ -589,7 +589,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly tilemap: Readonly<{ url?: string | undefined; } & { options: Readonly<{ default?: boolean | undefined; tileSize?: number | undefined; subdomains?: string[] | undefined; errorTileUrl?: string | undefined; tms?: boolean | undefined; reuseTiles?: boolean | undefined; bounds?: number[] | undefined; } & { attribution: string; minZoom: number; maxZoom: number; }>; }>; readonly includeElasticMapsService: boolean; readonly emsUrl: string; readonly emsFileApiUrl: string; readonly emsTileApiUrl: string; readonly emsLandingPageUrl: string; readonly emsFontLibraryUrl: string; readonly emsTileLayerId: Readonly<{} & { bright: string; desaturated: string; dark: string; }>; }" + "{ readonly tilemap: Readonly<{ url?: string | undefined; } & { options: Readonly<{ default?: boolean | undefined; tileSize?: number | undefined; subdomains?: string[] | undefined; errorTileUrl?: string | undefined; tms?: boolean | undefined; reuseTiles?: boolean | undefined; bounds?: number[] | undefined; } & { attribution: string; minZoom: number; maxZoom: number; }>; }>; readonly includeElasticMapsService: boolean; readonly emsUrl: string; readonly emsFileApiUrl: string; readonly emsTileApiUrl: string; readonly emsLandingPageUrl: string; readonly emsFontLibraryUrl: string; readonly emsTileLayerId: Readonly<{} & { dark: string; bright: string; desaturated: string; }>; }" ], "path": "src/plugins/maps_ems/server/index.ts", "deprecated": false diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 4fa7850a0e9c9..5fc5483e9d64c 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github summary: API docs for the mapsEms plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] 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. --- diff --git a/api_docs/metrics_entities.devdocs.json b/api_docs/metrics_entities.devdocs.json deleted file mode 100644 index 8a4c69fc1e824..0000000000000 --- a/api_docs/metrics_entities.devdocs.json +++ /dev/null @@ -1,1282 +0,0 @@ -{ - "id": "metricsEntities", - "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [], - "setup": { - "parentPluginId": "metricsEntities", - "id": "def-server.MetricsEntitiesPluginSetup", - "type": "Interface", - "tags": [], - "label": "MetricsEntitiesPluginSetup", - "description": [], - "path": "x-pack/plugins/metrics_entities/server/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "metricsEntities", - "id": "def-server.MetricsEntitiesPluginSetup.getMetricsEntitiesClient", - "type": "Function", - "tags": [], - "label": "getMetricsEntitiesClient", - "description": [], - "signature": [ - "(esClient: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchClient", - "text": "ElasticsearchClient" - }, - ") => ", - "MetricsEntitiesClient" - ], - "path": "x-pack/plugins/metrics_entities/server/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "metricsEntities", - "id": "def-server.MetricsEntitiesPluginSetup.getMetricsEntitiesClient.$1", - "type": "Object", - "tags": [], - "label": "esClient", - "description": [], - "signature": [ - "{ eql: ", - "default", - "; search: { >(this: That, params?: ", - "SearchRequest", - " | ", - "SearchRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "SearchResponse", - ">; >(this: That, params?: ", - "SearchRequest", - " | ", - "SearchRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "SearchResponse", - ", unknown>>; >(this: That, params?: ", - "SearchRequest", - " | ", - "SearchRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "SearchResponse", - ">; }; create: { (this: That, params: ", - "CreateRequest", - " | ", - "CreateRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "WriteResponseBase", - ">; (this: That, params: ", - "CreateRequest", - " | ", - "CreateRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "WriteResponseBase", - ", unknown>>; (this: That, params: ", - "CreateRequest", - " | ", - "CreateRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "WriteResponseBase", - ">; }; monitoring: ", - "default", - "; security: ", - "default", - "; name: string | symbol; index: { (this: That, params: ", - "IndexRequest", - " | ", - "IndexRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "WriteResponseBase", - ">; (this: That, params: ", - "IndexRequest", - " | ", - "IndexRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "WriteResponseBase", - ", unknown>>; (this: That, params: ", - "IndexRequest", - " | ", - "IndexRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "WriteResponseBase", - ">; }; delete: { (this: That, params: ", - "DeleteRequest", - " | ", - "DeleteRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "WriteResponseBase", - ">; (this: That, params: ", - "DeleteRequest", - " | ", - "DeleteRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "WriteResponseBase", - ", unknown>>; (this: That, params: ", - "DeleteRequest", - " | ", - "DeleteRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "WriteResponseBase", - ">; }; get: { (this: That, params: ", - "GetRequest", - " | ", - "GetRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "GetResponse", - ">; (this: That, params: ", - "GetRequest", - " | ", - "GetRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "GetResponse", - ", unknown>>; (this: That, params: ", - "GetRequest", - " | ", - "GetRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "GetResponse", - ">; }; update: { (this: That, params: ", - "UpdateRequest", - " | ", - "UpdateRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "UpdateResponse", - ">; (this: That, params: ", - "UpdateRequest", - " | ", - "UpdateRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "UpdateResponse", - ", unknown>>; (this: That, params: ", - "UpdateRequest", - " | ", - "UpdateRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "UpdateResponse", - ">; }; closePointInTime: { (this: That, params: ", - "ClosePointInTimeRequest", - " | ", - "ClosePointInTimeRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ClosePointInTimeResponse", - ">; (this: That, params: ", - "ClosePointInTimeRequest", - " | ", - "ClosePointInTimeRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ClosePointInTimeResponse", - ", unknown>>; (this: That, params: ", - "ClosePointInTimeRequest", - " | ", - "ClosePointInTimeRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ClosePointInTimeResponse", - ">; }; helpers: ", - "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", - "default", - "; child: (opts: ", - "ClientOptions", - ") => ", - "default", - "; Internal: ", - "default", - "; asyncSearch: ", - "default", - "; autoscaling: ", - "default", - "; bulk: { (this: That, params: ", - "BulkRequest", - " | ", - "BulkRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "BulkResponse", - ">; (this: That, params: ", - "BulkRequest", - " | ", - "BulkRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "BulkResponse", - ", unknown>>; (this: That, params: ", - "BulkRequest", - " | ", - "BulkRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "BulkResponse", - ">; }; cat: ", - "default", - "; ccr: ", - "default", - "; clearScroll: { (this: That, params?: ", - "ClearScrollRequest", - " | ", - "ClearScrollRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ClearScrollResponse", - ">; (this: That, params?: ", - "ClearScrollRequest", - " | ", - "ClearScrollRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ClearScrollResponse", - ", unknown>>; (this: That, params?: ", - "ClearScrollRequest", - " | ", - "ClearScrollRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ClearScrollResponse", - ">; }; cluster: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; danglingIndices: ", - "default", - "; deleteByQuery: { (this: That, params: ", - "DeleteByQueryRequest", - " | ", - "DeleteByQueryRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "DeleteByQueryResponse", - ">; (this: That, params: ", - "DeleteByQueryRequest", - " | ", - "DeleteByQueryRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "DeleteByQueryResponse", - ", unknown>>; (this: That, params: ", - "DeleteByQueryRequest", - " | ", - "DeleteByQueryRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "DeleteByQueryResponse", - ">; }; deleteByQueryRethrottle: { (this: That, params: ", - "DeleteByQueryRethrottleRequest", - " | ", - "DeleteByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "TasksTaskListResponseBase", - ">; (this: That, params: ", - "DeleteByQueryRethrottleRequest", - " | ", - "DeleteByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "TasksTaskListResponseBase", - ", unknown>>; (this: That, params: ", - "DeleteByQueryRethrottleRequest", - " | ", - "DeleteByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "TasksTaskListResponseBase", - ">; }; deleteScript: { (this: That, params: ", - "DeleteScriptRequest", - " | ", - "DeleteScriptRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "AcknowledgedResponseBase", - ">; (this: That, params: ", - "DeleteScriptRequest", - " | ", - "DeleteScriptRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "AcknowledgedResponseBase", - ", unknown>>; (this: That, params: ", - "DeleteScriptRequest", - " | ", - "DeleteScriptRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "AcknowledgedResponseBase", - ">; }; enrich: ", - "default", - "; exists: { (this: That, params: ", - "ExistsRequest", - " | ", - "ExistsRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params: ", - "ExistsRequest", - " | ", - "ExistsRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params: ", - "ExistsRequest", - " | ", - "ExistsRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; existsSource: { (this: That, params: ", - "ExistsSourceRequest", - " | ", - "ExistsSourceRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params: ", - "ExistsSourceRequest", - " | ", - "ExistsSourceRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params: ", - "ExistsSourceRequest", - " | ", - "ExistsSourceRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; explain: { (this: That, params: ", - "ExplainRequest", - " | ", - "ExplainRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ExplainResponse", - ">; (this: That, params: ", - "ExplainRequest", - " | ", - "ExplainRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ExplainResponse", - ", unknown>>; (this: That, params: ", - "ExplainRequest", - " | ", - "ExplainRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ExplainResponse", - ">; }; features: ", - "default", - "; fieldCaps: { (this: That, params: ", - "FieldCapsRequest", - " | ", - "FieldCapsRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "FieldCapsResponse", - ">; (this: That, params: ", - "FieldCapsRequest", - " | ", - "FieldCapsRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "FieldCapsResponse", - ", unknown>>; (this: That, params: ", - "FieldCapsRequest", - " | ", - "FieldCapsRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "FieldCapsResponse", - ">; }; fleet: ", - "default", - "; getScript: { (this: That, params: ", - "GetScriptRequest", - " | ", - "GetScriptRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "GetScriptResponse", - ">; (this: That, params: ", - "GetScriptRequest", - " | ", - "GetScriptRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "GetScriptResponse", - ", unknown>>; (this: That, params: ", - "GetScriptRequest", - " | ", - "GetScriptRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "GetScriptResponse", - ">; }; getScriptContext: { (this: That, params?: ", - "GetScriptContextRequest", - " | ", - "GetScriptContextRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "GetScriptContextResponse", - ">; (this: That, params?: ", - "GetScriptContextRequest", - " | ", - "GetScriptContextRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "GetScriptContextResponse", - ", unknown>>; (this: That, params?: ", - "GetScriptContextRequest", - " | ", - "GetScriptContextRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "GetScriptContextResponse", - ">; }; getScriptLanguages: { (this: That, params?: ", - "GetScriptLanguagesRequest", - " | ", - "GetScriptLanguagesRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "GetScriptLanguagesResponse", - ">; (this: That, params?: ", - "GetScriptLanguagesRequest", - " | ", - "GetScriptLanguagesRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "GetScriptLanguagesResponse", - ", unknown>>; (this: That, params?: ", - "GetScriptLanguagesRequest", - " | ", - "GetScriptLanguagesRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "GetScriptLanguagesResponse", - ">; }; getSource: { (this: That, params: ", - "GetSourceRequest", - " | ", - "GetSourceRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params: ", - "GetSourceRequest", - " | ", - "GetSourceRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params: ", - "GetSourceRequest", - " | ", - "GetSourceRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; graph: ", - "default", - "; ilm: ", - "default", - "; indices: ", - "default", - "; info: { (this: That, params?: ", - "InfoRequest", - " | ", - "InfoRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "InfoResponse", - ">; (this: That, params?: ", - "InfoRequest", - " | ", - "InfoRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "InfoResponse", - ", unknown>>; (this: That, params?: ", - "InfoRequest", - " | ", - "InfoRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "InfoResponse", - ">; }; ingest: ", - "default", - "; knnSearch: { (this: That, params: ", - "KnnSearchRequest", - " | ", - "KnnSearchRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "KnnSearchResponse", - ">; (this: That, params: ", - "KnnSearchRequest", - " | ", - "KnnSearchRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "KnnSearchResponse", - ", unknown>>; (this: That, params: ", - "KnnSearchRequest", - " | ", - "KnnSearchRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "KnnSearchResponse", - ">; }; license: ", - "default", - "; logstash: ", - "default", - "; mget: { (this: That, params?: ", - "MgetRequest", - " | ", - "MgetRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "MgetResponse", - ">; (this: That, params?: ", - "MgetRequest", - " | ", - "MgetRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "MgetResponse", - ", unknown>>; (this: That, params?: ", - "MgetRequest", - " | ", - "MgetRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "MgetResponse", - ">; }; migration: ", - "default", - "; ml: ", - "default", - "; msearch: { >(this: That, params: ", - "MsearchRequest", - " | ", - "MsearchRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "MsearchResponse", - ">; >(this: That, params: ", - "MsearchRequest", - " | ", - "MsearchRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "MsearchResponse", - ", unknown>>; >(this: That, params: ", - "MsearchRequest", - " | ", - "MsearchRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "MsearchResponse", - ">; }; msearchTemplate: { >(this: That, params: ", - "MsearchTemplateRequest", - " | ", - "MsearchTemplateRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "MsearchTemplateResponse", - ">; >(this: That, params: ", - "MsearchTemplateRequest", - " | ", - "MsearchTemplateRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "MsearchTemplateResponse", - ", unknown>>; >(this: That, params: ", - "MsearchTemplateRequest", - " | ", - "MsearchTemplateRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "MsearchTemplateResponse", - ">; }; mtermvectors: { (this: That, params?: ", - "MtermvectorsRequest", - " | ", - "MtermvectorsRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "MtermvectorsResponse", - ">; (this: That, params?: ", - "MtermvectorsRequest", - " | ", - "MtermvectorsRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "MtermvectorsResponse", - ", unknown>>; (this: That, params?: ", - "MtermvectorsRequest", - " | ", - "MtermvectorsRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "MtermvectorsResponse", - ">; }; nodes: ", - "default", - "; openPointInTime: { (this: That, params: ", - "OpenPointInTimeRequest", - " | ", - "OpenPointInTimeRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "OpenPointInTimeResponse", - ">; (this: That, params: ", - "OpenPointInTimeRequest", - " | ", - "OpenPointInTimeRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "OpenPointInTimeResponse", - ", unknown>>; (this: That, params: ", - "OpenPointInTimeRequest", - " | ", - "OpenPointInTimeRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "OpenPointInTimeResponse", - ">; }; ping: { (this: That, params?: ", - "PingRequest", - " | ", - "PingRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params?: ", - "PingRequest", - " | ", - "PingRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params?: ", - "PingRequest", - " | ", - "PingRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; putScript: { (this: That, params: ", - "PutScriptRequest", - " | ", - "PutScriptRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "AcknowledgedResponseBase", - ">; (this: That, params: ", - "PutScriptRequest", - " | ", - "PutScriptRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "AcknowledgedResponseBase", - ", unknown>>; (this: That, params: ", - "PutScriptRequest", - " | ", - "PutScriptRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "AcknowledgedResponseBase", - ">; }; rankEval: { (this: That, params: ", - "RankEvalRequest", - " | ", - "RankEvalRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "RankEvalResponse", - ">; (this: That, params: ", - "RankEvalRequest", - " | ", - "RankEvalRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "RankEvalResponse", - ", unknown>>; (this: That, params: ", - "RankEvalRequest", - " | ", - "RankEvalRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "RankEvalResponse", - ">; }; reindex: { (this: That, params: ", - "ReindexRequest", - " | ", - "ReindexRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ReindexResponse", - ">; (this: That, params: ", - "ReindexRequest", - " | ", - "ReindexRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ReindexResponse", - ", unknown>>; (this: That, params: ", - "ReindexRequest", - " | ", - "ReindexRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ReindexResponse", - ">; }; reindexRethrottle: { (this: That, params: ", - "ReindexRethrottleRequest", - " | ", - "ReindexRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ReindexRethrottleResponse", - ">; (this: That, params: ", - "ReindexRethrottleRequest", - " | ", - "ReindexRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ReindexRethrottleResponse", - ", unknown>>; (this: That, params: ", - "ReindexRethrottleRequest", - " | ", - "ReindexRethrottleRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ReindexRethrottleResponse", - ">; }; renderSearchTemplate: { (this: That, params?: ", - "RenderSearchTemplateRequest", - " | ", - "RenderSearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "RenderSearchTemplateResponse", - ">; (this: That, params?: ", - "RenderSearchTemplateRequest", - " | ", - "RenderSearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "RenderSearchTemplateResponse", - ", unknown>>; (this: That, params?: ", - "RenderSearchTemplateRequest", - " | ", - "RenderSearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "RenderSearchTemplateResponse", - ">; }; rollup: ", - "default", - "; scriptsPainlessExecute: { (this: That, params?: ", - "ScriptsPainlessExecuteRequest", - " | ", - "ScriptsPainlessExecuteRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ScriptsPainlessExecuteResponse", - ">; (this: That, params?: ", - "ScriptsPainlessExecuteRequest", - " | ", - "ScriptsPainlessExecuteRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ScriptsPainlessExecuteResponse", - ", unknown>>; (this: That, params?: ", - "ScriptsPainlessExecuteRequest", - " | ", - "ScriptsPainlessExecuteRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ScriptsPainlessExecuteResponse", - ">; }; scroll: { >(this: That, params: ", - "ScrollRequest", - " | ", - "ScrollRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ScrollResponse", - ">; >(this: That, params: ", - "ScrollRequest", - " | ", - "ScrollRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ScrollResponse", - ", unknown>>; >(this: That, params: ", - "ScrollRequest", - " | ", - "ScrollRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ScrollResponse", - ">; }; searchMvt: { (this: That, params: ", - "SearchMvtRequest", - " | ", - "SearchMvtRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params: ", - "SearchMvtRequest", - " | ", - "SearchMvtRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params: ", - "SearchMvtRequest", - " | ", - "SearchMvtRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; searchShards: { (this: That, params?: ", - "SearchShardsRequest", - " | ", - "SearchShardsRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "SearchShardsResponse", - ">; (this: That, params?: ", - "SearchShardsRequest", - " | ", - "SearchShardsRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "SearchShardsResponse", - ", unknown>>; (this: That, params?: ", - "SearchShardsRequest", - " | ", - "SearchShardsRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "SearchShardsResponse", - ">; }; searchTemplate: { (this: That, params?: ", - "SearchTemplateRequest", - " | ", - "SearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "SearchTemplateResponse", - ">; (this: That, params?: ", - "SearchTemplateRequest", - " | ", - "SearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "SearchTemplateResponse", - ", unknown>>; (this: That, params?: ", - "SearchTemplateRequest", - " | ", - "SearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "SearchTemplateResponse", - ">; }; searchableSnapshots: ", - "default", - "; shutdown: ", - "default", - "; slm: ", - "default", - "; snapshot: ", - "default", - "; sql: ", - "default", - "; ssl: ", - "default", - "; tasks: ", - "default", - "; termsEnum: { (this: That, params: ", - "TermsEnumRequest", - " | ", - "TermsEnumRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "TermsEnumResponse", - ">; (this: That, params: ", - "TermsEnumRequest", - " | ", - "TermsEnumRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "TermsEnumResponse", - ", unknown>>; (this: That, params: ", - "TermsEnumRequest", - " | ", - "TermsEnumRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "TermsEnumResponse", - ">; }; termvectors: { (this: That, params: ", - "TermvectorsRequest", - " | ", - "TermvectorsRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "TermvectorsResponse", - ">; (this: That, params: ", - "TermvectorsRequest", - " | ", - "TermvectorsRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "TermvectorsResponse", - ", unknown>>; (this: That, params: ", - "TermvectorsRequest", - " | ", - "TermvectorsRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "TermvectorsResponse", - ">; }; textStructure: ", - "default", - "; transform: ", - "default", - "; updateByQuery: { (this: That, params: ", - "UpdateByQueryRequest", - " | ", - "UpdateByQueryRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "UpdateByQueryResponse", - ">; (this: That, params: ", - "UpdateByQueryRequest", - " | ", - "UpdateByQueryRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "UpdateByQueryResponse", - ", unknown>>; (this: That, params: ", - "UpdateByQueryRequest", - " | ", - "UpdateByQueryRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "UpdateByQueryResponse", - ">; }; updateByQueryRethrottle: { (this: That, params: ", - "UpdateByQueryRethrottleRequest", - " | ", - "UpdateByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "UpdateByQueryRethrottleResponse", - ">; (this: That, params: ", - "UpdateByQueryRethrottleRequest", - " | ", - "UpdateByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "UpdateByQueryRethrottleResponse", - ", unknown>>; (this: That, params: ", - "UpdateByQueryRethrottleRequest", - " | ", - "UpdateByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "UpdateByQueryRethrottleResponse", - ">; }; watcher: ", - "default", - "; xpack: ", - "default", - "; }" - ], - "path": "x-pack/plugins/metrics_entities/server/types.ts", - "deprecated": false - } - ] - } - ], - "lifecycle": "setup", - "initialIsOpen": true - }, - "start": { - "parentPluginId": "metricsEntities", - "id": "def-server.MetricsEntitiesPluginStart", - "type": "Type", - "tags": [], - "label": "MetricsEntitiesPluginStart", - "description": [], - "signature": [ - "void" - ], - "path": "x-pack/plugins/metrics_entities/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/metrics_entities.mdx b/api_docs/metrics_entities.mdx deleted file mode 100644 index cbe21f8f4da51..0000000000000 --- a/api_docs/metrics_entities.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: kibMetricsEntitiesPluginApi -slug: /kibana-dev-docs/api/metricsEntities -title: "metricsEntities" -image: https://source.unsplash.com/400x175/?github -summary: API docs for the metricsEntities plugin -date: 2022-04-05 -tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsEntities'] -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 metricsEntitiesObj from './metrics_entities.devdocs.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 | -|-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 1 | - -## Server - -### Setup - - -### Start - - diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index f78b0773ab8b7..c53f258b23ce2 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github summary: API docs for the ml plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] 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. --- diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 9d4656621ad0b..f4ccaa0afb22f 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github summary: API docs for the monitoring plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] 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. --- diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index fd085531e49d8..6862c66127338 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github summary: API docs for the monitoringCollection plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] 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. --- diff --git a/api_docs/navigation.devdocs.json b/api_docs/navigation.devdocs.json index 7512f5d4cd86e..8c183c4b321ad 100644 --- a/api_docs/navigation.devdocs.json +++ b/api_docs/navigation.devdocs.json @@ -143,7 +143,7 @@ "label": "start", "description": [], "signature": [ - "({ i18n }: ", + "(core: ", { "pluginId": "core", "scope": "public", @@ -170,7 +170,7 @@ "id": "def-public.NavigationPublicPlugin.start.$1", "type": "Object", "tags": [], - "label": "{ i18n }", + "label": "core", "description": [], "signature": [ { @@ -410,9 +410,9 @@ "DisambiguateSet", "<(", "DisambiguateSet", - " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\">) | (", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\">), WithSpanProps> & WithSpanProps & { iconType?: ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">), WithSpanProps> & WithSpanProps & { iconType?: ", "IconType", " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", "ToolTipPositions", @@ -426,9 +426,9 @@ "DisambiguateSet", "<(", "DisambiguateSet", - " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\">) | (", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\">), WithSpanProps> & WithSpanProps & { iconType?: ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">), WithSpanProps> & WithSpanProps & { iconType?: ", "IconType", " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", "ToolTipPositions", @@ -444,11 +444,11 @@ "DisambiguateSet", " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\">) | (", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\">)> & ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", "DisambiguateSet", - " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\"> & { iconType?: ", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\"> & { iconType?: ", "IconType", " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", "ToolTipPositions", @@ -462,11 +462,11 @@ "DisambiguateSet", " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\">) | (", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\">)> & ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", "DisambiguateSet", - " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\"> & { iconType?: ", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\"> & { iconType?: ", "IconType", " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", "ToolTipPositions", @@ -482,11 +482,11 @@ "DisambiguateSet", " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\">) | (", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\">)> & ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", "DisambiguateSet", - " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\"> & { iconType?: ", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\"> & { iconType?: ", "IconType", " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", "ToolTipPositions", @@ -502,11 +502,11 @@ "DisambiguateSet", " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\">) | (", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\">)> & ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\"> & { iconType?: ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\"> & { iconType?: ", "IconType", " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", "ToolTipPositions", @@ -520,11 +520,11 @@ "DisambiguateSet", " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\">) | (", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\">)> & ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\"> & { iconType?: ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\"> & { iconType?: ", "IconType", " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", "ToolTipPositions", @@ -540,11 +540,11 @@ "DisambiguateSet", " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"onClick\" | \"color\" | \"href\">) | (", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\">)> & ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", "DisambiguateSet", - " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"onClick\" | \"color\"> & { iconType?: ", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\"> & { iconType?: ", "IconType", " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", "ToolTipPositions", diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 5c0088964dbc6..a7aee0a91e834 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github summary: API docs for the navigation plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] 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. --- diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 1e3cfb7a6fa96..9dc6262d29612 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github summary: API docs for the newsfeed plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] 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. --- diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 6dde3e0820d9a..1167181e14f56 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -678,9 +678,9 @@ }, " | undefined; }; selectedAlertId?: string | undefined; } & ", "CommonProps", - " & { as?: \"div\" | undefined; } & _EuiFlyoutProps & Omit, HTMLDivElement>, keyof _EuiFlyoutProps> & Omit, HTMLDivElement>, \"key\" | \"css\" | keyof React.HTMLAttributes> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }, \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"title\" | \"id\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"as\" | keyof ", + " & { as?: \"div\" | undefined; } & _EuiFlyoutProps & Omit, HTMLDivElement>, keyof _EuiFlyoutProps> & Omit, HTMLDivElement>, \"key\" | \"css\" | keyof React.HTMLAttributes> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }, \"children\" | \"color\" | \"title\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"id\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"as\" | keyof ", "CommonProps", - " | keyof React.ClassAttributes | keyof _EuiFlyoutProps>, \"children\" | \"onClick\" | \"onChange\" | \"color\" | \"onKeyDown\" | \"alert\" | \"key\" | \"title\" | \"id\" | \"css\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"as\" | keyof ", + " | keyof React.ClassAttributes | keyof _EuiFlyoutProps>, \"children\" | \"alert\" | \"color\" | \"title\" | \"onChange\" | \"onKeyDown\" | \"onClick\" | \"key\" | \"id\" | \"css\" | \"security\" | \"defaultValue\" | \"hidden\" | \"defaultChecked\" | \"suppressContentEditableWarning\" | \"suppressHydrationWarning\" | \"accessKey\" | \"contentEditable\" | \"contextMenu\" | \"dir\" | \"draggable\" | \"lang\" | \"placeholder\" | \"slot\" | \"spellCheck\" | \"tabIndex\" | \"translate\" | \"radioGroup\" | \"about\" | \"datatype\" | \"inlist\" | \"prefix\" | \"property\" | \"resource\" | \"typeof\" | \"vocab\" | \"autoCapitalize\" | \"autoCorrect\" | \"autoSave\" | \"itemProp\" | \"itemScope\" | \"itemType\" | \"itemID\" | \"itemRef\" | \"results\" | \"unselectable\" | \"inputMode\" | \"is\" | \"aria-activedescendant\" | \"aria-atomic\" | \"aria-autocomplete\" | \"aria-busy\" | \"aria-checked\" | \"aria-colcount\" | \"aria-colindex\" | \"aria-colspan\" | \"aria-controls\" | \"aria-current\" | \"aria-describedby\" | \"aria-details\" | \"aria-disabled\" | \"aria-dropeffect\" | \"aria-errormessage\" | \"aria-expanded\" | \"aria-flowto\" | \"aria-grabbed\" | \"aria-haspopup\" | \"aria-hidden\" | \"aria-invalid\" | \"aria-keyshortcuts\" | \"aria-labelledby\" | \"aria-level\" | \"aria-live\" | \"aria-modal\" | \"aria-multiline\" | \"aria-multiselectable\" | \"aria-orientation\" | \"aria-owns\" | \"aria-placeholder\" | \"aria-posinset\" | \"aria-pressed\" | \"aria-readonly\" | \"aria-relevant\" | \"aria-required\" | \"aria-roledescription\" | \"aria-rowcount\" | \"aria-rowindex\" | \"aria-rowspan\" | \"aria-selected\" | \"aria-setsize\" | \"aria-sort\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"dangerouslySetInnerHTML\" | \"onCopy\" | \"onCopyCapture\" | \"onCut\" | \"onCutCapture\" | \"onPaste\" | \"onPasteCapture\" | \"onCompositionEnd\" | \"onCompositionEndCapture\" | \"onCompositionStart\" | \"onCompositionStartCapture\" | \"onCompositionUpdate\" | \"onCompositionUpdateCapture\" | \"onFocus\" | \"onFocusCapture\" | \"onBlur\" | \"onBlurCapture\" | \"onChangeCapture\" | \"onBeforeInput\" | \"onBeforeInputCapture\" | \"onInput\" | \"onInputCapture\" | \"onReset\" | \"onResetCapture\" | \"onSubmit\" | \"onSubmitCapture\" | \"onInvalid\" | \"onInvalidCapture\" | \"onLoad\" | \"onLoadCapture\" | \"onError\" | \"onErrorCapture\" | \"onKeyDownCapture\" | \"onKeyPress\" | \"onKeyPressCapture\" | \"onKeyUp\" | \"onKeyUpCapture\" | \"onAbort\" | \"onAbortCapture\" | \"onCanPlay\" | \"onCanPlayCapture\" | \"onCanPlayThrough\" | \"onCanPlayThroughCapture\" | \"onDurationChange\" | \"onDurationChangeCapture\" | \"onEmptied\" | \"onEmptiedCapture\" | \"onEncrypted\" | \"onEncryptedCapture\" | \"onEnded\" | \"onEndedCapture\" | \"onLoadedData\" | \"onLoadedDataCapture\" | \"onLoadedMetadata\" | \"onLoadedMetadataCapture\" | \"onLoadStart\" | \"onLoadStartCapture\" | \"onPause\" | \"onPauseCapture\" | \"onPlay\" | \"onPlayCapture\" | \"onPlaying\" | \"onPlayingCapture\" | \"onProgress\" | \"onProgressCapture\" | \"onRateChange\" | \"onRateChangeCapture\" | \"onSeeked\" | \"onSeekedCapture\" | \"onSeeking\" | \"onSeekingCapture\" | \"onStalled\" | \"onStalledCapture\" | \"onSuspend\" | \"onSuspendCapture\" | \"onTimeUpdate\" | \"onTimeUpdateCapture\" | \"onVolumeChange\" | \"onVolumeChangeCapture\" | \"onWaiting\" | \"onWaitingCapture\" | \"onAuxClick\" | \"onAuxClickCapture\" | \"onClickCapture\" | \"onContextMenu\" | \"onContextMenuCapture\" | \"onDoubleClick\" | \"onDoubleClickCapture\" | \"onDrag\" | \"onDragCapture\" | \"onDragEnd\" | \"onDragEndCapture\" | \"onDragEnter\" | \"onDragEnterCapture\" | \"onDragExit\" | \"onDragExitCapture\" | \"onDragLeave\" | \"onDragLeaveCapture\" | \"onDragOver\" | \"onDragOverCapture\" | \"onDragStart\" | \"onDragStartCapture\" | \"onDrop\" | \"onDropCapture\" | \"onMouseDown\" | \"onMouseDownCapture\" | \"onMouseEnter\" | \"onMouseLeave\" | \"onMouseMove\" | \"onMouseMoveCapture\" | \"onMouseOut\" | \"onMouseOutCapture\" | \"onMouseOver\" | \"onMouseOverCapture\" | \"onMouseUp\" | \"onMouseUpCapture\" | \"onSelect\" | \"onSelectCapture\" | \"onTouchCancel\" | \"onTouchCancelCapture\" | \"onTouchEnd\" | \"onTouchEndCapture\" | \"onTouchMove\" | \"onTouchMoveCapture\" | \"onTouchStart\" | \"onTouchStartCapture\" | \"onPointerDown\" | \"onPointerDownCapture\" | \"onPointerMove\" | \"onPointerMoveCapture\" | \"onPointerUp\" | \"onPointerUpCapture\" | \"onPointerCancel\" | \"onPointerCancelCapture\" | \"onPointerEnter\" | \"onPointerEnterCapture\" | \"onPointerLeave\" | \"onPointerLeaveCapture\" | \"onPointerOver\" | \"onPointerOverCapture\" | \"onPointerOut\" | \"onPointerOutCapture\" | \"onGotPointerCapture\" | \"onGotPointerCaptureCapture\" | \"onLostPointerCapture\" | \"onLostPointerCaptureCapture\" | \"onScroll\" | \"onScrollCapture\" | \"onWheel\" | \"onWheelCapture\" | \"onAnimationStart\" | \"onAnimationStartCapture\" | \"onAnimationEnd\" | \"onAnimationEndCapture\" | \"onAnimationIteration\" | \"onAnimationIterationCapture\" | \"onTransitionEnd\" | \"onTransitionEndCapture\" | \"as\" | keyof ", "CommonProps", " | \"alerts\" | keyof _EuiFlyoutProps | \"isInApp\" | \"observabilityRuleTypeRegistry\" | \"selectedAlertId\"> & { ref?: React.RefObject | ((instance: HTMLDivElement | null) => void) | null | undefined; }> & { readonly _result: ({ alert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => JSX.Element | null; }" ], @@ -3683,13 +3683,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined" ], "path": "x-pack/plugins/observability/public/components/shared/exploratory_view/types.ts", @@ -4798,7 +4792,7 @@ "DisambiguateSet", ", Omit, \"href\">> & Omit, \"href\">) | (", "DisambiguateSet", - ", \"href\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes))), \"onClick\" | \"color\" | \"rel\" | \"target\"> & { size?: ItemSize | undefined; color?: Color | undefined; label: React.ReactNode; isActive?: boolean | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; iconType?: ", + ", \"href\">, React.ButtonHTMLAttributes> & React.ButtonHTMLAttributes))), \"color\" | \"onClick\" | \"rel\" | \"target\"> & { size?: ItemSize | undefined; color?: Color | undefined; label: React.ReactNode; isActive?: boolean | undefined; isDisabled?: boolean | undefined; href?: string | undefined; target?: string | undefined; rel?: string | undefined; iconType?: ", "IconType", " | undefined; iconProps?: Omit<", "EuiIconProps", @@ -6859,12 +6853,35 @@ { "parentPluginId": "observability", "id": "def-server.ObservabilityRouteHandlerResources.context", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "context", "description": [], "signature": [ - "ObservabilityRequestHandlerContext" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + " & { licensing: Promise<", + { + "pluginId": "licensing", + "scope": "server", + "docId": "kibLicensingPluginApi", + "section": "def-server.LicensingApiRequestHandlerContext", + "text": "LicensingApiRequestHandlerContext" + }, + ">; alerting: Promise<", + { + "pluginId": "alerting", + "scope": "server", + "docId": "kibAlertingPluginApi", + "section": "def-server.AlertingApiRequestHandlerContext", + "text": "AlertingApiRequestHandlerContext" + }, + ">; }" ], "path": "x-pack/plugins/observability/server/routes/types.ts", "deprecated": false @@ -7077,7 +7094,7 @@ "section": "def-server.RequestHandlerContext", "text": "RequestHandlerContext" }, - " & { licensing: ", + " & { licensing: Promise<", { "pluginId": "licensing", "scope": "server", @@ -7085,7 +7102,7 @@ "section": "def-server.LicensingApiRequestHandlerContext", "text": "LicensingApiRequestHandlerContext" }, - "; }, request: ", + ">; }, request: ", { "pluginId": "core", "scope": "server", @@ -7168,11 +7185,82 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-common.getProbabilityFromProgressiveLoadingQuality", + "type": "Function", + "tags": [], + "label": "getProbabilityFromProgressiveLoadingQuality", + "description": [], + "signature": [ + "(quality: ", + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.ProgressiveLoadingQuality", + "text": "ProgressiveLoadingQuality" + }, + ") => number" + ], + "path": "x-pack/plugins/observability/common/progressive_loading.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-common.getProbabilityFromProgressiveLoadingQuality.$1", + "type": "Enum", + "tags": [], + "label": "quality", + "description": [], + "signature": [ + { + "pluginId": "observability", + "scope": "common", + "docId": "kibObservabilityPluginApi", + "section": "def-common.ProgressiveLoadingQuality", + "text": "ProgressiveLoadingQuality" + } + ], + "path": "x-pack/plugins/observability/common/progressive_loading.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [], - "enums": [], + "enums": [ + { + "parentPluginId": "observability", + "id": "def-common.ProgressiveLoadingQuality", + "type": "Enum", + "tags": [], + "label": "ProgressiveLoadingQuality", + "description": [], + "path": "x-pack/plugins/observability/common/progressive_loading.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "misc": [ + { + "parentPluginId": "observability", + "id": "def-common.apmProgressiveLoading", + "type": "string", + "tags": [], + "label": "apmProgressiveLoading", + "description": [], + "signature": [ + "\"observability:apmProgressiveLoading\"" + ], + "path": "x-pack/plugins/observability/common/ui_settings_keys.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "observability", "id": "def-common.apmServiceInventoryOptimizedSorting", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 9675c6927423c..958f5d5f0f061 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github summary: API docs for the observability plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] 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. --- @@ -18,7 +18,7 @@ Contact [Observability UI](https://github.com/orgs/elastic/teams/observability-u | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 369 | 2 | 366 | 31 | +| 373 | 2 | 370 | 30 | ## Client @@ -62,6 +62,9 @@ Contact [Observability UI](https://github.com/orgs/elastic/teams/observability-u ### Functions +### Enums + + ### Consts, variables and types diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 7c84da2e6ca7a..e5785b58293ea 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github summary: API docs for the osquery plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] 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. --- diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 84e92c68c5944..f43ac68f5f298 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -3,7 +3,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory summary: Directory of public APIs available through plugins or packages. -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana'] 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. --- @@ -12,37 +12,37 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 231 | 188 | 35 | +| 247 | 201 | 35 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 25613 | 171 | 19521 | 1128 | +| 25958 | 170 | 19687 | 1153 | ## Plugin Directory | Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 127 | 0 | 127 | 10 | +| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 195 | 0 | 191 | 11 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 23 | 0 | 19 | 1 | -| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 334 | 0 | 325 | 20 | +| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 325 | 0 | 316 | 19 | | | [APM UI](https://github.com/orgs/elastic/teams/apm-ui) | The user interface for Elastic APM | 40 | 0 | 40 | 50 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 9 | 0 | 9 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Considering using bfetch capabilities when fetching large amounts of data. This services supports batching HTTP requests and streaming responses back. | 78 | 1 | 69 | 2 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Canvas application to Kibana | 9 | 0 | 8 | 3 | -| | [ResponseOps](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 71 | 0 | 58 | 19 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | - | 322 | 2 | 289 | 4 | +| | [ResponseOps](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 71 | 0 | 57 | 19 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | - | 272 | 2 | 253 | 9 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 28 | 0 | 23 | 0 | | | [Cloud Security Posture](https://github.com/orgs/elastic/teams/cloud-posture-security) | The cloud security posture plugin | 14 | 0 | 14 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 13 | 0 | 13 | 1 | -| | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 188 | 0 | 182 | 4 | -| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2497 | 15 | 971 | 33 | +| | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 203 | 0 | 197 | 6 | +| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2524 | 15 | 977 | 33 | | crossClusterReplication | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 98 | 0 | 79 | 1 | -| | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 151 | 0 | 149 | 14 | +| | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 142 | 0 | 140 | 12 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 52 | 0 | 51 | 0 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | 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. | 3426 | 40 | 2816 | 20 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | 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. | 3414 | 38 | 2802 | 18 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | 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. | 16 | 0 | 16 | 2 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | This plugin provides the ability to create data views via a modal flyout from any kibana app | 13 | 0 | 7 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Reusable data view field editor across Kibana | 42 | 0 | 37 | 3 | @@ -50,7 +50,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | 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. | 862 | 3 | 710 | 15 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 23 | 2 | 19 | 1 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 10 | 0 | 8 | 2 | -| | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 77 | 0 | 61 | 7 | +| | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 76 | 0 | 60 | 7 | | | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds embeddables service to Kibana | 476 | 0 | 386 | 4 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Extends embeddable plugin with more functionality | 14 | 0 | 14 | 0 | @@ -60,8 +60,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | The Event Annotation service contains expressions for event annotations | 49 | 0 | 49 | 3 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 91 | 0 | 91 | 9 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'error' renderer to expressions | 17 | 0 | 15 | 2 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression Gauge plugin adds a `gauge` renderer and function to the expression plugin. The renderer will display the `gauge` chart. | 76 | 0 | 76 | 2 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression Heatmap plugin adds a `heatmap` renderer and function to the expression plugin. The renderer will display the `heatmap` chart. | 119 | 0 | 115 | 3 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression Gauge plugin adds a `gauge` renderer and function to the expression plugin. The renderer will display the `gauge` chart. | 61 | 0 | 61 | 2 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression Heatmap plugin adds a `heatmap` renderer and function to the expression plugin. The renderer will display the `heatmap` chart. | 104 | 0 | 100 | 3 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'image' function and renderer to expressions | 26 | 0 | 26 | 0 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'metric' function and renderer to expressions | 32 | 0 | 27 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression MetricVis plugin adds a `metric` renderer and function to the expression plugin. The renderer will display the `metric` chart. | 46 | 0 | 46 | 1 | @@ -71,11 +71,11 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'shape' function and renderer to expressions | 148 | 0 | 146 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression Tagcloud plugin adds a `tagcloud` renderer and function to the expression plugin. The renderer will display the `Wordcloud` chart. | 7 | 0 | 7 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression XY plugin adds a `xy` renderer and function to the expression plugin. The renderer will display the `xy` chart. | 473 | 0 | 463 | 0 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds expression runtime to Kibana | 2145 | 17 | 1701 | 6 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds expression runtime to Kibana | 2158 | 17 | 1713 | 5 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 222 | 0 | 95 | 2 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Index pattern fields and ambiguous values formatters | 286 | 6 | 247 | 3 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 62 | 0 | 62 | 2 | -| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1379 | 8 | 1262 | 9 | +| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1385 | 8 | 1268 | 10 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 68 | 0 | 14 | 5 | | globalSearchBar | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | globalSearchProviders | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | @@ -90,25 +90,24 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 123 | 2 | 96 | 4 | | | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides UI and APIs for the interactive setup mode. | 28 | 0 | 18 | 0 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 6 | 0 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 239 | 0 | 203 | 5 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 240 | 0 | 204 | 5 | | kibanaUsageCollection | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 0 | 0 | 0 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 615 | 3 | 420 | 9 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 542 | 0 | 467 | 29 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 527 | 0 | 452 | 30 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 8 | 0 | 8 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 3 | 0 | 3 | 0 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 | -| | [Security detections response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 198 | 0 | 162 | 49 | +| | [Security detections response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 198 | 0 | 90 | 49 | | logstash | [Logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | - | 41 | 0 | 41 | 6 | -| | [GIS](https://github.com/orgs/elastic/teams/kibana-gis) | - | 223 | 0 | 222 | 27 | +| | [GIS](https://github.com/orgs/elastic/teams/kibana-gis) | - | 224 | 0 | 223 | 25 | | | [GIS](https://github.com/orgs/elastic/teams/kibana-gis) | - | 67 | 0 | 67 | 0 | -| | [Security solution](https://github.com/orgs/elastic/teams/security-solution) | - | 4 | 0 | 4 | 1 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 196 | 8 | 79 | 30 | | | [Stack Monitoring](https://github.com/orgs/elastic/teams/stack-monitoring-ui) | - | 11 | 0 | 9 | 1 | | | [Stack Monitoring](https://github.com/orgs/elastic/teams/stack-monitoring-ui) | - | 9 | 0 | 9 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 34 | 0 | 34 | 2 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | -| | [Observability UI](https://github.com/orgs/elastic/teams/observability-ui) | - | 369 | 2 | 366 | 31 | +| | [Observability UI](https://github.com/orgs/elastic/teams/observability-ui) | - | 373 | 2 | 370 | 30 | | | [Security asset management](https://github.com/orgs/elastic/teams/security-asset-management) | - | 13 | 0 | 13 | 0 | | painlessLab | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 228 | 2 | 177 | 11 | @@ -121,31 +120,31 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 110 | 0 | 97 | 0 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 54 | 0 | 50 | 0 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 90 | 0 | 45 | 0 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 33 | 0 | 14 | 0 | -| | [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 24 | 0 | 12 | 5 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 32 | 0 | 13 | 0 | +| | [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 27 | 0 | 7 | 4 | | searchprofiler | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 183 | 0 | 103 | 0 | -| | [Security solution](https://github.com/orgs/elastic/teams/security-solution) | - | 45 | 0 | 45 | 18 | +| | [Security solution](https://github.com/orgs/elastic/teams/security-solution) | - | 46 | 0 | 46 | 19 | | | [Security Team](https://github.com/orgs/elastic/teams/security-team) | - | 3 | 0 | 3 | 1 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds URL Service and sharing capabilities to Kibana | 113 | 0 | 54 | 10 | | | [Shared UX](https://github.com/orgs/elastic/teams/shared-ux) | A plugin providing components and services for shared user experiences in Kibana. | 4 | 0 | 0 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 21 | 1 | 21 | 1 | | | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides the Spaces feature, which allows saved objects to be organized into meaningful categories. | 260 | 0 | 64 | 0 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 4 | 0 | 4 | 0 | +| synthetics | [Uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 77 | 0 | 39 | 7 | -| | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 43 | 0 | 1 | 0 | +| | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 44 | 0 | 1 | 0 | | | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 32 | 0 | 32 | 6 | | | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 1 | 0 | 1 | 0 | | | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 11 | 0 | 10 | 0 | -| | [Security solution](https://github.com/orgs/elastic/teams/security-solution) | - | 435 | 1 | 331 | 35 | +| | [Security solution](https://github.com/orgs/elastic/teams/security-solution) | - | 434 | 1 | 330 | 35 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the transforms features provided by Elastic. Transforms enable you to convert existing Elasticsearch indices into summarized indices, which provide opportunities for new insights and analytics. | 4 | 0 | 4 | 1 | | translations | [Kibana Localization](https://github.com/orgs/elastic/teams/kibana-localization) | - | 0 | 0 | 0 | 0 | -| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 304 | 0 | 290 | 23 | +| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 321 | 0 | 307 | 25 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds UI Actions service to Kibana | 130 | 0 | 91 | 11 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Extends UI Actions plugin with more functionality | 203 | 0 | 141 | 9 | -| | [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-services) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 48 | 1 | 45 | 6 | +| | [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-services) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 79 | 2 | 75 | 11 | | upgradeAssistant | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | -| uptime | [Uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | | urlDrilldown | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | - | 12 | 0 | 12 | 0 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 58 | 0 | 15 | 1 | @@ -163,47 +162,57 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Registers the vega visualization. Is the elastic version of vega and vega-lite libraries. | 2 | 0 | 2 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | 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. | 26 | 0 | 25 | 1 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | 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. | 57 | 0 | 51 | 5 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 363 | 12 | 342 | 14 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 365 | 12 | 344 | 14 | | watcher | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | ## Package Directory | Package name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [Owner missing] | - | 82 | 1 | 11 | 0 | -| | [Owner missing] | Elastic APM trace data generator | 62 | 0 | 62 | 9 | -| | [Owner missing] | elasticsearch datemath parser, used in kibana | 44 | 0 | 43 | 0 | +| | [Owner missing] | Elastic APM trace data generator | 70 | 0 | 70 | 10 | | | [Owner missing] | - | 11 | 5 | 11 | 0 | | | [Owner missing] | Alerts components and hooks | 9 | 1 | 9 | 0 | | | Ahmad Bamieh ahmadbamieh@gmail.com | Kibana Analytics tool | 69 | 0 | 69 | 2 | +| | [Owner missing] | - | 88 | 1 | 10 | 0 | +| | [Owner missing] | - | 18 | 0 | 13 | 0 | | | [Owner missing] | - | 16 | 0 | 16 | 0 | | | [Owner missing] | - | 11 | 0 | 11 | 0 | | | [Owner missing] | - | 10 | 0 | 10 | 0 | -| | [Owner missing] | - | 12 | 0 | 5 | 1 | +| | [Owner missing] | - | 18 | 0 | 9 | 1 | +| | [Owner missing] | - | 4 | 0 | 4 | 0 | +| | [Owner missing] | - | 8 | 0 | 7 | 0 | +| | [Owner missing] | - | 7 | 0 | 2 | 0 | +| | [Owner missing] | - | 59 | 0 | 15 | 0 | | | [Owner missing] | - | 2 | 0 | 2 | 0 | -| | [Owner missing] | - | 66 | 0 | 46 | 2 | -| | [Owner missing] | - | 125 | 3 | 123 | 17 | +| | [Owner missing] | - | 106 | 0 | 80 | 1 | +| | [Owner missing] | - | 64 | 0 | 44 | 2 | +| | [Owner missing] | - | 129 | 3 | 127 | 17 | | | [Owner missing] | - | 13 | 0 | 7 | 0 | -| | [Owner missing] | - | 277 | 3 | 199 | 1 | -| | [Owner missing] | - | 63 | 0 | 63 | 2 | +| | [Owner missing] | elasticsearch datemath parser, used in kibana | 44 | 0 | 43 | 0 | +| | [Owner missing] | - | 120 | 3 | 109 | 0 | +| | [Owner missing] | - | 64 | 0 | 64 | 2 | | | [Owner missing] | - | 1 | 0 | 1 | 0 | | | [Owner missing] | - | 27 | 0 | 14 | 1 | | | [Owner missing] | - | 213 | 1 | 159 | 11 | -| | [Owner missing] | - | 13 | 0 | 6 | 0 | +| | [Owner missing] | - | 2 | 0 | 1 | 0 | | | [Owner missing] | - | 20 | 0 | 16 | 0 | +| | [Owner missing] | - | 2 | 0 | 0 | 0 | | | [Owner missing] | - | 1 | 0 | 0 | 0 | | | [Owner missing] | - | 51 | 0 | 48 | 0 | +| | [Owner missing] | - | 43 | 0 | 36 | 0 | | | App Services | - | 35 | 4 | 35 | 0 | | | [Owner missing] | - | 20 | 0 | 20 | 2 | +| | [Owner missing] | - | 13 | 0 | 13 | 0 | +| | [Owner missing] | - | 69 | 0 | 69 | 0 | | | [Owner missing] | - | 30 | 0 | 5 | 36 | | | [Owner missing] | - | 8 | 0 | 8 | 0 | -| | [Owner missing] | - | 466 | 1 | 1 | 0 | +| | [Owner missing] | - | 494 | 1 | 1 | 0 | | | [Owner missing] | - | 55 | 0 | 55 | 2 | | | [Owner missing] | - | 45 | 0 | 45 | 10 | -| | [Owner missing] | - | 28 | 0 | 27 | 0 | +| | [Owner missing] | - | 30 | 0 | 29 | 0 | | | [Owner missing] | - | 1 | 0 | 1 | 0 | | | [Owner missing] | Just some helpers for kibana plugin devs. | 1 | 0 | 1 | 0 | -| | [Owner missing] | - | 63 | 0 | 49 | 5 | +| | [Owner missing] | - | 47 | 0 | 35 | 5 | | | [Owner missing] | - | 21 | 0 | 10 | 0 | | | [Owner missing] | - | 74 | 0 | 71 | 0 | | | [Owner missing] | Security Solution auto complete | 50 | 1 | 35 | 0 | @@ -222,18 +231,22 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Owner missing] | security solution utilities to use across plugins such lists, security_solution, cases, etc... | 31 | 0 | 29 | 0 | | | [Owner missing] | - | 53 | 0 | 50 | 1 | | | [Owner missing] | - | 25 | 0 | 24 | 1 | -| | [Owner missing] | - | 32 | 0 | 4 | 4 | +| | [Owner missing] | - | 12 | 0 | 2 | 3 | +| | [Owner missing] | - | 34 | 0 | 6 | 6 | | | [Owner missing] | - | 67 | 0 | 43 | 0 | | | [Owner missing] | - | 10 | 0 | 2 | 0 | | | [Owner missing] | - | 9 | 0 | 3 | 0 | -| | [Owner missing] | - | 96 | 1 | 63 | 2 | +| | [Owner missing] | - | 2 | 0 | 2 | 0 | +| | [Owner missing] | - | 92 | 1 | 59 | 1 | +| | [Owner missing] | - | 4 | 0 | 2 | 0 | | | Operations | - | 22 | 2 | 21 | 0 | | | [Owner missing] | - | 2 | 0 | 2 | 0 | | | Operations | - | 252 | 6 | 214 | 9 | | | [Owner missing] | - | 132 | 8 | 103 | 2 | +| | [Owner missing] | - | 72 | 0 | 55 | 0 | | | [Owner missing] | - | 29 | 0 | 2 | 0 | | | [Owner missing] | - | 83 | 0 | 83 | 1 | | | [Owner missing] | - | 7 | 0 | 6 | 0 | -| | [Owner missing] | - | 27 | 0 | 10 | 1 | +| | [Owner missing] | - | 28 | 0 | 10 | 1 | | | [Owner missing] | - | 31 | 1 | 21 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index ad2ac1542b0e2..edceb320dace9 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github summary: API docs for the presentationUtil plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] 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. --- diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index b4d4cc4459eb6..a05a7407d5658 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github summary: API docs for the remoteClusters plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] 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. --- diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 976c1fc50da8d..185a48b5d4218 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github summary: API docs for the reporting plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] 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. --- diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index febdb7ef3b9de..b9e0c8be22113 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github summary: API docs for the rollup plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] 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. --- diff --git a/api_docs/rule_registry.devdocs.json b/api_docs/rule_registry.devdocs.json index 7bf4b15d0ef30..194d13b78917a 100644 --- a/api_docs/rule_registry.devdocs.json +++ b/api_docs/rule_registry.devdocs.json @@ -1376,9 +1376,7 @@ }, ">) => Promise; id: string; name: string; validate?: { params?: ", "RuleTypeParamsValidator", - " | undefined; } | undefined; cancelAlertsOnRuleTimeout?: boolean | undefined; config?: ", - "RuleTypeConfig", - " | undefined; actionGroups: ", + " | undefined; } | undefined; cancelAlertsOnRuleTimeout?: boolean | undefined; actionGroups: ", { "pluginId": "alerting", "scope": "common", diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 854a6a476ec5a..e9a4921bf6d5a 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github summary: API docs for the ruleRegistry plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] 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. --- diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 8a045ddd337d6..f582632ea2d18 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github summary: API docs for the runtimeFields plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] 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. --- diff --git a/api_docs/saved_objects.devdocs.json b/api_docs/saved_objects.devdocs.json index c8dbdfc152759..fe5794ec8c9ef 100644 --- a/api_docs/saved_objects.devdocs.json +++ b/api_docs/saved_objects.devdocs.json @@ -587,14 +587,6 @@ "plugin": "embeddable", "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx" }, - { - "plugin": "presentationUtil", - "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" - }, - { - "plugin": "presentationUtil", - "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" - }, { "plugin": "discover", "path": "src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx" @@ -603,6 +595,14 @@ "plugin": "discover", "path": "src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx" }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" + }, + { + "plugin": "presentationUtil", + "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" + }, { "plugin": "dashboard", "path": "src/plugins/dashboard/public/services/saved_objects.ts" @@ -1607,22 +1607,6 @@ "plugin": "savedObjectsTaggingOss", "path": "src/plugins/saved_objects_tagging_oss/public/api.ts" }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts" - }, { "plugin": "savedObjectsTaggingOss", "path": "src/plugins/saved_objects_tagging_oss/public/decorator/types.ts" @@ -1639,6 +1623,22 @@ "plugin": "savedObjectsTaggingOss", "path": "src/plugins/saved_objects_tagging_oss/public/api.ts" }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts" + }, { "plugin": "dashboard", "path": "src/plugins/dashboard/public/services/saved_object_loader.ts" @@ -3191,44 +3191,7 @@ "path": "src/plugins/saved_objects/public/plugin.ts", "deprecated": true, "removeBy": "8.8.0", - "references": [ - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/listing/dashboard_listing.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/listing/dashboard_listing.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/list_page/maps_list_view.tsx" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/apps/listing_route.tsx" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/apps/listing_route.tsx" - } - ] + "references": [] } ], "lifecycle": "start", diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 977cd0b83c007..204b0f19f5d68 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjects plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] 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. --- diff --git a/api_docs/saved_objects_management.devdocs.json b/api_docs/saved_objects_management.devdocs.json index a7fe1019e0858..baa484f82f10d 100644 --- a/api_docs/saved_objects_management.devdocs.json +++ b/api_docs/saved_objects_management.devdocs.json @@ -278,7 +278,7 @@ "label": "euiColumn", "description": [], "signature": [ - "{ children?: React.ReactNode; onClick?: React.MouseEventHandler | undefined; onChange?: React.FormEventHandler | undefined; color?: string | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; className?: string | undefined; title?: string | undefined; id?: string | undefined; description?: string | undefined; security?: string | undefined; name: React.ReactNode; field: (string & {}) | keyof ", + "{ children?: React.ReactNode; color?: string | undefined; className?: string | undefined; title?: string | undefined; onChange?: React.FormEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; id?: string | undefined; description?: string | undefined; security?: string | undefined; name: React.ReactNode; field: (string & {}) | keyof ", { "pluginId": "savedObjectsManagement", "scope": "public", @@ -501,7 +501,7 @@ "label": "obj", "description": [], "signature": [ - "{ type: string; id: string; meta: { title?: string | undefined; icon?: string | undefined; }; overwrite?: boolean | undefined; }" + "{ id: string; type: string; meta: { title?: string | undefined; icon?: string | undefined; }; overwrite?: boolean | undefined; }" ], "path": "src/plugins/saved_objects_management/public/lib/process_import_response.ts", "deprecated": false diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 19d9efeb08286..0f610adb83a73 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsManagement plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] 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. --- diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 10b3bdaa00b3f..e8b5d1d6a8d6b 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsTagging plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] 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. --- diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 9d5079950e171..ed29900a22d7a 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsTaggingOss plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] 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. --- diff --git a/api_docs/screenshot_mode.devdocs.json b/api_docs/screenshot_mode.devdocs.json index 65ac948800747..fead68be2cb62 100644 --- a/api_docs/screenshot_mode.devdocs.json +++ b/api_docs/screenshot_mode.devdocs.json @@ -96,51 +96,7 @@ "initialIsOpen": false } ], - "interfaces": [ - { - "parentPluginId": "screenshotMode", - "id": "def-server.ScreenshotModeRequestHandlerContext", - "type": "Interface", - "tags": [], - "label": "ScreenshotModeRequestHandlerContext", - "description": [], - "signature": [ - { - "pluginId": "screenshotMode", - "scope": "server", - "docId": "kibScreenshotModePluginApi", - "section": "def-server.ScreenshotModeRequestHandlerContext", - "text": "ScreenshotModeRequestHandlerContext" - }, - " extends ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RequestHandlerContext", - "text": "RequestHandlerContext" - } - ], - "path": "src/plugins/screenshot_mode/server/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "screenshotMode", - "id": "def-server.ScreenshotModeRequestHandlerContext.screenshotMode", - "type": "Object", - "tags": [], - "label": "screenshotMode", - "description": [], - "signature": [ - "{ isScreenshot: boolean; }" - ], - "path": "src/plugins/screenshot_mode/server/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ], + "interfaces": [], "enums": [], "misc": [ { @@ -167,6 +123,27 @@ "path": "src/plugins/screenshot_mode/common/constants.ts", "deprecated": false, "initialIsOpen": false + }, + { + "parentPluginId": "screenshotMode", + "id": "def-server.ScreenshotModeRequestHandlerContext", + "type": "Type", + "tags": [], + "label": "ScreenshotModeRequestHandlerContext", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + " & { screenshotMode: Promise<{ isScreenshot: boolean; }>; }" + ], + "path": "src/plugins/screenshot_mode/server/types.ts", + "deprecated": false, + "initialIsOpen": false } ], "objects": [], diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index ad29af1bd007a..5782e32098b7f 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github summary: API docs for the screenshotMode plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] 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. --- @@ -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 | |-------------------|-----------|------------------------|-----------------| -| 33 | 0 | 14 | 0 | +| 32 | 0 | 13 | 0 | ## Client @@ -42,9 +42,6 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services ### Functions -### Interfaces - - ### Consts, variables and types diff --git a/api_docs/screenshotting.devdocs.json b/api_docs/screenshotting.devdocs.json index fe79cd45375c2..7b1a506b3accb 100644 --- a/api_docs/screenshotting.devdocs.json +++ b/api_docs/screenshotting.devdocs.json @@ -4,8 +4,47 @@ "classes": [], "functions": [], "interfaces": [], - "enums": [], - "misc": [], + "enums": [ + { + "parentPluginId": "screenshotting", + "id": "def-public.LayoutTypes", + "type": "Enum", + "tags": [], + "label": "LayoutTypes", + "description": [ + "\nSupported layout types." + ], + "path": "x-pack/plugins/screenshotting/common/layout.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "screenshotting", + "id": "def-public.LayoutParams", + "type": "Type", + "tags": [], + "label": "LayoutParams", + "description": [ + "\nScreenshot layout parameters." + ], + "signature": [ + "{ id?: Id | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", + "LayoutSelectorDictionary", + "> | undefined; zoom?: number | undefined; } extends ", + "SerializableRecord", + " ? ", + "SerializableRecord", + " & { id?: Id | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", + "LayoutSelectorDictionary", + "> | undefined; zoom?: number | undefined; } : never" + ], + "path": "x-pack/plugins/screenshotting/common/layout.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "objects": [] }, "server": { @@ -30,19 +69,35 @@ "text": "PdfScreenshotOptions" }, " extends ", - "ScreenshotOptions", - "<\"pdf\">" + "CaptureOptions" ], "path": "x-pack/plugins/screenshotting/server/formats/pdf/index.ts", "deprecated": false, "children": [ + { + "parentPluginId": "screenshotting", + "id": "def-server.PdfScreenshotOptions.format", + "type": "string", + "tags": [], + "label": "format", + "description": [ + "\nWhether to format the output as a PDF." + ], + "signature": [ + "\"pdf\"" + ], + "path": "x-pack/plugins/screenshotting/server/formats/pdf/index.ts", + "deprecated": false + }, { "parentPluginId": "screenshotting", "id": "def-server.PdfScreenshotOptions.title", "type": "string", "tags": [], "label": "title", - "description": [], + "description": [ + "\nDocument title." + ], "signature": [ "string | undefined" ], @@ -55,7 +110,9 @@ "type": "string", "tags": [], "label": "logo", - "description": [], + "description": [ + "\nLogo at the footer." + ], "signature": [ "string | undefined" ], @@ -72,9 +129,17 @@ "\nWe default to the \"print\" layout if no ID is specified for the layout" ], "signature": [ - "{ id?: \"canvas\" | \"print\" | \"preserve_layout\" | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", + "{ id?: ", + { + "pluginId": "screenshotting", + "scope": "common", + "docId": "kibScreenshottingPluginApi", + "section": "def-common.LayoutTypes", + "text": "LayoutTypes" + }, + " | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", "LayoutSelectorDictionary", - "> | undefined; zoom?: number | undefined; }" + "> | undefined; zoom?: number | undefined; } | undefined" ], "path": "x-pack/plugins/screenshotting/server/formats/pdf/index.ts", "deprecated": false @@ -91,50 +156,65 @@ "description": [ "\nFinal, formatted PDF result" ], - "signature": [ - { - "pluginId": "screenshotting", - "scope": "server", - "docId": "kibScreenshottingPluginApi", - "section": "def-server.PdfScreenshotResult", - "text": "PdfScreenshotResult" - }, - " extends Omit<", - { - "pluginId": "screenshotting", - "scope": "server", - "docId": "kibScreenshottingPluginApi", - "section": "def-server.FormattedScreenshotResult", - "text": "FormattedScreenshotResult" - }, - ", \"results\">" - ], "path": "x-pack/plugins/screenshotting/server/formats/pdf/index.ts", "deprecated": false, "children": [ { "parentPluginId": "screenshotting", "id": "def-server.PdfScreenshotResult.metrics", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "metrics", - "description": [], + "description": [ + "\nCollected performance metrics during the screenshotting session along with the PDF generation ones." + ], "signature": [ - "PerformanceMetrics", - " & { pageCount: number; }" + "PdfScreenshotMetrics" ], "path": "x-pack/plugins/screenshotting/server/formats/pdf/index.ts", "deprecated": false }, { "parentPluginId": "screenshotting", - "id": "def-server.PdfScreenshotResult.result", + "id": "def-server.PdfScreenshotResult.data", "type": "Object", "tags": [], - "label": "result", - "description": [], + "label": "data", + "description": [ + "\nPDF document data buffer." + ], "signature": [ - "{ data: Buffer; errors: Error[]; renderErrors: string[]; }" + "Buffer" + ], + "path": "x-pack/plugins/screenshotting/server/formats/pdf/index.ts", + "deprecated": false + }, + { + "parentPluginId": "screenshotting", + "id": "def-server.PdfScreenshotResult.errors", + "type": "Array", + "tags": [], + "label": "errors", + "description": [ + "\nAny errors that were encountered while create the PDF and navigating between pages" + ], + "signature": [ + "Error[]" + ], + "path": "x-pack/plugins/screenshotting/server/formats/pdf/index.ts", + "deprecated": false + }, + { + "parentPluginId": "screenshotting", + "id": "def-server.PdfScreenshotResult.renderErrors", + "type": "Array", + "tags": [], + "label": "renderErrors", + "description": [ + "\nAny render errors that could mean some visualizations are missing from the end result." + ], + "signature": [ + "string[]" ], "path": "x-pack/plugins/screenshotting/server/formats/pdf/index.ts", "deprecated": false @@ -160,68 +240,47 @@ "text": "PngScreenshotOptions" }, " extends ", - "ScreenshotOptions", - "<\"png\">" + "CaptureOptions" ], "path": "x-pack/plugins/screenshotting/server/formats/png.ts", "deprecated": false, "children": [ { "parentPluginId": "screenshotting", - "id": "def-server.PngScreenshotOptions.layout", - "type": "Object", - "tags": [], - "label": "layout", - "description": [], + "id": "def-server.PngScreenshotOptions.format", + "type": "string", + "tags": [ + "default" + ], + "label": "format", + "description": [ + "\nWhether to format the output as a PNG." + ], "signature": [ - "{ id?: \"preserve_layout\" | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", - "LayoutSelectorDictionary", - "> | undefined; zoom?: number | undefined; }" + "\"png\" | undefined" ], "path": "x-pack/plugins/screenshotting/server/formats/png.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "screenshotting", - "id": "def-server.PngScreenshotResult", - "type": "Interface", - "tags": [], - "label": "PngScreenshotResult", - "description": [ - "\nThe final output of a PNG screenshot" - ], - "signature": [ - { - "pluginId": "screenshotting", - "scope": "server", - "docId": "kibScreenshottingPluginApi", - "section": "def-server.PngScreenshotResult", - "text": "PngScreenshotResult" }, - " extends ", - { - "pluginId": "screenshotting", - "scope": "server", - "docId": "kibScreenshottingPluginApi", - "section": "def-server.FormattedScreenshotResult", - "text": "FormattedScreenshotResult" - } - ], - "path": "x-pack/plugins/screenshotting/server/formats/png.ts", - "deprecated": false, - "children": [ { "parentPluginId": "screenshotting", - "id": "def-server.PngScreenshotResult.metadata", - "type": "Uncategorized", + "id": "def-server.PngScreenshotOptions.layout", + "type": "Object", "tags": [], - "label": "metadata", + "label": "layout", "description": [], "signature": [ - "undefined" + "{ id?: ", + { + "pluginId": "screenshotting", + "scope": "common", + "docId": "kibScreenshottingPluginApi", + "section": "def-common.LayoutTypes", + "text": "LayoutTypes" + }, + ".PRESERVE_LAYOUT | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", + "LayoutSelectorDictionary", + "> | undefined; zoom?: number | undefined; } | undefined" ], "path": "x-pack/plugins/screenshotting/server/formats/png.ts", "deprecated": false @@ -234,50 +293,67 @@ "misc": [ { "parentPluginId": "screenshotting", - "id": "def-server.FormattedScreenshotResult", + "id": "def-server.PngScreenshotResult", "type": "Type", "tags": [], - "label": "FormattedScreenshotResult", + "label": "PngScreenshotResult", "description": [ - "\nA general, overridable type of screenshot result\n\nPDF or PNG screenshots should extend this and convert the output to a type\nthat best suits their use cases.\n\nThis type documents what might appear on any given output type" + "\nThe final output of a PNG screenshot" ], "signature": [ - "{ metrics?: ", - "PerformanceMetrics", - " | undefined; results: ", - "ScreenshotObservableResult", - "[]; }" + "CaptureResult" ], - "path": "x-pack/plugins/screenshotting/server/formats/types.ts", + "path": "x-pack/plugins/screenshotting/server/formats/png.ts", "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "screenshotting", - "id": "def-server.Layout", + "id": "def-server.ScreenshotOptions", "type": "Type", "tags": [], - "label": "Layout", + "label": "ScreenshotOptions", "description": [], "signature": [ - "BaseLayout", - " & LayoutSelectors & Partial<{ width: number; height: number; }>" + { + "pluginId": "screenshotting", + "scope": "server", + "docId": "kibScreenshottingPluginApi", + "section": "def-server.PdfScreenshotOptions", + "text": "PdfScreenshotOptions" + }, + " | ", + { + "pluginId": "screenshotting", + "scope": "server", + "docId": "kibScreenshottingPluginApi", + "section": "def-server.PngScreenshotOptions", + "text": "PngScreenshotOptions" + } ], - "path": "x-pack/plugins/screenshotting/server/layouts/index.ts", + "path": "x-pack/plugins/screenshotting/server/screenshots/index.ts", "deprecated": false, "initialIsOpen": false }, { "parentPluginId": "screenshotting", - "id": "def-server.UrlOrUrlWithContext", + "id": "def-server.ScreenshotResult", "type": "Type", "tags": [], - "label": "UrlOrUrlWithContext", + "label": "ScreenshotResult", "description": [], "signature": [ - "string | UrlWithContext" + { + "pluginId": "screenshotting", + "scope": "server", + "docId": "kibScreenshottingPluginApi", + "section": "def-server.PdfScreenshotResult", + "text": "PdfScreenshotResult" + }, + " | ", + "CaptureResult" ], - "path": "x-pack/plugins/screenshotting/server/screenshots/observable.ts", + "path": "x-pack/plugins/screenshotting/server/screenshots/index.ts", "deprecated": false, "initialIsOpen": false } @@ -340,25 +416,29 @@ "\nTakes screenshots of multiple pages." ], "signature": [ - "; (options: ", { "pluginId": "screenshotting", "scope": "server", "docId": "kibScreenshottingPluginApi", - "section": "def-server.PngScreenshotOptions", - "text": "PngScreenshotOptions" + "section": "def-server.PdfScreenshotOptions", + "text": "PdfScreenshotOptions" }, - ">(options: O) => ", + "): ", "Observable", - "; (options: ", { "pluginId": "screenshotting", "scope": "server", "docId": "kibScreenshottingPluginApi", - "section": "def-server.PngScreenshotResult", - "text": "PngScreenshotResult" + "section": "def-server.ScreenshotOptions", + "text": "ScreenshotOptions" }, - ">" - ], - "path": "x-pack/plugins/screenshotting/server/plugin.ts", - "deprecated": false, - "children": [ + "): ", + "Observable", + "<", { - "parentPluginId": "screenshotting", - "id": "def-server.ScreenshottingStart.getScreenshots.$1", - "type": "Uncategorized", - "tags": [], - "label": "options", - "description": [ - "Screenshots session options." - ], - "signature": [ - "O" - ], - "path": "x-pack/plugins/screenshotting/server/plugin.ts", - "deprecated": false, - "isRequired": true - } + "pluginId": "screenshotting", + "scope": "server", + "docId": "kibScreenshottingPluginApi", + "section": "def-server.ScreenshotResult", + "text": "ScreenshotResult" + }, + ">; }" ], - "returnComment": [ - "Observable with screenshotting results." - ] + "path": "x-pack/plugins/screenshotting/server/plugin.ts", + "deprecated": false } ], "lifecycle": "start", @@ -409,7 +478,21 @@ "classes": [], "functions": [], "interfaces": [], - "enums": [], + "enums": [ + { + "parentPluginId": "screenshotting", + "id": "def-common.LayoutTypes", + "type": "Enum", + "tags": [], + "label": "LayoutTypes", + "description": [ + "\nSupported layout types." + ], + "path": "x-pack/plugins/screenshotting/common/layout.ts", + "deprecated": false, + "initialIsOpen": false + } + ], "misc": [ { "parentPluginId": "screenshotting", @@ -421,76 +504,63 @@ "\nScreenshot layout parameters." ], "signature": [ - "{ id?: ID | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", + "{ id?: Id | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", "LayoutSelectorDictionary", "> | undefined; zoom?: number | undefined; } extends ", "SerializableRecord", " ? ", "SerializableRecord", - " & { id?: ID | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", + " & { id?: Id | undefined; dimensions?: { width: number; height: number; } | undefined; selectors?: Partial<", "LayoutSelectorDictionary", "> | undefined; zoom?: number | undefined; } : never" ], "path": "x-pack/plugins/screenshotting/common/layout.ts", "deprecated": false, "initialIsOpen": false - } - ], - "objects": [ + }, { "parentPluginId": "screenshotting", - "id": "def-common.LayoutTypes", - "type": "Object", + "id": "def-common.SCREENSHOTTING_APP_ID", + "type": "string", "tags": [], - "label": "LayoutTypes", - "description": [ - "\nSupported layout types." + "label": "SCREENSHOTTING_APP_ID", + "description": [], + "signature": [ + "\"screenshotting\"" ], - "path": "x-pack/plugins/screenshotting/common/layout.ts", + "path": "x-pack/plugins/screenshotting/common/expression.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "screenshotting", - "id": "def-common.LayoutTypes.PRESERVE_LAYOUT", - "type": "string", - "tags": [], - "label": "PRESERVE_LAYOUT", - "description": [], - "signature": [ - "\"preserve_layout\"" - ], - "path": "x-pack/plugins/screenshotting/common/layout.ts", - "deprecated": false - }, - { - "parentPluginId": "screenshotting", - "id": "def-common.LayoutTypes.PRINT", - "type": "string", - "tags": [], - "label": "PRINT", - "description": [], - "signature": [ - "\"print\"" - ], - "path": "x-pack/plugins/screenshotting/common/layout.ts", - "deprecated": false - }, - { - "parentPluginId": "screenshotting", - "id": "def-common.LayoutTypes.CANVAS", - "type": "string", - "tags": [], - "label": "CANVAS", - "description": [], - "signature": [ - "\"canvas\"" - ], - "path": "x-pack/plugins/screenshotting/common/layout.ts", - "deprecated": false - } + "initialIsOpen": false + }, + { + "parentPluginId": "screenshotting", + "id": "def-common.SCREENSHOTTING_EXPRESSION", + "type": "string", + "tags": [], + "label": "SCREENSHOTTING_EXPRESSION", + "description": [], + "signature": [ + "\"expression\"" + ], + "path": "x-pack/plugins/screenshotting/common/expression.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "screenshotting", + "id": "def-common.SCREENSHOTTING_EXPRESSION_INPUT", + "type": "string", + "tags": [], + "label": "SCREENSHOTTING_EXPRESSION_INPUT", + "description": [], + "signature": [ + "\"input\"" ], + "path": "x-pack/plugins/screenshotting/common/expression.ts", + "deprecated": false, "initialIsOpen": false } - ] + ], + "objects": [] } } \ No newline at end of file diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index fb6bac64aa793..c61700bd608f0 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github summary: API docs for the screenshotting plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] 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. --- @@ -18,7 +18,15 @@ Contact [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 24 | 0 | 12 | 5 | +| 27 | 0 | 7 | 4 | + +## Client + +### Enums + + +### Consts, variables and types + ## Server @@ -33,8 +41,8 @@ Contact [Kibana Reporting Services](https://github.com/orgs/elastic/teams/kibana ## Common -### Objects - +### Enums + ### Consts, variables and types diff --git a/api_docs/security.mdx b/api_docs/security.mdx index c2ca4891fb327..bcb2ef6b82133 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github summary: API docs for the security plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] 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. --- diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index b8e6e83318a0b..07770d1883ef0 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -62,7 +62,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly metricsEntitiesEnabled: boolean; readonly ruleRegistryEnabled: boolean; readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly usersEnabled: boolean; readonly detectionResponseEnabled: boolean; readonly disableIsolationUIPendingStatuses: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly securityRulesCancelEnabled: boolean; readonly pendingActionResponsesWithAck: boolean; readonly policyListEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly responseActionsConsoleEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly usersEnabled: boolean; readonly detectionResponseEnabled: boolean; readonly disableIsolationUIPendingStatuses: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly pendingActionResponsesWithAck: boolean; readonly policyListEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly responseActionsConsoleEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/plugin.tsx", "deprecated": false @@ -302,7 +302,9 @@ "PinnedEvent", ">; resolveTimelineConfig?: ", "ResolveTimelineConfig", - " | undefined; showSaveModal?: boolean | undefined; savedQueryId?: string | null | undefined; sessionViewId: string | null; show: boolean; status: ", + " | undefined; showSaveModal?: boolean | undefined; savedQueryId?: string | null | undefined; sessionViewConfig: ", + "SessionViewConfig", + " | null; show: boolean; status: ", "TimelineStatus", "; updated?: number | undefined; updatedBy?: string | null | undefined; isSaving: boolean; version: string | null; initialized?: boolean | undefined; }" ], @@ -704,26 +706,28 @@ "tags": [], "label": "SecuritySolutionApiRequestHandlerContext", "description": [], - "signature": [ - { - "pluginId": "securitySolution", - "scope": "server", - "docId": "kibSecuritySolutionPluginApi", - "section": "def-server.SecuritySolutionApiRequestHandlerContext", - "text": "SecuritySolutionApiRequestHandlerContext" - }, - " extends ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RequestHandlerContext", - "text": "RequestHandlerContext" - } - ], "path": "x-pack/plugins/security_solution/server/types.ts", "deprecated": false, "children": [ + { + "parentPluginId": "securitySolution", + "id": "def-server.SecuritySolutionApiRequestHandlerContext.core", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreRequestHandlerContext", + "text": "CoreRequestHandlerContext" + } + ], + "path": "x-pack/plugins/security_solution/server/types.ts", + "deprecated": false + }, { "parentPluginId": "securitySolution", "id": "def-server.SecuritySolutionApiRequestHandlerContext.endpointAuthz", @@ -887,7 +891,7 @@ "label": "ConfigType", "description": [], "signature": [ - "Readonly<{} & { signalsIndex: string; maxRuleImportExportSize: number; maxRuleImportPayloadBytes: number; maxTimelineImportExportSize: number; maxTimelineImportPayloadBytes: number; alertMergeStrategy: \"allFields\" | \"missingFields\" | \"noFields\"; alertIgnoreFields: string[]; enableExperimental: string[]; packagerTaskInterval: string; prebuiltRulesFromFileSystem: boolean; prebuiltRulesFromSavedObjects: boolean; }> & { experimentalFeatures: Readonly<{ metricsEntitiesEnabled: boolean; ruleRegistryEnabled: boolean; tGridEnabled: boolean; tGridEventRenderedViewEnabled: boolean; excludePoliciesInFilterEnabled: boolean; usersEnabled: boolean; detectionResponseEnabled: boolean; disableIsolationUIPendingStatuses: boolean; riskyHostsEnabled: boolean; riskyUsersEnabled: boolean; securityRulesCancelEnabled: boolean; pendingActionResponsesWithAck: boolean; policyListEnabled: boolean; previewTelemetryUrlEnabled: boolean; responseActionsConsoleEnabled: boolean; }>; }" + "Readonly<{} & { signalsIndex: string; maxRuleImportExportSize: number; maxRuleImportPayloadBytes: number; maxTimelineImportExportSize: number; maxTimelineImportPayloadBytes: number; alertMergeStrategy: \"allFields\" | \"missingFields\" | \"noFields\"; alertIgnoreFields: string[]; enableExperimental: string[]; packagerTaskInterval: string; prebuiltRulesFromFileSystem: boolean; prebuiltRulesFromSavedObjects: boolean; }> & { experimentalFeatures: Readonly<{ tGridEnabled: boolean; tGridEventRenderedViewEnabled: boolean; excludePoliciesInFilterEnabled: boolean; usersEnabled: boolean; detectionResponseEnabled: boolean; disableIsolationUIPendingStatuses: boolean; riskyHostsEnabled: boolean; riskyUsersEnabled: boolean; pendingActionResponsesWithAck: boolean; policyListEnabled: boolean; previewTelemetryUrlEnabled: boolean; responseActionsConsoleEnabled: boolean; }>; }" ], "path": "x-pack/plugins/security_solution/server/config.ts", "deprecated": false, diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 52564d9c3f7ad..12032a091582a 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github summary: API docs for the securitySolution plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] 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. --- @@ -18,7 +18,7 @@ Contact [Security solution](https://github.com/orgs/elastic/teams/security-solut | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 45 | 0 | 45 | 18 | +| 46 | 0 | 46 | 19 | ## Client diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 8d8ff594c127f..86ade737ae827 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github summary: API docs for the sessionView plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] 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. --- diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 04dfc6ca76d26..571fa5d590783 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github summary: API docs for the share plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] 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. --- diff --git a/api_docs/shared_u_x.mdx b/api_docs/shared_u_x.mdx index 555c0c3a3c255..d255d87e8bd8e 100644 --- a/api_docs/shared_u_x.mdx +++ b/api_docs/shared_u_x.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/sharedUX title: "sharedUX" image: https://source.unsplash.com/400x175/?github summary: API docs for the sharedUX plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sharedUX'] 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. --- diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index de02f4b4b2387..ee9d6cb524f39 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github summary: API docs for the snapshotRestore plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] 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. --- diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index cd2fa16dd5876..6c7d81d1ad99c 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github summary: API docs for the spaces plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] 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. --- diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index c48f110748511..dedfaf95ecd53 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github summary: API docs for the stackAlerts plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] 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. --- diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index cade7c0b9b88e..87ff82d41875d 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github summary: API docs for the taskManager plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] 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. --- diff --git a/api_docs/telemetry.devdocs.json b/api_docs/telemetry.devdocs.json index c95f1325348d3..c1b9f1acae9fa 100644 --- a/api_docs/telemetry.devdocs.json +++ b/api_docs/telemetry.devdocs.json @@ -158,6 +158,21 @@ ], "path": "src/plugins/telemetry/public/plugin.ts", "deprecated": false + }, + { + "parentPluginId": "telemetry", + "id": "def-public.TelemetryPluginConfig.hidePrivacyStatement", + "type": "CompoundType", + "tags": [], + "label": "hidePrivacyStatement", + "description": [ + "Should we hide the privacy statement notice? Useful on some environments, e.g. Cloud" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/telemetry/public/plugin.ts", + "deprecated": false } ], "initialIsOpen": false diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 94652e3525420..29c538adcdd73 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetry plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] 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. --- @@ -18,7 +18,7 @@ Contact [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetr | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 43 | 0 | 1 | 0 | +| 44 | 0 | 1 | 0 | ## Client diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index af2ea6cc6e530..2b4bb32e9071a 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryCollectionManager plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] 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. --- diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 1034c582fe31a..dae291cc27ca0 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryCollectionXpack plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] 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. --- diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 7067c7e1d3ae6..0d8f8313d1651 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryManagementSection plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] 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. --- diff --git a/api_docs/timelines.devdocs.json b/api_docs/timelines.devdocs.json index 4853c844a07fe..aa0ca4894966c 100644 --- a/api_docs/timelines.devdocs.json +++ b/api_docs/timelines.devdocs.json @@ -2594,7 +2594,7 @@ "label": "TGridModelForTimeline", "description": [], "signature": [ - "{ columns: (Pick<", + "{ title: string; columns: (Pick<", "EuiDataGridColumn", ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", "EuiDataGridColumn", @@ -2610,7 +2610,7 @@ }, "; description?: string | null | undefined; example?: string | number | null | undefined; format?: string | undefined; linkField?: string | undefined; placeholder?: string | undefined; subType?: ", "IFieldSubType", - " | undefined; type?: string | undefined; })[]; title: string; id: string; filters?: ", + " | undefined; type?: string | undefined; })[]; id: string; filters?: ", "Filter", "[] | undefined; dataViewId: string | null; sort: ", "SortColumnTimeline", @@ -4927,15 +4927,7 @@ "label": "renderRow", "description": [], "signature": [ - "({ browserFields, data, isDraggable, timelineId, }: { browserFields: Readonly>>; data: ", + "({ data, isDraggable, timelineId, }: { data: ", "Ecs", "; isDraggable: boolean; timelineId: string; }) => React.ReactNode" ], @@ -4947,32 +4939,11 @@ "id": "def-common.RowRenderer.renderRow.$1", "type": "Object", "tags": [], - "label": "{\n browserFields,\n data,\n isDraggable,\n timelineId,\n }", + "label": "{\n data,\n isDraggable,\n timelineId,\n }", "description": [], "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "children": [ - { - "parentPluginId": "timelines", - "id": "def-common.RowRenderer.renderRow.$1.browserFields", - "type": "Object", - "tags": [], - "label": "browserFields", - "description": [], - "signature": [ - "{ readonly [x: string]: Partial<", - { - "pluginId": "timelines", - "scope": "common", - "docId": "kibTimelinesPluginApi", - "section": "def-common.BrowserField", - "text": "BrowserField" - }, - ">; }" - ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", - "deprecated": false - }, { "parentPluginId": "timelines", "id": "def-common.RowRenderer.renderRow.$1.data", @@ -6439,7 +6410,7 @@ "label": "DataProvidersAnd", "description": [], "signature": [ - "{ type?: ", + "{ id: string; type?: ", { "pluginId": "timelines", "scope": "common", @@ -6447,7 +6418,7 @@ "section": "def-common.DataProviderType", "text": "DataProviderType" }, - " | undefined; id: string; name: string; enabled: boolean; excluded: boolean; kqlQuery: string; queryMatch: ", + " | undefined; name: string; enabled: boolean; excluded: boolean; kqlQuery: string; queryMatch: ", { "pluginId": "timelines", "scope": "common", diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 1c5a341eabe9a..c0002d87729aa 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github summary: API docs for the timelines plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] 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. --- @@ -18,7 +18,7 @@ Contact [Security solution](https://github.com/orgs/elastic/teams/security-solut | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 435 | 1 | 331 | 35 | +| 434 | 1 | 330 | 35 | ## Client diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index ea19c16ba59fe..fe76107b5c7af 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github summary: API docs for the transform plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] 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. --- diff --git a/api_docs/triggers_actions_ui.devdocs.json b/api_docs/triggers_actions_ui.devdocs.json index 16508005f0572..5c5963cb8c7bd 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -54,7 +54,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly rulesListDatagrid: boolean; readonly internalAlertsTable: boolean; readonly rulesDetailLogs: boolean; }" + "{ readonly rulesListDatagrid: boolean; readonly internalAlertsTable: boolean; readonly internalShareableComponentsSandbox: boolean; readonly rulesDetailLogs: boolean; }" ], "path": "x-pack/plugins/triggers_actions_ui/public/plugin.ts", "deprecated": false @@ -1323,6 +1323,85 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.snoozeRule", + "type": "Function", + "tags": [], + "label": "snoozeRule", + "description": [], + "signature": [ + "({\n id,\n snoozeEndTime,\n http,\n}: { id: string; snoozeEndTime: string | -1; http: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreHttpPluginApi", + "section": "def-public.HttpSetup", + "text": "HttpSetup" + }, + "; }) => Promise" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/snooze.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.snoozeRule.$1", + "type": "Object", + "tags": [], + "label": "{\n id,\n snoozeEndTime,\n http,\n}", + "description": [], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/snooze.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.snoozeRule.$1.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/snooze.ts", + "deprecated": false + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.snoozeRule.$1.snoozeEndTime", + "type": "CompoundType", + "tags": [], + "label": "snoozeEndTime", + "description": [], + "signature": [ + "string | -1" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/snooze.ts", + "deprecated": false + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.snoozeRule.$1.http", + "type": "Object", + "tags": [], + "label": "http", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreHttpPluginApi", + "section": "def-public.HttpSetup", + "text": "HttpSetup" + } + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/snooze.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.ThresholdExpression", @@ -1421,6 +1500,72 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.unsnoozeRule", + "type": "Function", + "tags": [], + "label": "unsnoozeRule", + "description": [], + "signature": [ + "({ id, http }: { id: string; http: ", + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreHttpPluginApi", + "section": "def-public.HttpSetup", + "text": "HttpSetup" + }, + "; }) => Promise" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/unsnooze.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.unsnoozeRule.$1", + "type": "Object", + "tags": [], + "label": "{ id, http }", + "description": [], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/unsnooze.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.unsnoozeRule.$1.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/unsnooze.ts", + "deprecated": false + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.unsnoozeRule.$1.http", + "type": "Object", + "tags": [], + "label": "http", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "public", + "docId": "kibCoreHttpPluginApi", + "section": "def-public.HttpSetup", + "text": "HttpSetup" + } + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/unsnooze.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.useLoadRuleTypes", @@ -2487,6 +2632,19 @@ "path": "x-pack/plugins/triggers_actions_ui/public/types.ts", "deprecated": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.RuleTypeParamsExpressionProps.dataViews", + "type": "Object", + "tags": [], + "label": "dataViews", + "description": [], + "signature": [ + "DataViewsServicePublic" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/types.ts", + "deprecated": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.RuleTypeParamsExpressionProps.unifiedSearch", @@ -2555,6 +2713,19 @@ "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", "deprecated": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.TriggersAndActionsUiServices.dataViews", + "type": "Object", + "tags": [], + "label": "dataViews", + "description": [], + "signature": [ + "DataViewsServicePublic" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", + "deprecated": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.TriggersAndActionsUiServices.charts", @@ -2760,6 +2931,25 @@ "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", "deprecated": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.TriggersAndActionsUiServices.alertsTableConfigurationRegistry", + "type": "Object", + "tags": [], + "label": "alertsTableConfigurationRegistry", + "description": [], + "signature": [ + "{ list: () => ", + "AlertsTableConfigurationRegistry", + "[]; get: (id: string) => ", + "AlertsTableConfigurationRegistry", + "; register: (objectType: ", + "AlertsTableConfigurationRegistry", + ") => void; has: (id: string) => boolean; }" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx", + "deprecated": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.TriggersAndActionsUiServices.history", @@ -3031,6 +3221,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.PLUGIN_ID", + "type": "string", + "tags": [], + "label": "PLUGIN_ID", + "description": [], + "signature": [ + "\"triggersActions\"" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/common/constants/index.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.Rule", @@ -3993,6 +4197,22 @@ ], "path": "x-pack/plugins/triggers_actions_ui/public/plugin.ts", "deprecated": false + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.TriggersAndActionsUIPublicPluginSetup.alertsTableConfigurationRegistry", + "type": "Object", + "tags": [], + "label": "alertsTableConfigurationRegistry", + "description": [], + "signature": [ + "TypeRegistry", + "<", + "AlertsTableConfigurationRegistry", + ">" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/plugin.ts", + "deprecated": false } ], "lifecycle": "setup", @@ -4046,6 +4266,22 @@ "path": "x-pack/plugins/triggers_actions_ui/public/plugin.ts", "deprecated": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.TriggersAndActionsUIPublicPluginStart.alertsTableConfigurationRegistry", + "type": "Object", + "tags": [], + "label": "alertsTableConfigurationRegistry", + "description": [], + "signature": [ + "TypeRegistry", + "<", + "AlertsTableConfigurationRegistry", + ">" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/plugin.ts", + "deprecated": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.TriggersAndActionsUIPublicPluginStart.getAddConnectorFlyout", @@ -4223,6 +4459,40 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.TriggersAndActionsUIPublicPluginStart.getRuleStatusDropdown", + "type": "Function", + "tags": [], + "label": "getRuleStatusDropdown", + "description": [], + "signature": [ + "(props: ", + "ComponentOpts", + ") => React.ReactElement<", + "ComponentOpts", + ", string | React.JSXElementConstructor>" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.TriggersAndActionsUIPublicPluginStart.getRuleStatusDropdown.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "ComponentOpts" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/plugin.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "lifecycle": "start", @@ -4625,10 +4895,10 @@ ], "label": "parseExperimentalConfigValue", "description": [ - "\nParses the string value used in `xpack.triggersActionsUi.enableExperimental` kibana configuration,\nwhich should be a string of values delimited by a comma (`,`)\n" + "\nParses the string value used in `xpack.trigger_actions_ui.enableExperimental` kibana configuration,\nwhich should be a string of values delimited by a comma (`,`)\n" ], "signature": [ - "(configValue: string[]) => Readonly<{ rulesListDatagrid: boolean; internalAlertsTable: boolean; rulesDetailLogs: boolean; }>" + "(configValue: string[]) => Readonly<{ rulesListDatagrid: boolean; internalAlertsTable: boolean; internalShareableComponentsSandbox: boolean; rulesDetailLogs: boolean; }>" ], "path": "x-pack/plugins/triggers_actions_ui/common/experimental_features.ts", "deprecated": false, @@ -4785,7 +5055,7 @@ "label": "ExperimentalFeatures", "description": [], "signature": [ - "{ readonly rulesListDatagrid: boolean; readonly internalAlertsTable: boolean; readonly rulesDetailLogs: boolean; }" + "{ readonly rulesListDatagrid: boolean; readonly internalAlertsTable: boolean; readonly internalShareableComponentsSandbox: boolean; readonly rulesDetailLogs: boolean; }" ], "path": "x-pack/plugins/triggers_actions_ui/common/experimental_features.ts", "deprecated": false, @@ -4814,10 +5084,10 @@ "tags": [], "label": "allowedExperimentalValues", "description": [ - "\nA list of allowed values that can be used in `xpack.triggersActionsUi.enableExperimental`.\nThis object is then used to validate and parse the value entered." + "\nA list of allowed values that can be used in `xpack.trigger_actions_ui.enableExperimental`.\nThis object is then used to validate and parse the value entered." ], "signature": [ - "{ readonly rulesListDatagrid: boolean; readonly internalAlertsTable: boolean; readonly rulesDetailLogs: boolean; }" + "{ readonly rulesListDatagrid: boolean; readonly internalAlertsTable: boolean; readonly internalShareableComponentsSandbox: boolean; readonly rulesDetailLogs: boolean; }" ], "path": "x-pack/plugins/triggers_actions_ui/common/experimental_features.ts", "deprecated": false, diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 88c76bf1729fd..20c5152aa8df3 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github summary: API docs for the triggersActionsUi plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] 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. --- @@ -18,7 +18,7 @@ Contact [Response Ops](https://github.com/orgs/elastic/teams/response-ops) for q | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 304 | 0 | 290 | 23 | +| 321 | 0 | 307 | 25 | ## Client diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 4bd49250ad905..5038ea2fa6daa 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github summary: API docs for the uiActions plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] 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. --- diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 51e13512c54de..7aeea3d866aad 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the uiActionsEnhanced plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] 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. --- diff --git a/api_docs/unified_search.devdocs.json b/api_docs/unified_search.devdocs.json index 5d2e50e061270..28d29d8e5f2db 100644 --- a/api_docs/unified_search.devdocs.json +++ b/api_docs/unified_search.devdocs.json @@ -205,8 +205,8 @@ "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPattern", - "text": "IIndexPattern" + "section": "def-common.DataView", + "text": "DataView" }, ")[]" ], @@ -547,7 +547,7 @@ "label": "nonKqlMode", "description": [], "signature": [ - "\"lucene\" | \"text\" | undefined" + "\"text\" | \"lucene\" | undefined" ], "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx", "deprecated": false @@ -714,6 +714,31 @@ "path": "src/plugins/unified_search/public/types.ts", "deprecated": false, "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.UnifiedSearchPublicPluginStart.autocomplete", + "type": "Object", + "tags": [], + "label": "autocomplete", + "description": [ + "\nautocomplete service\n{@link AutocompleteStart}" + ], + "signature": [ + "{ getQuerySuggestions: ", + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchAutocompletePluginApi", + "section": "def-public.QuerySuggestionGetFn", + "text": "QuerySuggestionGetFn" + }, + "; hasQuerySuggestions: (language: string) => boolean; getValueSuggestions: ", + "ValueSuggestionsGetFn", + "; }" + ], + "path": "src/plugins/unified_search/public/types.ts", + "deprecated": false + }, { "parentPluginId": "unifiedSearch", "id": "def-public.UnifiedSearchPublicPluginStart.ui", @@ -732,15 +757,323 @@ ], "lifecycle": "start", "initialIsOpen": true + }, + "setup": { + "parentPluginId": "unifiedSearch", + "id": "def-public.UnifiedSearchPluginSetup", + "type": "Interface", + "tags": [], + "label": "UnifiedSearchPluginSetup", + "description": [], + "path": "src/plugins/unified_search/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.UnifiedSearchPluginSetup.autocomplete", + "type": "Object", + "tags": [], + "label": "autocomplete", + "description": [], + "signature": [ + "{ getQuerySuggestions: ", + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchAutocompletePluginApi", + "section": "def-public.QuerySuggestionGetFn", + "text": "QuerySuggestionGetFn" + }, + "; getAutocompleteSettings: () => { terminateAfter: number; timeout: number; }; }" + ], + "path": "src/plugins/unified_search/public/types.ts", + "deprecated": false + } + ], + "lifecycle": "setup", + "initialIsOpen": true } }, "server": { - "classes": [], + "classes": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin", + "type": "Class", + "tags": [], + "label": "UnifiedSearchServerPlugin", + "description": [], + "signature": [ + { + "pluginId": "unifiedSearch", + "scope": "server", + "docId": "kibUnifiedSearchPluginApi", + "section": "def-server.UnifiedSearchServerPlugin", + "text": "UnifiedSearchServerPlugin" + }, + " implements ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.Plugin", + "text": "Plugin" + }, + "<", + { + "pluginId": "unifiedSearch", + "scope": "server", + "docId": "kibUnifiedSearchPluginApi", + "section": "def-server.UnifiedSearchServerPluginSetup", + "text": "UnifiedSearchServerPluginSetup" + }, + ", void, object, object>" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "initializerContext", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.PluginInitializerContext", + "text": "PluginInitializerContext" + }, + "; valueSuggestions: Readonly<{} & { timeout: moment.Duration; enabled: boolean; tiers: string[]; terminateAfter: moment.Duration; }>; }>; }>>" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "(core: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + "<", + "UnifiedSearchServerPluginStartDependencies", + ", ", + { + "pluginId": "unifiedSearch", + "scope": "server", + "docId": "kibUnifiedSearchPluginApi", + "section": "def-server.UnifiedSearchServerPluginStart", + "text": "UnifiedSearchServerPluginStart" + }, + ">, {}: ", + "UnifiedSearchServerPluginSetupDependencies", + ") => { autocomplete: { getAutocompleteSettings: () => { terminateAfter: number; timeout: number; }; }; }" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.setup.$1", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + "<", + "UnifiedSearchServerPluginStartDependencies", + ", ", + { + "pluginId": "unifiedSearch", + "scope": "server", + "docId": "kibUnifiedSearchPluginApi", + "section": "def-server.UnifiedSearchServerPluginStart", + "text": "UnifiedSearchServerPluginStart" + }, + ">" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.setup.$2", + "type": "Object", + "tags": [], + "label": "{}", + "description": [], + "signature": [ + "UnifiedSearchServerPluginSetupDependencies" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.start", + "type": "Function", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "(core: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" + }, + ", {}: ", + "UnifiedSearchServerPluginStartDependencies", + ") => {}" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.start.$1", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" + } + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.start.$2", + "type": "Object", + "tags": [], + "label": "{}", + "description": [], + "signature": [ + "UnifiedSearchServerPluginStartDependencies" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPlugin.stop", + "type": "Function", + "tags": [], + "label": "stop", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "functions": [], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPluginStart", + "type": "Interface", + "tags": [], + "label": "UnifiedSearchServerPluginStart", + "description": [], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "children": [], + "initialIsOpen": false + } + ], "enums": [], "misc": [], - "objects": [] + "objects": [], + "setup": { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPluginSetup", + "type": "Interface", + "tags": [], + "label": "UnifiedSearchServerPluginSetup", + "description": [], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-server.UnifiedSearchServerPluginSetup.autocomplete", + "type": "Object", + "tags": [], + "label": "autocomplete", + "description": [], + "signature": [ + "{ getAutocompleteSettings: () => { terminateAfter: number; timeout: number; }; }" + ], + "path": "src/plugins/unified_search/server/plugin.ts", + "deprecated": false + } + ], + "lifecycle": "setup", + "initialIsOpen": true + } }, "common": { "classes": [], diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 5090a1f15bee8..285d17efcba81 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the unifiedSearch plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] 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. --- @@ -18,10 +18,13 @@ Contact [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-servic | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 48 | 1 | 45 | 6 | +| 79 | 2 | 75 | 11 | ## Client +### Setup + + ### Start @@ -34,3 +37,14 @@ Contact [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-servic ### Consts, variables and types +## Server + +### Setup + + +### Classes + + +### Interfaces + + diff --git a/api_docs/unified_search_autocomplete.devdocs.json b/api_docs/unified_search_autocomplete.devdocs.json new file mode 100644 index 0000000000000..c3f2543a9c9cb --- /dev/null +++ b/api_docs/unified_search_autocomplete.devdocs.json @@ -0,0 +1,265 @@ +{ + "id": "unifiedSearch.autocomplete", + "client": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs", + "type": "Interface", + "tags": [], + "label": "QuerySuggestionGetFnArgs", + "description": [], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.language", + "type": "string", + "tags": [], + "label": "language", + "description": [], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.indexPatterns", + "type": "Array", + "tags": [], + "label": "indexPatterns", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.IIndexPattern", + "text": "IIndexPattern" + }, + "[]" + ], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.query", + "type": "string", + "tags": [], + "label": "query", + "description": [], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.selectionStart", + "type": "number", + "tags": [], + "label": "selectionStart", + "description": [], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.selectionEnd", + "type": "number", + "tags": [], + "label": "selectionEnd", + "description": [], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.signal", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal | undefined" + ], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.useTimeRange", + "type": "CompoundType", + "tags": [], + "label": "useTimeRange", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.boolFilter", + "type": "Any", + "tags": [], + "label": "boolFilter", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFnArgs.method", + "type": "CompoundType", + "tags": [], + "label": "method", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataPluginApi", + "section": "def-common.ValueSuggestionsMethod", + "text": "ValueSuggestionsMethod" + }, + " | undefined" + ], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionTypes", + "type": "Enum", + "tags": [], + "label": "QuerySuggestionTypes", + "description": [], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.AutocompleteStart", + "type": "Type", + "tags": [], + "label": "AutocompleteStart", + "description": [], + "signature": [ + "{ getQuerySuggestions: ", + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchAutocompletePluginApi", + "section": "def-public.QuerySuggestionGetFn", + "text": "QuerySuggestionGetFn" + }, + "; hasQuerySuggestions: (language: string) => boolean; getValueSuggestions: ", + "ValueSuggestionsGetFn", + "; }" + ], + "path": "src/plugins/unified_search/public/autocomplete/autocomplete_service.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestion", + "type": "Type", + "tags": [], + "label": "QuerySuggestion", + "description": [], + "signature": [ + "QuerySuggestionBasic", + " | ", + "QuerySuggestionField" + ], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFn", + "type": "Type", + "tags": [], + "label": "QuerySuggestionGetFn", + "description": [], + "signature": [ + "(args: ", + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchAutocompletePluginApi", + "section": "def-public.QuerySuggestionGetFnArgs", + "text": "QuerySuggestionGetFnArgs" + }, + ") => Promise<", + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchAutocompletePluginApi", + "section": "def-public.QuerySuggestion", + "text": "QuerySuggestion" + }, + "[]> | undefined" + ], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.QuerySuggestionGetFn.$1", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "signature": [ + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchAutocompletePluginApi", + "section": "def-public.QuerySuggestionGetFnArgs", + "text": "QuerySuggestionGetFnArgs" + } + ], + "path": "src/plugins/unified_search/public/autocomplete/providers/query_suggestion_provider.ts", + "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/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx new file mode 100644 index 0000000000000..f6c59fdec600f --- /dev/null +++ b/api_docs/unified_search_autocomplete.mdx @@ -0,0 +1,33 @@ +--- +id: kibUnifiedSearchAutocompletePluginApi +slug: /kibana-dev-docs/api/unifiedSearch-autocomplete +title: "unifiedSearch.autocomplete" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the unifiedSearch.autocomplete plugin +date: 2022-04-26 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] +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 unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; + +Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. + +Contact [Unified Search](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 | +|-------------------|-----------|------------------------|-----------------| +| 79 | 2 | 75 | 11 | + +## Client + +### Interfaces + + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 49e61cb0452fe..3ba684cb1b7fe 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github summary: API docs for the urlForwarding plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] 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. --- diff --git a/api_docs/usage_collection.devdocs.json b/api_docs/usage_collection.devdocs.json index 46559368d5450..8978c71dc262e 100644 --- a/api_docs/usage_collection.devdocs.json +++ b/api_docs/usage_collection.devdocs.json @@ -2190,9 +2190,9 @@ "\r\nPossible type values in the schema" ], "signature": [ - "\"boolean\" | \"keyword\" | \"date\" | \"text\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"double\"" + "\"boolean\" | \"keyword\" | \"text\" | \"date\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"double\"" ], - "path": "node_modules/@types/elastic__analytics/index.d.ts", + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", "deprecated": false, "initialIsOpen": false }, diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 362ddd4e39eb8..121a877b20b16 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github summary: API docs for the usageCollection plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] 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. --- diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 6ccc23ba38612..ef94504e31dc9 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github summary: API docs for the ux plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] 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. --- diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index c335a368d7b71..42f51f6f9501c 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the visDefaultEditor plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index f1504dbc739ba..15770aeb62c3d 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeGauge plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] 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. --- diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index e36cb3c375d3c..6460ab30cde48 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeHeatmap plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] 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. --- diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 6fd8b8f633d78..1e97d6977d0df 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypePie plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 9fb56a55bd2d9..0bdbae2ed0092 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTable plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 91e5141ff9cfd..962bbd0c90c3f 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTimelion plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/vis_type_timeseries.devdocs.json b/api_docs/vis_type_timeseries.devdocs.json index 77a7ac1e67ce5..afd54c07290ff 100644 --- a/api_docs/vis_type_timeseries.devdocs.json +++ b/api_docs/vis_type_timeseries.devdocs.json @@ -145,7 +145,7 @@ { "parentPluginId": "visTypeTimeseries", "id": "def-server.VisTypeTimeseriesSetup.getVisData.$1", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "requestContext", "description": [], diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index ba5ac71899536..b26a90a93f8f0 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTimeseries plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] 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. --- diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index c978eed560309..e65deb3cea8a9 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeVega plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 9638ab6b1db54..aba082b0dfb43 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeVislib plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 6728cabe0e78c..8b80289230ed5 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeXy plugin -date: 2022-04-05 +date: 2022-04-26 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. --- diff --git a/api_docs/visualizations.devdocs.json b/api_docs/visualizations.devdocs.json index 9cd950856997f..500393546b819 100644 --- a/api_docs/visualizations.devdocs.json +++ b/api_docs/visualizations.devdocs.json @@ -3162,9 +3162,9 @@ "Observable", "; getTimeUpdate$: () => ", "Observable", - "; getRefreshIntervalUpdate$: () => ", + "; getRefreshIntervalUpdate$: () => ", "Observable", - "; getAutoRefreshFetch$: () => ", + "; getAutoRefreshFetch$: () => ", "Observable", "<", { @@ -3176,7 +3176,7 @@ }, ">; getFetch$: () => ", "Observable", - "; getTime: () => ", + "; getTime: () => ", { "pluginId": "data", "scope": "common", @@ -4496,13 +4496,7 @@ "label": "palette", "description": [], "signature": [ - { - "pluginId": "charts", - "scope": "common", - "docId": "kibChartsPluginApi", - "section": "def-common.PaletteOutput", - "text": "PaletteOutput" - }, + "PaletteOutput", "<{ [key: string]: unknown; }> | undefined" ], "path": "src/plugins/visualizations/public/vis_types/types.ts", @@ -4850,6 +4844,34 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "visualizations", + "id": "def-public.SAVED_OBJECTS_LIMIT_SETTING", + "type": "string", + "tags": [], + "label": "SAVED_OBJECTS_LIMIT_SETTING", + "description": [], + "signature": [ + "\"savedObjects:listingLimit\"" + ], + "path": "src/plugins/visualizations/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.SAVED_OBJECTS_PER_PAGE_SETTING", + "type": "string", + "tags": [], + "label": "SAVED_OBJECTS_PER_PAGE_SETTING", + "description": [], + "signature": [ + "\"savedObjects:perPage\"" + ], + "path": "src/plugins/visualizations/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "visualizations", "id": "def-public.SavedVisState", @@ -5018,7 +5040,7 @@ "label": "VisualizeEmbeddableContract", "description": [], "signature": [ - "{ readonly type: \"visualization\"; readonly id: string; getExplicitInput: () => ", + "{ readonly id: string; readonly type: \"visualization\"; getExplicitInput: () => ", { "pluginId": "visualizations", "scope": "public", @@ -5234,7 +5256,7 @@ "label": "VisualizeEmbeddableFactoryContract", "description": [], "signature": [ - "{ readonly type: \"visualization\"; create: (input: ", + "{ create: (input: ", { "pluginId": "visualizations", "scope": "public", @@ -5294,7 +5316,7 @@ "VisualizeEmbeddable", " | ", "DisabledLabEmbeddable", - " | undefined>; isEditable: () => Promise; getDisplayName: () => string; createFromSavedObject: (savedObjectId: string, input: Partial<", + " | undefined>; readonly type: \"visualization\"; isEditable: () => Promise; getDisplayName: () => string; createFromSavedObject: (savedObjectId: string, input: Partial<", { "pluginId": "visualizations", "scope": "public", diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index abd99851677e0..992f0475d6f4f 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github summary: API docs for the visualizations plugin -date: 2022-04-05 +date: 2022-04-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] 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. --- @@ -18,7 +18,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 363 | 12 | 342 | 14 | +| 365 | 12 | 344 | 14 | ## Client diff --git a/dev_docs/getting_started/hello_world_plugin.mdx b/dev_docs/getting_started/hello_world_plugin.mdx index be4fcf5671a42..8fa4ea4316129 100644 --- a/dev_docs/getting_started/hello_world_plugin.mdx +++ b/dev_docs/getting_started/hello_world_plugin.mdx @@ -40,6 +40,10 @@ and add the following: "id": "helloWorld", "version": "1.0.0", "kibanaVersion": "kibana", + "owner": { + "name": "Kibana Core", + "githubTeam": "kibana-core" + }, "ui": true } ``` @@ -77,6 +81,7 @@ And add the following to it: ``` $ mkdir public +$ cd public $ touch plugin.tsx ``` diff --git a/dev_docs/getting_started/setting_up_a_development_env.mdx b/dev_docs/getting_started/setting_up_a_development_env.mdx index ae994d6a018de..570dcb57a56b8 100644 --- a/dev_docs/getting_started/setting_up_a_development_env.mdx +++ b/dev_docs/getting_started/setting_up_a_development_env.mdx @@ -72,7 +72,7 @@ In another terminal tab/window you can start Kibana. yarn start ``` -If you include the `--run-examples` flag then all of the [developer examples](https://github.com/elastic/kibana/tree/{branch}/examples). Read more about the advanced options for [Running Kibana](https://www.elastic.co/guide/en/kibana/current/running-kibana-advanced.html). +Include developer examples](https://github.com/elastic/kibana/tree/main/examples) by adding an optional `--run-examples` flag. Read more about the advanced options for [Running Kibana](https://www.elastic.co/guide/en/kibana/current/running-kibana-advanced.html). ## Code away! diff --git a/docs/developer/contributing/development-functional-tests.asciidoc b/docs/developer/contributing/development-functional-tests.asciidoc index af88754b316fa..b544add73b3b1 100644 --- a/docs/developer/contributing/development-functional-tests.asciidoc +++ b/docs/developer/contributing/development-functional-tests.asciidoc @@ -6,7 +6,7 @@ We use functional tests to make sure the {kib} UI works as expected. It replaces [discrete] === Running functional tests -The `FunctionalTestRunner` is very bare bones and gets most of its functionality from its config file, located at {blob}test/functional/config.js[test/functional/config.js] or {blob}x-pack/test/functional/config.js[x-pack/test/functional/config.js]. If you’re writing a plugin outside the {kib} repo, you will have your own config file. +The `FunctionalTestRunner` (FTR) is very bare bones and gets most of its functionality from its config file. The {kib} repo contains many FTR config files which use slightly different configurations for the {kib} server or {es}, have different test files, and potentially other config differences. You can find a manifest of all the FTR config files in `.buildkite/ftr_configs.yml`. If you’re writing a plugin outside the {kib} repo, you will have your own config file. See <> for more info. There are three ways to run the tests depending on your goals: @@ -96,7 +96,8 @@ node scripts/functional_test_runner --exclude-tag skipCloud When run without any arguments the `FunctionalTestRunner` automatically loads the configuration in the standard location, but you can override that behavior with the `--config` flag. List configs with multiple --config arguments. -* `--config test/functional/config.js` starts {es} and {kib} servers with the WebDriver tests configured to run in Chrome. +* `--config test/functional/apps/app-name/config.js` starts {es} and {kib} servers with the WebDriver tests configured to run in Chrome for a specific app. For example, +`--config test/functional/apps/home/config.js` starts {es} and {kib} servers with the WebDriver tests configured to run in Chrome for the home app. * `--config test/functional/config.firefox.js` starts {es} and {kib} servers with the WebDriver tests configured to run in Firefox. * `--config test/api_integration/config.js` starts {es} and {kib} servers with the api integration tests configuration. * `--config test/accessibility/config.ts` starts {es} and {kib} servers with the WebDriver tests configured to run an accessibility audit using https://www.deque.com/axe/[axe]. @@ -416,7 +417,7 @@ export function SomethingUsefulProvider({ getService }) { ----------- + * Re-export your provider from `services/index.js` -* Import it into `src/functional/config.js` and add it to the services config: +* Import it into `src/functional/config.base.js` and add it to the services config: + ["source","js"] ----------- diff --git a/docs/developer/plugin/external-plugin-functional-tests.asciidoc b/docs/developer/plugin/external-plugin-functional-tests.asciidoc index 55b311794f9dc..4a98ffcc5d08c 100644 --- a/docs/developer/plugin/external-plugin-functional-tests.asciidoc +++ b/docs/developer/plugin/external-plugin-functional-tests.asciidoc @@ -24,7 +24,7 @@ export default async function ({ readConfigFile }) { // read the {kib} config file so that we can utilize some of // its services and PageObjects - const kibanaConfig = await readConfigFile(resolve(REPO_ROOT, 'test/functional/config.js')); + const kibanaConfig = await readConfigFile(resolve(REPO_ROOT, 'test/functional/config.base.js')); return { // list paths to the files that contain your plugins tests diff --git a/docs/development/core/public/kibana-plugin-core-public.analyticsservicesetup.md b/docs/development/core/public/kibana-plugin-core-public.analyticsservicesetup.md index b1d059fe556b4..8cee67f0110dd 100644 --- a/docs/development/core/public/kibana-plugin-core-public.analyticsservicesetup.md +++ b/docs/development/core/public/kibana-plugin-core-public.analyticsservicesetup.md @@ -9,5 +9,5 @@ Exposes the public APIs of the AnalyticsClient during the setup phase. Signature: ```typescript -export declare type AnalyticsServiceSetup = AnalyticsClient; +export declare type AnalyticsServiceSetup = Omit; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.analyticsservicepreboot.md b/docs/development/core/server/kibana-plugin-core-server.analyticsservicepreboot.md index d648455dde18d..e1129181dbb49 100644 --- a/docs/development/core/server/kibana-plugin-core-server.analyticsservicepreboot.md +++ b/docs/development/core/server/kibana-plugin-core-server.analyticsservicepreboot.md @@ -9,5 +9,5 @@ Exposes the public APIs of the AnalyticsClient during the preboot phase Signature: ```typescript -export declare type AnalyticsServicePreboot = AnalyticsClient; +export declare type AnalyticsServicePreboot = Omit; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.analyticsservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.analyticsservicesetup.md index aa84919848f24..5dc90eb0c1f03 100644 --- a/docs/development/core/server/kibana-plugin-core-server.analyticsservicesetup.md +++ b/docs/development/core/server/kibana-plugin-core-server.analyticsservicesetup.md @@ -9,5 +9,5 @@ Exposes the public APIs of the AnalyticsClient during the setup phase. Signature: ```typescript -export declare type AnalyticsServiceSetup = AnalyticsClient; +export declare type AnalyticsServiceSetup = Omit; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporter.import.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporter.import.md index 1ca6058e7d742..f30ddeddba92d 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporter.import.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporter.import.md @@ -9,14 +9,14 @@ Import saved objects from given stream. See the [options](./kibana-plugin-core-s Signature: ```typescript -import({ readStream, createNewCopies, namespace, overwrite, }: SavedObjectsImportOptions): Promise; +import({ readStream, createNewCopies, namespace, overwrite, refresh, }: SavedObjectsImportOptions): Promise; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| { readStream, createNewCopies, namespace, overwrite, } | SavedObjectsImportOptions | | +| { readStream, createNewCopies, namespace, overwrite, refresh, } | SavedObjectsImportOptions | | Returns: diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporter.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporter.md index 18ce27ca2c0dc..b1035bc247ad1 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporter.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporter.md @@ -21,6 +21,6 @@ export declare class SavedObjectsImporter | Method | Modifiers | Description | | --- | --- | --- | -| [import({ readStream, createNewCopies, namespace, overwrite, })](./kibana-plugin-core-server.savedobjectsimporter.import.md) | | Import saved objects from given stream. See the [options](./kibana-plugin-core-server.savedobjectsimportoptions.md) for more detailed information. | +| [import({ readStream, createNewCopies, namespace, overwrite, refresh, })](./kibana-plugin-core-server.savedobjectsimporter.import.md) | | Import saved objects from given stream. See the [options](./kibana-plugin-core-server.savedobjectsimportoptions.md) for more detailed information. | | [resolveImportErrors({ readStream, createNewCopies, namespace, retries, })](./kibana-plugin-core-server.savedobjectsimporter.resolveimporterrors.md) | | Resolve and return saved object import errors. See the [options](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) for more detailed information. | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.md index 58d0f4bf982c3..775f3a4c9acb3 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.md @@ -20,4 +20,5 @@ export interface SavedObjectsImportOptions | [namespace?](./kibana-plugin-core-server.savedobjectsimportoptions.namespace.md) | string | (Optional) if specified, will import in given namespace, else will import as global object | | [overwrite](./kibana-plugin-core-server.savedobjectsimportoptions.overwrite.md) | boolean | If true, will override existing object if present. Note: this has no effect when used with the createNewCopies option. | | [readStream](./kibana-plugin-core-server.savedobjectsimportoptions.readstream.md) | Readable | The stream of [saved objects](./kibana-plugin-core-server.savedobject.md) to import | +| [refresh?](./kibana-plugin-core-server.savedobjectsimportoptions.refresh.md) | boolean \| 'wait\_for' | (Optional) Refresh setting, defaults to wait_for | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.refresh.md new file mode 100644 index 0000000000000..cc7e36354647a --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.refresh.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportOptions](./kibana-plugin-core-server.savedobjectsimportoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsimportoptions.refresh.md) + +## SavedObjectsImportOptions.refresh property + +Refresh setting, defaults to `wait_for` + +Signature: + +```typescript +refresh?: boolean | 'wait_for'; +``` diff --git a/docs/index.asciidoc b/docs/index.asciidoc index 668a6edcad3db..41321f991c1b0 100644 --- a/docs/index.asciidoc +++ b/docs/index.asciidoc @@ -11,7 +11,6 @@ include::{docs-root}/shared/versions/stack/{source_branch}.asciidoc[] :docker-image: {docker-repo}:{version} :es-docker-repo: docker.elastic.co/elasticsearch/elasticsearch :es-docker-image: {es-docker-repo}:{version} -:blob: {kib-repo}blob/{branch}/ :security-ref: https://www.elastic.co/community/security/ :Data-source: Data view :data-source: data view @@ -20,6 +19,8 @@ include::{docs-root}/shared/versions/stack/{source_branch}.asciidoc[] include::{docs-root}/shared/attributes.asciidoc[] +:blob: {kib-repo}blob/{branch}/ + include::user/index.asciidoc[] include::accessibility.asciidoc[] diff --git a/docs/osquery/osquery.asciidoc b/docs/osquery/osquery.asciidoc index e450bcbcb7d6f..9e384d79a4d6b 100644 --- a/docs/osquery/osquery.asciidoc +++ b/docs/osquery/osquery.asciidoc @@ -127,6 +127,8 @@ The Osquery Manager integration includes a set of prebuilt Osquery packs that yo You can modify the scheduled agent policies for a prebuilt pack, but you cannot edit queries in the pack. To edit the queries, you must first create a copy of the pack. +For information about the prebuilt packs that are available, refer to <>. + [float] [[load-prebuilt-packs]] === Load and activate prebuilt Elastic packs @@ -310,3 +312,5 @@ https://osquery.readthedocs.io/en/stable/deployment/logging/#differential-logs[d include::manage-integration.asciidoc[] include::exported-fields-reference.asciidoc[] + +include::prebuilt-packs.asciidoc[] diff --git a/docs/osquery/prebuilt-packs.asciidoc b/docs/osquery/prebuilt-packs.asciidoc new file mode 100644 index 0000000000000..776a1937b7a69 --- /dev/null +++ b/docs/osquery/prebuilt-packs.asciidoc @@ -0,0 +1,63 @@ +[[prebuilt-packs]] +== Prebuilt packs reference + +This section lists all prebuilt packs available for Osquery Manager. +Each pack is also available as a saved object, with the name `Pack: `. + +For more information, refer to <>. + + +|=== +|Name |Description |Source |Added + +|`hardware-monitoring` +|Monitor for hardware changes. +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 + +|`incident-response` +|Detect and respond to breaches. +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 + +|`it-compliance` +a|Identify outdated and vulnerable software. + +Dashboard: `[Osquery Manager] Compliance pack` + +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 + +|`osquery-monitoring` +|Monitor Osquery info and performance. +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 + +|`ossec-rootkit` +a|Run rootkit detection queries to monitor for compromise. + +Dashboard: `[Osquery Manager] OSSEC rootkit pack` + +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 + +|`osx-attacks` +|Identify compromised macOS systems. +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 + +|`unwanted-chrome-extensions` +|Monitor for malicious Chrome extensions. +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 + +|`vuln-management` +|Identify system vulnerabilities. +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 + +|`windows-attacks` +|Monitor for evidence of Windows attacks. +|https://github.com/osquery/osquery/tree/master/packs[Osquery] +|8.2 +|=== diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index 33c97373a76c4..aa5d9f53359b7 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -92,7 +92,7 @@ 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 +is made as part of running an action, only the protocol, hostname, and port of the URL for that request are used to look up these configuration values. @@ -188,23 +188,27 @@ For example, `20m`, `24h`, `7d`, `1w`. Default: `60s`. ==== Alerting settings `xpack.alerting.maxEphemeralActionsPerAlert`:: -Sets the number of actions that will be executed ephemerally. To use this, enable ephemeral tasks in task manager first with <> +Sets the number of actions that will run ephemerally. To use this, enable +ephemeral tasks in task manager first with +<> `xpack.alerting.cancelAlertsOnRuleTimeout`:: -Specifies whether to skip writing alerts and scheduling actions if rule execution is cancelled due to timeout. Default: `true`. This setting can be overridden by individual rule types. +Specifies whether to skip writing alerts and scheduling actions if rule +processing was cancelled due to a timeout. Default: `true`. This setting can be +overridden by individual rule types. `xpack.alerting.rules.minimumScheduleInterval.value`:: Specifies the minimum schedule interval for rules. This minimum is applied to all rules created or updated after you set this value. The time is formatted as: + `[s,m,h,d]` + -For example, `20m`, `24h`, `7d`. Default: `1m`. +For example, `20m`, `24h`, `7d`. This duration cannot exceed `1d`. Default: `1m`. `xpack.alerting.rules.minimumScheduleInterval.enforce`:: Specifies the behavior when a new or changed rule has a schedule interval less than the value defined in `xpack.alerting.rules.minimumScheduleInterval.value`. If `false`, rules with schedules less than the interval will be created but warnings will be logged. If `true`, rules with schedules less than the interval cannot be created. Default: `false`. `xpack.alerting.rules.run.actions.max`:: -Specifies the maximum number of actions that a rule can trigger each time detection checks run. +Specifies the maximum number of actions that a rule can generate each time detection checks run. `xpack.alerting.rules.run.timeout`:: Specifies the default timeout for tasks associated with all types of rules. The time is formatted as: diff --git a/docs/settings/reporting-settings.asciidoc b/docs/settings/reporting-settings.asciidoc index b5e0af7e188a1..d706526730459 100644 --- a/docs/settings/reporting-settings.asciidoc +++ b/docs/settings/reporting-settings.asciidoc @@ -63,6 +63,9 @@ Reporting generates reports in the background and jobs are coordinated using doc in {es}. Depending on how often you generate reports and the overall number of reports, you might need to change the following settings. +`xpack.reporting.capture.maxAttempts` {ess-icon}:: +If capturing a report fails for any reason, {kib} will re-queue the report job for retry, as many times as this setting. Defaults to `3`. + `xpack.reporting.queue.indexInterval`:: How often the index that stores reporting jobs rolls over to a new index. Valid values are `year`, `month`, `week`, `day`, and `hour`. Defaults to `week`. @@ -86,26 +89,23 @@ Specifies the {time-units}[time] that the reporting poller waits between polling [[reporting-capture-settings]] ==== Capture settings -Reporting works by capturing screenshots from {kib}. The following settings control the capturing process. +Reporting uses an internal "screenshotting" plugin to capture screenshots from {kib}. The following settings control the capturing process. -`xpack.reporting.capture.timeouts.openUrl` {ess-icon}:: +`xpack.screenshotting.capture.timeouts.openUrl` {ess-icon}:: Specify the {time-units}[time] to allow the Reporting browser to wait for the "Loading..." screen to dismiss and find the initial data for the page. If the time is exceeded, a screenshot is captured showing the current page, and the download link shows a warning message. Can be specified as number of milliseconds. Defaults to `1m`. -`xpack.reporting.capture.timeouts.waitForElements` {ess-icon}:: +`xpack.screenshotting.capture.timeouts.waitForElements` {ess-icon}:: Specify the {time-units}[time] to allow the Reporting browser to wait for all visualization panels to load on the page. If the time is exceeded, a screenshot is captured showing the current page, and the download link shows a warning message. Can be specified as number of milliseconds. Defaults to `30s`. -`xpack.reporting.capture.timeouts.renderComplete` {ess-icon}:: +`xpack.screenshotting.capture.timeouts.renderComplete` {ess-icon}:: Specify the {time-units}[time] to allow the Reporting browser to wait for all visualizations to fetch and render the data. If the time is exceeded, a screenshot is captured showing the current page, and the download link shows a warning message. Can be specified as number of milliseconds. Defaults to `30s`. -NOTE: If any timeouts from `xpack.reporting.capture.timeouts.*` settings occur when +NOTE: If any timeouts from `xpack.screenshotting.capture.timeouts.*` settings occur when running a report job, Reporting will log the error and try to continue capturing the page with a screenshot. As a result, a download will be available, but there will likely be errors in the visualizations in the report. -`xpack.reporting.capture.maxAttempts` {ess-icon}:: -If capturing a report fails for any reason, {kib} will re-attempt other reporting job, as many times as this setting. Defaults to `3`. - -`xpack.reporting.capture.loadDelay`:: +`xpack.screenshotting.capture.loadDelay`:: deprecated:[8.0.0,This setting has no effect.] Specify the {time-units}[amount of time] before taking a screenshot when visualizations are not evented. All visualizations that ship with {kib} are evented, so this setting should not have much effect. If you are seeing empty images instead of visualizations, try increasing this value. Defaults to `3s`. *NOTE*: This setting exists for backwards compatibility, but is unused and therefore does not have an affect on reporting performance. [float] @@ -114,16 +114,16 @@ deprecated:[8.0.0,This setting has no effect.] Specify the {time-units}[amount o For PDF and PNG reports, Reporting spawns a headless Chromium browser process on the server to load and capture a screenshot of the {kib} app. When installing {kib} on Linux and Windows platforms, the Chromium binary comes bundled with the {kib} download. For Mac platforms, the Chromium binary is downloaded the first time {kib} is started. -`xpack.reporting.capture.browser.chromium.disableSandbox`:: +`xpack.screenshotting.browser.chromium.disableSandbox`:: It is recommended that you research the feasibility of enabling unprivileged user namespaces. An exception is if you are running {kib} in Docker because the container runs in a user namespace with the built-in seccomp/bpf filters. For more information, refer to <>. Defaults to `false` for all operating systems except Debian and Red Hat Linux, which use `true`. -`xpack.reporting.capture.browser.chromium.proxy.enabled`:: -Enables the proxy for Chromium to use. When set to `true`, you must also specify the `xpack.reporting.capture.browser.chromium.proxy.server` setting. Defaults to `false`. +`xpack.screenshotting.browser.chromium.proxy.enabled`:: +Enables the proxy for Chromium to use. When set to `true`, you must also specify the `xpack.screenshotting.browser.chromium.proxy.server` setting. Defaults to `false`. -`xpack.reporting.capture.browser.chromium.proxy.server`:: +`xpack.screenshotting.browser.chromium.proxy.server`:: The uri for the proxy server. Providing the username and password for the proxy server via the uri is not supported. -`xpack.reporting.capture.browser.chromium.proxy.bypass`:: +`xpack.screenshotting.browser.chromium.proxy.bypass`:: An array of hosts that should not go through the proxy server and should use a direct connection instead. Examples of valid entries are "elastic.co", "*.elastic.co", ".elastic.co", ".elastic.co:5601". [float] @@ -136,13 +136,13 @@ If the Chromium browser is asked to send a request that violates the network pol NOTE: {kib} installations are not designed to be publicly accessible over the internet. The Reporting network policy and other capabilities of the Elastic Stack security features do not change this condition. -`xpack.reporting.capture.networkPolicy`:: +`xpack.screenshotting.networkPolicy`:: Capturing a screenshot from a {kib} page involves sending out requests for all the linked web assets. For example, a Markdown visualization can show an image from a remote server. -`xpack.reporting.capture.networkPolicy.enabled`:: +`xpack.screenshotting.networkPolicy.enabled`:: When `false`, disables the *Reporting* network policy. Defaults to `true`. -`xpack.reporting.capture.networkPolicy.rules`:: +`xpack.screenshotting.networkPolicy.rules`:: A policy is specified as an array of objects that describe what to allow or deny based on a host or protocol. If a host or protocol is not specified, the rule matches any host or protocol. The rule objects are evaluated sequentially from the beginning to the end of the array, and continue until there is a matching rule. If no rules allow a request, the request is denied. @@ -150,14 +150,14 @@ The rule objects are evaluated sequentially from the beginning to the end of the [source,yaml] ------------------------------------------------------- # Only allow requests to placeholder.com -xpack.reporting.capture.networkPolicy: +xpack.screenshotting.networkPolicy: rules: [ { allow: true, host: "placeholder.com" } ] ------------------------------------------------------- [source,yaml] ------------------------------------------------------- # Only allow requests to https://placeholder.com -xpack.reporting.capture.networkPolicy: +xpack.screenshotting.networkPolicy: rules: [ { allow: true, host: "placeholder.com", protocol: "https:" } ] ------------------------------------------------------- @@ -166,7 +166,7 @@ A final `allow` rule with no host or protocol allows all requests that are not e [source,yaml] ------------------------------------------------------- # Denies requests from http://placeholder.com, but anything else is allowed. -xpack.reporting.capture.networkPolicy: +xpack.screenshotting.networkPolicy: rules: [{ allow: false, host: "placeholder.com", protocol: "http:" }, { allow: true }]; ------------------------------------------------------- @@ -175,7 +175,7 @@ A network policy can be composed of multiple rules: [source,yaml] ------------------------------------------------------- # Allow any request to http://placeholder.com but for any other host, https is required -xpack.reporting.capture.networkPolicy +xpack.screenshotting.networkPolicy rules: [ { allow: true, host: "placeholder.com", protocol: "http:" }, { allow: true, protocol: "https:" }, diff --git a/docs/settings/search-sessions-settings.asciidoc b/docs/settings/search-sessions-settings.asciidoc index 7b03cd23a9023..7628ecfb397e1 100644 --- a/docs/settings/search-sessions-settings.asciidoc +++ b/docs/settings/search-sessions-settings.asciidoc @@ -7,26 +7,26 @@ Configure the search session settings in your `kibana.yml` configuration file. -`xpack.data_enhanced.search.sessions.enabled` {ess-icon}:: +`data.search.sessions.enabled` {ess-icon}:: Set to `true` (default) to enable search sessions. -`xpack.data_enhanced.search.sessions.trackingInterval` {ess-icon}:: +`data.search.sessions.trackingInterval` {ess-icon}:: The frequency for updating the state of a search session. The default is `10s`. -`xpack.data_enhanced.search.sessions.pageSize` {ess-icon}:: +`data.search.sessions.pageSize` {ess-icon}:: How many search sessions {kib} processes at once while monitoring session progress. The default is `100`. -`xpack.data_enhanced.search.sessions.notTouchedTimeout` {ess-icon}:: +`data.search.sessions.notTouchedTimeout` {ess-icon}:: How long {kib} stores search results from unsaved sessions, after the last search in the session completes. The default is `5m`. -`xpack.data_enhanced.search.sessions.notTouchedInProgressTimeout` {ess-icon}:: +`data.search.sessions.notTouchedInProgressTimeout` {ess-icon}:: How long a search session can run after a user navigates away without saving a session. The default is `1m`. -`xpack.data_enhanced.search.sessions.maxUpdateRetries` {ess-icon}:: +`data.search.sessions.maxUpdateRetries` {ess-icon}:: How many retries {kib} can perform while attempting to save a search session. The default is `3`. -`xpack.data_enhanced.search.sessions.defaultExpiration` {ess-icon}:: +`data.search.sessions.defaultExpiration` {ess-icon}:: How long search session results are stored before they are deleted. Extending a search session resets the expiration by the same value. The default is `7d`. diff --git a/docs/setup/upgrade/resolving-migration-failures.asciidoc b/docs/setup/upgrade/resolving-migration-failures.asciidoc index 3cbfb4c9c2abe..f90a9f541f3eb 100644 --- a/docs/setup/upgrade/resolving-migration-failures.asciidoc +++ b/docs/setup/upgrade/resolving-migration-failures.asciidoc @@ -171,7 +171,7 @@ Upgrade migrations fail because routing allocation is disabled or restricted (`c [source,sh] -------------------------------------------- -Unable to complete saved object migrations for the [.kibana] index: The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue. To proceed, please remove the cluster routing allocation settings with PUT /_cluster/settings {"transient": {"cluster.routing.allocation.enable": null}, "persistent": {"cluster.routing.allocation.enable": null}} +Unable to complete saved object migrations for the [.kibana] index: [unsupported_cluster_routing_allocation] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue. To proceed, please remove the cluster routing allocation settings with PUT /_cluster/settings {"transient": {"cluster.routing.allocation.enable": null}, "persistent": {"cluster.routing.allocation.enable": null}} -------------------------------------------- To get around the issue, remove the transient and persisted routing allocation settings: diff --git a/docs/user/alerting/alerting-getting-started.asciidoc b/docs/user/alerting/alerting-getting-started.asciidoc index 584d45dc088fd..ca0b8ff8ee111 100644 --- a/docs/user/alerting/alerting-getting-started.asciidoc +++ b/docs/user/alerting/alerting-getting-started.asciidoc @@ -63,7 +63,7 @@ Rule schedules are defined as an interval between subsequent checks, and can ran [IMPORTANT] ============================================== -The intervals of rule checks in {kib} are approximate. The timing of their execution is affected by factors such as the frequency at which tasks are claimed and the task load on the system. See <> for more information. +The intervals of rule checks in {kib} are approximate. Their timing is affected by factors such as the frequency at which tasks are claimed and the task load on the system. Refer to <> for more information. ============================================== [float] @@ -82,7 +82,7 @@ The result is a template: all the parameters needed to invoke a service are supp In the server monitoring example, the `email` connector type is used, and `server` is mapped to the body of the email, using the template string `CPU on {{server}} is high`. -When the rule detects the condition, it creates an <> containing the details of the condition, renders the template with these details such as server name, and executes the action on the {kib} server by invoking the `email` connector type. +When the rule detects the condition, it creates an <> containing the details of the condition, renders the template with these details such as server name, and runs the action on the {kib} server by invoking the `email` connector type. image::images/what-is-an-action.svg[Actions are like templates that are rendered when an alert detects a condition] diff --git a/docs/user/alerting/alerting-setup.asciidoc b/docs/user/alerting/alerting-setup.asciidoc index 6f8caedde3e18..2b92e8caa7ef9 100644 --- a/docs/user/alerting/alerting-setup.asciidoc +++ b/docs/user/alerting/alerting-setup.asciidoc @@ -62,7 +62,7 @@ Rules and connectors are isolated to the {kib} space in which they were created. [[alerting-authorization]] === Authorization -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: +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 triggered actions. The following rule actions will re-generate the API key: * Creating a rule * Enabling a disabled rule diff --git a/docs/user/alerting/alerting-troubleshooting.asciidoc b/docs/user/alerting/alerting-troubleshooting.asciidoc index 5f3c566e82d42..32c77d7fa57a7 100644 --- a/docs/user/alerting/alerting-troubleshooting.asciidoc +++ b/docs/user/alerting/alerting-troubleshooting.asciidoc @@ -1,11 +1,7 @@ -[role="xpack"] [[alerting-troubleshooting]] -== Troubleshooting -++++ -Troubleshooting -++++ +== Troubleshooting and limitations -Alerting provides many options for diagnosing problems with Rules and Connectors. +Alerting provides many options for diagnosing problems with rules and connectors. [float] [[alerting-kibana-log]] @@ -56,7 +52,7 @@ Diagnosing these may be difficult - but there may be log messages for error cond === Use the REST APIs There is a rich set of HTTP endpoints to introspect and manage rules and connectors. -One of the http endpoints available for actions is the POST <>. You can use this to “test” an action. For instance, if you have a server log action created, you can execute it via curling the endpoint: +One of the http endpoints available for actions is the POST <>. You can use this to “test” an action. For instance, if you have a server log action created, you can run it via curling the endpoint: [source, txt] -------------------------------------------------- curl -X POST -k \ @@ -79,13 +75,13 @@ The same REST POST _execute API command will be: kbn-action execute a692dc89-15b9-4a3c-9e47-9fb6872e49ce ‘{"params":{"subject":"hallo","message":"hallo!","to":["me@example.com"]}}’ -------------------------------------------------- -The result of this http request (and printed to stdout by https://github.com/pmuellr/kbn-action[kbn-action]) will be data returned by the action execution, along with error messages if errors were encountered. +The result of this http request (and printed to stdout by https://github.com/pmuellr/kbn-action[kbn-action]) will be data returned by the action, along with error messages if errors were encountered. [float] [[alerting-error-banners]] === Look for error banners -The Rule Management and Rule Details pages contain an error banner, which helps to identify the errors for the rules: +The *Rule Management* and *Rule Details* pages contain an error banner, which helps to identify the errors for the rules: [role="screenshot"] image::images/rules-management-health.png[Rule management page with the errors banner] @@ -96,14 +92,14 @@ image::images/rules-details-health.png[Rule details page with the errors banner] [[task-manager-diagnostics]] === Task Manager diagnostics -Under the hood, Rules and Connectors uses a plugin called Task Manager, which handles the scheduling, execution, and error handling of the tasks. -This means that failure cases in Rules or Connectors will, at times, be revealed by the Task Manager mechanism, rather than the Rules mechanism. +Under the hood, {rules-ui} uses a plugin called Task Manager, which handles the scheduling, running, and error handling of the tasks. +This means that failure cases in {rules-ui} will, at times, be revealed by the Task Manager mechanism, rather than the Rules mechanism. Task Manager provides a visible status which can be used to diagnose issues and is very well documented <> and <>. Task Manager uses the `.kibana_task_manager` index, an internal index that contains all the saved objects that represent the tasks in the system. [float] -==== Getting from a Rule to its Task +==== Getting from a rule to its task When a rule is created, a task is created, scheduled to run at the interval specified. For example, when a rule is created and configured to check every 5 minutes, then the underlying task will be expected to run every 5 minutes. In practice, after each time the rule runs, the task is scheduled to run again in 5 minutes, rather than being scheduled to run every 5 minutes indefinitely. If you use the <> to fetch the underlying rule, you’ll get an object like so: @@ -190,12 +186,28 @@ When diagnosing the health state of the task, you will most likely be interested Investigating the underlying task can help you gauge whether the problem you’re seeing is rooted in the rule not running at all, whether it’s running and failing, or whether it is running, but exhibiting behavior that is different than what was expected (at which point you should focus on the rule itself, rather than the task). -In addition to the above methods, broadly used the next approaches and common issues: +In addition to the above methods, refer to the following approaches and common issues: * <> * <> * <> +[discrete] +[[alerting-limitations]] +=== Limitations + +The following limitations and known problems apply to the {version} release of +the {kib} {alert-features}. + +[discrete] +==== Alert visibility + +If you create a rule in the {observability} or {security-app}, its alerts are +not visible in *{stack-manage-app} > {rules-ui}*. You can view them only in the +{kib} app where you created the rule. If you use the +<>, the visibility of the alerts is related to +the `consumer` property. + include::troubleshooting/alerting-common-issues.asciidoc[] include::troubleshooting/event-log-index.asciidoc[] include::troubleshooting/testing-connectors.asciidoc[] diff --git a/docs/user/alerting/create-and-manage-rules.asciidoc b/docs/user/alerting/create-and-manage-rules.asciidoc index ba1629abd9c86..52db2ed51217e 100644 --- a/docs/user/alerting/create-and-manage-rules.asciidoc +++ b/docs/user/alerting/create-and-manage-rules.asciidoc @@ -44,7 +44,7 @@ Notify:: This value limits how often actions are repeated when an alert rem [[alerting-concepts-suppressing-duplicate-notifications]] [NOTE] ============================================== -Since actions are executed per alert, a rule can end up generating a large number of actions. Take the following example where a rule is monitoring three servers every minute for CPU usage > 0.9, and the rule is set to notify **Every time alert is active**: +Since actions are triggered per alert, a rule can end up generating a large number of actions. Take the following example where a rule is monitoring three servers every minute for CPU usage > 0.9, and the rule is set to notify **Every time alert is active**: * Minute 1: server X123 > 0.9. *One email* is sent for server X123. * Minute 2: X123 and Y456 > 0.9. *Two emails* are sent, one for X123 and one for Y456. @@ -163,8 +163,8 @@ A rule can have one of the following statuses: `active`:: The conditions for the rule have been met, and the associated actions should be invoked. `ok`:: The conditions for the rule have not been met, and the associated actions are not invoked. -`error`:: An error was encountered during rule execution. -`pending`:: The rule has not yet executed. The rule was either just created, or enabled after being disabled. +`error`:: An error was encountered by the rule. +`pending`:: The rule has not yet run. The rule was either just created, or enabled after being disabled. `unknown`:: A problem occurred when calculating the status. Most likely, something went wrong with the alerting code. [float] diff --git a/docs/user/alerting/rule-types.asciidoc b/docs/user/alerting/rule-types.asciidoc index 324347f3b2648..120c580330b9f 100644 --- a/docs/user/alerting/rule-types.asciidoc +++ b/docs/user/alerting/rule-types.asciidoc @@ -41,6 +41,12 @@ see {subscriptions}[the subscription page]. Observability rules are categorized into APM and User Experience, Logs, Metrics, Stack Monitoring, and Uptime. +[NOTE] +============================================== +If you create a rule in the {observability} app, its alerts are not visible in +*{stack-manage-app} > {rules-ui}*. They are visible only in the {observability} app. +============================================== + [cols="2*<"] |=== @@ -72,7 +78,13 @@ beta:[] {ml-docs}/ml-configuring-alerts.html[{ml-cap} rules] run scheduled check [[security-rules]] === Security rules -Security rules detect suspicious source events with pre-built or custom rules and create alerts when a rule’s conditions are met. For more information, refer to {security-guide}/prebuilt-rules.html[Security rules]. +Security rules detect suspicious source events with pre-built or custom rules and create alerts when a rule's conditions are met. For more information, refer to {security-guide}/prebuilt-rules.html[Security rules]. + +[NOTE] +============================================== +Alerts associated with security rules are visible only in the {security-app}; +they are not visible in *{stack-manage-app} > {rules-ui}*. +============================================== include::rule-types/index-threshold.asciidoc[] include::rule-types/es-query.asciidoc[] diff --git a/docs/user/alerting/rule-types/es-query.asciidoc b/docs/user/alerting/rule-types/es-query.asciidoc index dba8a4878cb26..c8f98808ca552 100644 --- a/docs/user/alerting/rule-types/es-query.asciidoc +++ b/docs/user/alerting/rule-types/es-query.asciidoc @@ -26,7 +26,7 @@ Index:: Specifies an *index or data view* and a *time field* that is used for the *time window*. Size:: Specifies the number of documents to pass to the configured actions when the threshold condition is met. -{es} query:: Specifies the ES DSL query to execute. The number of documents that +{es} query:: Specifies the ES DSL query. The number of documents that match this query is evaluated against the threshold condition. Only the `query` field is used, other DSL fields are not considered. Threshold:: Defines a threshold value and a comparison operator (`is above`, @@ -81,7 +81,7 @@ image::images/rule-types-es-query-example-action-variable.png[Iterate over hits Use the *Test query* feature to verify that your query DSL is valid. -* Valid queries are executed against the configured *index* using the configured +* Valid queries are run against the configured *index* using the configured *time window*. The number of documents that match the query is displayed. + [role="screenshot"] @@ -95,16 +95,14 @@ image::user/alerting/images/rule-types-es-query-invalid.png[Test {es} query show [float] ==== Handling multiple matches of the same document -This rule type checks for duplication of document matches across rule -executions. If you configure the rule with a schedule interval smaller than the -time window, and a document matches a query in multiple rule executions, it is -alerted on only once. +This rule type checks for duplication of document matches across multiple runs. +If you configure the rule with a schedule interval smaller than the time window, +and a document matches a query in multiple runs, it is alerted on only once. The rule uses the timestamp of the matches to avoid alerting on the same match multiple times. The timestamp of the latest match is used for evaluating the -rule conditions when the rule is executed. Only matches between the latest -timestamp from the previous execution and the actual rule execution are -considered. +rule conditions when the rule runs. Only matches between the latest timestamp +from the previous run and the current run are considered. Suppose you have a rule configured to run every minute. The rule uses a time window of 1 hour and checks if there are more than 99 matches for the query. The @@ -112,16 +110,16 @@ window of 1 hour and checks if there are more than 99 matches for the query. The [cols="3*<"] |=== -| `Execution 1 (0:00)` +| `Run 1 (0:00)` | Rule finds 113 matches in the last hour: `113 > 99` | Rule is active and user is alerted. -| `Execution 2 (0:01)` +| `Run 2 (0:01)` | Rule finds 127 matches in the last hour. 105 of the matches are duplicates that were already alerted on previously, so you actually have 22 matches: `22 !> 99` | No alert. -| `Execution 3 (0:02)` +| `Run 3 (0:02)` | Rule finds 159 matches in the last hour. 88 of the matches are duplicates that were already alerted on previously, so you actually have 71 matches: `71 !> 99` | No alert. -| `Execution 4 (0:03)` +| `Run 4 (0:03)` | Rule finds 190 matches in the last hour. 71 of them are duplicates that were already alerted on previously, so you actually have 119 matches: `119 > 99` | Rule is active and user is alerted. |=== \ No newline at end of file diff --git a/docs/user/alerting/rule-types/index-threshold.asciidoc b/docs/user/alerting/rule-types/index-threshold.asciidoc index c65b0f66b1b63..03f855a861022 100644 --- a/docs/user/alerting/rule-types/index-threshold.asciidoc +++ b/docs/user/alerting/rule-types/index-threshold.asciidoc @@ -52,7 +52,7 @@ In this example, you will use the {kib} < Rules and Connectors**. -. Create a new rule that is checked every four hours and executes actions when the rule status changes. +. Create a new rule that is checked every four hours and triggers actions when the rule status changes. + [role="screenshot"] image::user/alerting/images/rule-types-index-threshold-select.png[Choosing an index threshold rule type] diff --git a/docs/user/alerting/troubleshooting/alerting-common-issues.asciidoc b/docs/user/alerting/troubleshooting/alerting-common-issues.asciidoc index 7ab34dacacd98..75a158e6d364f 100644 --- a/docs/user/alerting/troubleshooting/alerting-common-issues.asciidoc +++ b/docs/user/alerting/troubleshooting/alerting-common-issues.asciidoc @@ -40,35 +40,34 @@ When diagnosing issues related to alerting, focus on the tasks that begin with ` Alerting tasks always begin with `alerting:`. For example, the `alerting:.index-threshold` tasks back the <>. Action tasks always begin with `actions:`. For example, the `actions:.index` tasks back the <>. -For more details on monitoring and diagnosing task execution in Task Manager, see <>. +For more details on monitoring and diagnosing tasks in Task Manager, refer to <>. [float] [[connector-tls-settings]] -==== Connectors have TLS errors when executing actions +==== Connectors have TLS errors when running actions *Problem* -When executing actions, a connector gets a TLS socket error when connecting to -the server. +A connector gets a TLS socket error when connecting to the server to run an action. *Solution* Configuration options are available to specialize connections to TLS servers, -including ignoring server certificate validation, and providing certificate -authority data to verify servers using custom certificates. For more details, -see <>. +including ignoring server certificate validation and providing certificate +authority data to verify servers using custom certificates. For more details, +see <>. [float] -[[rules-long-execution-time]] +[[rules-long-run-time]] ==== Rules take a long time to run *Problem* -Rules are taking a long time to execute and are impacting the overall health of your deployment. +Rules are taking a long time to run and are impacting the overall health of your deployment. [IMPORTANT] ============================================== -By default, only users with a `superuser` role can query the experimental[] {kib} event log because it is a system index. To enable additional users to execute this query, assign `read` privileges to the `.kibana-event-log*` index. +By default, only users with a `superuser` role can query the experimental[] {kib} event log because it is a system index. To enable additional users to run this query, assign `read` privileges to the `.kibana-event-log*` index. ============================================== *Solution* @@ -87,9 +86,9 @@ image::images/rule-details-timeout-error.png[Rule details page with timeout erro If you want your rules to run longer, update the `xpack.alerting.rules.run.timeout` configuration in your <>. You can also target a specific rule type by using `xpack.alerting.rules.run.ruleTypeOverrides`. -Rules that consistently run longer than their <> may produce unexpected results. If the average run duration, visible on the <>, is greater than the check interval, consider increasing the check interval. +Rules that consistently run longer than their <> may produce unexpected results. If the average run duration, visible on the <>, is greater than the check interval, consider increasing the check interval. -To get all long-running rules, you can query for a list of rule ids, bucketed by their execution times: +To get all long-running rules, you can query for a list of rule ids, bucketed by their run times: [source,console] -------------------------------------------------- @@ -160,9 +159,9 @@ GET /.kibana-event-log*/_search -------------------------------------------------- // TEST -<1> This queries for rules executed in the last day. Update the values of `lte` and `gte` to query over a different time range. -<2> Use `event.provider: actions` to query for long-running action executions. -<3> Execution durations are stored as nanoseconds. This adds a runtime field to convert that duration into seconds. +<1> This queries for rules run in the last day. Update the values of `lte` and `gte` to query over a different time range. +<2> Use `event.provider: actions` to query for long-running actions. +<3> Run durations are stored as nanoseconds. This adds a runtime field to convert that duration into seconds. <4> This interval buckets the `event.duration_in_seconds` runtime field into 1 second intervals. Update this value to change the granularity of the buckets. If you are unable to use runtime fields, make sure this aggregation targets `event.duration` and use nanoseconds for the interval. <5> This retrieves the top 10 rule ids for this duration interval. Update this value to retrieve more rule ids. @@ -237,10 +236,10 @@ This query returns the following: } } -------------------------------------------------- -<1> Most rule execution durations fall within the first bucket (0 - 1 seconds). -<2> A single rule with id `41893910-6bca-11eb-9e0d-85d233e3ee35` took between 30 and 31 seconds to execute. +<1> Most run durations fall within the first bucket (0 - 1 seconds). +<2> A single rule with id `41893910-6bca-11eb-9e0d-85d233e3ee35` took between 30 and 31 seconds to run. -Use the <> to retrieve additional information about rules that take a long time to execute. +Use the <> to retrieve additional information about rules that take a long time to run. [float] [[rule-cannot-decrypt-api-key]] @@ -248,11 +247,11 @@ Use the <> to retrieve additional information about r *Problem*: -The rule fails to execute and has an `Unable to decrypt attribute "apiKey"` error. +The rule fails to run and has an `Unable to decrypt attribute "apiKey"` error. *Solution*: -This error happens when the `xpack.encryptedSavedObjects.encryptionKey` value used to create the rule does not match the value used during rule execution. Depending on the scenario, there are different ways to solve this problem: +This error happens when the `xpack.encryptedSavedObjects.encryptionKey` value used to create the rule does not match the value used when the rule runs. Depending on the scenario, there are different ways to solve this problem: [cols="2*<"] |=== diff --git a/docs/user/alerting/troubleshooting/event-log-index.asciidoc b/docs/user/alerting/troubleshooting/event-log-index.asciidoc index 5016b6d6f19c9..a0e6cd11ed184 100644 --- a/docs/user/alerting/troubleshooting/event-log-index.asciidoc +++ b/docs/user/alerting/troubleshooting/event-log-index.asciidoc @@ -6,15 +6,16 @@ experimental[] Use the event log index to determine: -* Whether a rule successfully ran but its associated actions did not +* Whether a rule ran successfully but its associated actions did not * Whether a rule was ever activated -* Additional information about rule execution errors -* Duration times for rule and action executions +* Additional information about errors when the rule ran +* Run durations for the rules and actions [float] -==== Example Event Log Queries +==== Example event log queries + +The following event log query looks at all events related to a specific rule id: -Event log query to look at all event related to a specific rule id: [source, txt] -------------------------------------------------- GET /.kibana-event-log*/_search @@ -77,7 +78,9 @@ GET /.kibana-event-log*/_search } -------------------------------------------------- -Event log query to look at all events related to executing a rule or action. These events include duration. +The following event log query looks at all events related to running a rule or +action. These events include duration: + [source, txt] -------------------------------------------------- GET /.kibana-event-log*/_search @@ -124,8 +127,10 @@ GET /.kibana-event-log*/_search } -------------------------------------------------- -Event log query to look at the errors. -You should see an `error.message` property in that event, with a message from the action executor that might provide more detail on why the action encountered an error: +The following event log query looks at the errors. You should see an +`error.message` property in that event, with a message that might provide more +details about why the action encountered an error: + [source, txt] -------------------------------------------------- { @@ -150,7 +155,9 @@ You should see an `error.message` property in that event, with a message from th } -------------------------------------------------- -And see the errors for the rules you might provide the next search query: +You might also see the errors for the rules, which can use in the next search +query. For example: + [source, txt] -------------------------------------------------- { diff --git a/docs/user/alerting/troubleshooting/testing-connectors.asciidoc b/docs/user/alerting/troubleshooting/testing-connectors.asciidoc index 64ba106655321..fd5a897dfd4c3 100644 --- a/docs/user/alerting/troubleshooting/testing-connectors.asciidoc +++ b/docs/user/alerting/troubleshooting/testing-connectors.asciidoc @@ -15,9 +15,10 @@ image::user/alerting/images/email-connector-test.png[Rule management page with t image::user/alerting/images/teams-connector-test.png[Five clauses define the condition to detect] [float] -==== experimental[] Troubleshooting Connectors with `kbn-action` tool +==== experimental[] Troubleshooting connectors with the `kbn-action` tool -Executing an Email action via https://github.com/pmuellr/kbn-action[kbn-action]. In this example, is using a cloud deployment of the stack: +You can run an email action via https://github.com/pmuellr/kbn-action[kbn-action]. +In this example, it is a Cloud deployment of the {stack}: [source, txt] -------------------------------------------------- @@ -44,7 +45,8 @@ $ kbn-action ls } ] -------------------------------------------------- -and then execute this: + +You can then run the following test: [source, txt] -------------------------------------------------- diff --git a/docs/user/dashboard/vega-reference.asciidoc b/docs/user/dashboard/vega-reference.asciidoc index b593eacf703fb..95b1ffb27b476 100644 --- a/docs/user/dashboard/vega-reference.asciidoc +++ b/docs/user/dashboard/vega-reference.asciidoc @@ -242,12 +242,17 @@ experimental[] Access the Elastic Map Service files via the same mechanism: url: { // "type" defaults to "elasticsearch" otherwise %type%: emsfile - // Name of the file, exactly as in the Region map visualization + // Name of the file, exactly as in https://maps.elastic.co name: World Countries } -// The result is a geojson file, get its features to use -// this data source with the "shape" marks +// The result is either a topojson file or a geojson file. +// Refer to the Default format for the file at https://maps.elastic.co +// Get its features to use this data source with the "shape" marks // https://vega.github.io/vega/docs/marks/shape/ +// For a topojson file use +format: {type: "topojson", feature: "data"} + +// For a geojson file use format: {property: "features"} ---- @@ -310,16 +315,28 @@ experimental[] You can use the *Vega* https://vega.github.io/vega/docs/data/[dat [source,yaml] ---- -url: { - // "type" defaults to "elasticsearch" otherwise - %type%: emsfile - // Name of the file, exactly as in the Region map visualization - name: World Countries -} -// The result is a geojson file, get its features to use -// this data source with the "shape" marks -// https://vega.github.io/vega/docs/marks/shape/ -format: {property: "features"} + "data": [ + { + "name": "countries", + "url": { + // "type" defaults to "elasticsearch" otherwise + %type%: emsfile + // Name of the file, exactly as in the Region map visualization + name: World Countries + }, + // The result is a topojson file, get its features to use + // this data source with the "shape" marks + // https://vega.github.io/vega/docs/marks/shape/ + "format": {"type": "topojson", "feature": "data"}, + } + ], + "marks": [ + { + "type": "shape", + "from": {"data": "countries"}, + "transform": [{"type": "geoshape", "projection": "projection"}] + } + ] ---- [float] diff --git a/docs/user/production-considerations/alerting-production-considerations.asciidoc b/docs/user/production-considerations/alerting-production-considerations.asciidoc index 42f9a17cc6f88..f94ec1c3d04bb 100644 --- a/docs/user/production-considerations/alerting-production-considerations.asciidoc +++ b/docs/user/production-considerations/alerting-production-considerations.asciidoc @@ -64,3 +64,50 @@ Because {kib} uses the documents to display historic data, you should set the de For more information on index lifecycle management, see: {ref}/index-lifecycle-management.html[Index Lifecycle Policies]. + +[float] +[[alerting-circuit-breakers]] +=== Circuit breakers + +There are several scenarios where running alerting rules and actions can start to negatively impact the overall health of a {kib} instance either by clogging up Task Manager throughput or by consuming so much CPU/memory that other operations cannot complete in a reasonable amount of time. There are several <> circuit breakers to help minimize these effects. + +[float] +==== Rules with very short intervals + +Running large numbers of rules at very short intervals can quickly clog up Task Manager throughput, leading to higher schedule drift. Use `xpack.alerting.rules.minimumScheduleInterval.value` to set a minimum schedule interval for rules. The default (and recommended) value for this configuration is `1m`. Use `xpack.alerting.rules.minimumScheduleInterval.enforce` to specify whether to strictly enforce this minimum. While the default value for this setting is `false` to maintain backwards compatibility with existing rules, set this to `true` to prevent new and updated rules from running at an interval below the minimum. + +[float] +==== Rules that run for a long time + +Rules that run for a long time typically do so because they are issuing resource-intensive {es} queries or performing CPU-intensive processing. This can block the event loop, making {kib} inaccessible while the rule runs. By default, rule processing is cancelled after `5m` but this can be overriden using the `xpack.alerting.rules.run.timeout` configuration. This value can also be configured per rule type using `xpack.alerting.rules.run.ruleTypeOverrides`. For example, the following configuration sets the global timeout value to `1m` while allowing *Index Threshold* rules to run for `10m` before being cancelled. + +[source,yaml] +-- +xpack.alerting.rules.run: + timeout: '1m' + ruleTypeOverrides: + - id: '.index-threshold' + timeout: '10m' +-- + +When a rule run is cancelled, any alerts and actions that were generated during the run are discarded. This behavior is controlled by the `xpack.alerting.cancelAlertsOnRuleTimeout` configuration, which defaults to `true`. Set this to `false` to receive alerts and actions after the timeout, although be aware that these may be incomplete and possibly inaccurate. + +[float] +==== Rules that spawn too many actions + +Rules that spawn too many actions can quickly clog up Task Manager throughput. This can occur if: + +* A rule configured with a single action generates many alerts. For example, if a rule configured to run a single email action generates 100,000 alerts, then 100,000 actions will be scheduled during a run. +* A rule configured with multiple actions generates alerts. For example, if a rule configured to run an email action, a server log action and a webhook action generates 30,000 alerts, then 90,000 actions will be scheduled during a run. + +Use `xpack.alerting.rules.run.actions.max` to limit the maximum number of actions a rule can generate per run. This value can also be configured by connector type using `xpack.alerting.rules.run.actions.connectorTypeOverrides`. For example, the following config sets the global maximum number of actions to 100 while allowing rules with *Email* actions to generate up to 200 actions. + +[source,yaml] +-- +xpack.alerting.rules.run: + actions: + max: 100 + connectorTypeOverrides: + - id: '.email' + max: 200 +-- \ No newline at end of file diff --git a/docs/user/production-considerations/reporting-production-considerations.asciidoc b/docs/user/production-considerations/reporting-production-considerations.asciidoc index f673c4538f443..20ea82be9c6e4 100644 --- a/docs/user/production-considerations/reporting-production-considerations.asciidoc +++ b/docs/user/production-considerations/reporting-production-considerations.asciidoc @@ -31,10 +31,10 @@ distributions don't have user namespaces enabled by default, or they require the automatically disable the sandbox when it is running on Debian because additional steps are required to enable unprivileged usernamespaces. In these situations, you'll see the following message in your {kib} startup logs: `Chromium sandbox provides an additional layer of protection, but is not supported for your OS. -Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'.` +Automatically setting 'xpack.screenshotting.browser.chromium.disableSandbox: true'.` Reporting automatically enables the Chromium sandbox at startup when a supported OS is detected. However, if your kernel is 3.8 or newer, it's -recommended to set `xpack.reporting.capture.browser.chromium.disableSandbox: false` in your `kibana.yml` to explicitly enable usernamespaces. +recommended to set `xpack.screenshotting.browser.chromium.disableSandbox: false` in your `kibana.yml` to explicitly enable usernamespaces. [float] [[reporting-docker-sandbox]] diff --git a/nav-kibana-dev.docnav.json b/nav-kibana-dev.docnav.json index 517d42c8f72d0..4a1fd848a928e 100644 --- a/nav-kibana-dev.docnav.json +++ b/nav-kibana-dev.docnav.json @@ -69,6 +69,7 @@ { "label": "Contributors Newsletters", "items": [ + { "id": "kibApril2022ContributorNewsletter" }, { "id": "kibMarch2022ContributorNewsletter" }, { "id": "kibFebruary2022ContributorNewsletter" }, { "id": "kibJanuary2022ContributorNewsletter" }, @@ -99,7 +100,6 @@ { "id": "kibCoreSavedObjectsPluginApi" }, { "id": "kibFieldFormatsPluginApi" }, { "id": "kibDataPluginApi" }, - { "id": "kibDataAutocompletePluginApi" }, { "id": "kibDataEnhancedPluginApi" }, { "id": "kibDataViewsPluginApi" }, { "id": "kibDataQueryPluginApi" }, diff --git a/package.json b/package.json index 43ab61feba638..a896137ee34b2 100644 --- a/package.json +++ b/package.json @@ -134,6 +134,9 @@ "@kbn/ambient-ui-types": "link:bazel-bin/packages/kbn-ambient-ui-types", "@kbn/analytics": "link:bazel-bin/packages/kbn-analytics", "@kbn/analytics-client": "link:bazel-bin/packages/analytics/client", + "@kbn/analytics-shippers-elastic-v3-browser": "link:bazel-bin/packages/analytics/shippers/elastic_v3/browser", + "@kbn/analytics-shippers-elastic-v3-common": "link:bazel-bin/packages/analytics/shippers/elastic_v3/common", + "@kbn/analytics-shippers-elastic-v3-server": "link:bazel-bin/packages/analytics/shippers/elastic_v3/server", "@kbn/analytics-shippers-fullstory": "link:bazel-bin/packages/analytics/shippers/fullstory", "@kbn/apm-config-loader": "link:bazel-bin/packages/kbn-apm-config-loader", "@kbn/apm-utils": "link:bazel-bin/packages/kbn-apm-utils", @@ -271,7 +274,6 @@ "handlebars": "4.7.7", "he": "^1.2.0", "history": "^4.9.0", - "history-extra": "^5.0.1", "hjson": "3.2.1", "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^5.0.0", @@ -472,6 +474,7 @@ "@elastic/eslint-plugin-eui": "0.0.2", "@elastic/github-checks-reporter": "0.0.20b3", "@elastic/makelogs": "^6.0.0", + "@elastic/performance-testing-dataset-extractor": "^0.0.3", "@elastic/synthetics": "^1.0.0-beta.22", "@emotion/babel-preset-css-prop": "^11.2.0", "@emotion/jest": "^11.9.0", @@ -606,6 +609,9 @@ "@types/kbn__alerts": "link:bazel-bin/packages/kbn-alerts/npm_module_types", "@types/kbn__analytics": "link:bazel-bin/packages/kbn-analytics/npm_module_types", "@types/kbn__analytics-client": "link:bazel-bin/packages/analytics/client/npm_module_types", + "@types/kbn__analytics-shippers-elastic-v3-browser": "link:bazel-bin/packages/analytics/shippers/elastic_v3/browser/npm_module_types", + "@types/kbn__analytics-shippers-elastic-v3-common": "link:bazel-bin/packages/analytics/shippers/elastic_v3/common/npm_module_types", + "@types/kbn__analytics-shippers-elastic-v3-server": "link:bazel-bin/packages/analytics/shippers/elastic_v3/server/npm_module_types", "@types/kbn__analytics-shippers-fullstory": "link:bazel-bin/packages/analytics/shippers/fullstory/npm_module_types", "@types/kbn__apm-config-loader": "link:bazel-bin/packages/kbn-apm-config-loader/npm_module_types", "@types/kbn__apm-utils": "link:bazel-bin/packages/kbn-apm-utils/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 43c80fc882159..52d4cbbdfb8c0 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -10,6 +10,9 @@ filegroup( name = "build_pkg_code", srcs = [ "//packages/analytics/client:build", + "//packages/analytics/shippers/elastic_v3/browser:build", + "//packages/analytics/shippers/elastic_v3/common:build", + "//packages/analytics/shippers/elastic_v3/server:build", "//packages/analytics/shippers/fullstory:build", "//packages/elastic-apm-synthtrace:build", "//packages/elastic-eslint-config-kibana:build", @@ -114,6 +117,9 @@ filegroup( name = "build_pkg_types", srcs = [ "//packages/analytics/client:build_types", + "//packages/analytics/shippers/elastic_v3/browser:build_types", + "//packages/analytics/shippers/elastic_v3/common:build_types", + "//packages/analytics/shippers/elastic_v3/server:build_types", "//packages/analytics/shippers/fullstory:build_types", "//packages/elastic-apm-synthtrace:build_types", "//packages/elastic-safer-lodash-set:build_types", diff --git a/packages/analytics/client/src/analytics_client/analytics_client.test.ts b/packages/analytics/client/src/analytics_client/analytics_client.test.ts index 08515ecae8d1e..5348ffa1979fa 100644 --- a/packages/analytics/client/src/analytics_client/analytics_client.test.ts +++ b/packages/analytics/client/src/analytics_client/analytics_client.test.ts @@ -9,6 +9,7 @@ // eslint-disable-next-line max-classes-per-file import type { Observable } from 'rxjs'; import { BehaviorSubject, firstValueFrom, lastValueFrom, Subject } from 'rxjs'; +import { fakeSchedulers } from 'rxjs-marbles/jest'; import type { MockedLogger } from '@kbn/logging-mocks'; import { loggerMock } from '@kbn/logging-mocks'; import { AnalyticsClient } from './analytics_client'; @@ -17,13 +18,12 @@ import { shippersMock } from '../shippers/mocks'; import type { EventContext, TelemetryCounter } from '../events'; import { TelemetryCounterType } from '../events'; -const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); - describe('AnalyticsClient', () => { let analyticsClient: AnalyticsClient; let logger: MockedLogger; beforeEach(() => { + jest.useFakeTimers(); logger = loggerMock.create(); analyticsClient = new AnalyticsClient({ logger, @@ -32,6 +32,11 @@ describe('AnalyticsClient', () => { }); }); + afterEach(() => { + analyticsClient.shutdown(); + jest.useRealTimers(); + }); + describe('registerEventType', () => { test('successfully registers a event type', () => { analyticsClient.registerEventType({ @@ -281,13 +286,16 @@ describe('AnalyticsClient', () => { constructor({ optInMock, extendContextMock, + shutdownMock, }: { optInMock?: jest.Mock; extendContextMock?: jest.Mock; + shutdownMock?: jest.Mock; }) { super(); if (optInMock) this.optIn = optInMock; if (extendContextMock) this.extendContext = extendContextMock; + if (shutdownMock) this.shutdown = shutdownMock; } } @@ -310,54 +318,76 @@ describe('AnalyticsClient', () => { expect(optIn).toHaveBeenCalledWith(true); }); - test('Spreads the context updates to the shipper (only after opt-in)', async () => { - const extendContextMock = jest.fn(); - analyticsClient.registerShipper(MockedShipper, { extendContextMock }); - expect(extendContextMock).toHaveBeenCalledTimes(0); // Not until we have opt-in - analyticsClient.optIn({ global: { enabled: true } }); - await delay(10); - expect(extendContextMock).toHaveBeenCalledWith({}); // The initial context - - const context$ = new Subject<{ a_field: boolean }>(); - analyticsClient.registerContextProvider({ - name: 'contextProviderA', - schema: { - a_field: { - type: 'boolean', - _meta: { - description: 'a_field description', + test( + 'Spreads the context updates to the shipper (only after opt-in)', + fakeSchedulers((advance) => { + const extendContextMock = jest.fn(); + analyticsClient.registerShipper(MockedShipper, { extendContextMock }); + expect(extendContextMock).toHaveBeenCalledTimes(0); // Not until we have opt-in + analyticsClient.optIn({ global: { enabled: true } }); + advance(10); + expect(extendContextMock).toHaveBeenCalledWith({}); // The initial context + + const context$ = new Subject<{ a_field: boolean }>(); + analyticsClient.registerContextProvider({ + name: 'contextProviderA', + schema: { + a_field: { + type: 'boolean', + _meta: { + description: 'a_field description', + }, }, }, - }, - context$, - }); - - context$.next({ a_field: true }); - expect(extendContextMock).toHaveBeenCalledWith({ a_field: true }); // After update - }); - - test('Does not spread the context if opt-in === false', async () => { - const extendContextMock = jest.fn(); - analyticsClient.registerShipper(MockedShipper, { extendContextMock }); - expect(extendContextMock).toHaveBeenCalledTimes(0); // Not until we have opt-in - analyticsClient.optIn({ global: { enabled: false } }); - await delay(10); - expect(extendContextMock).toHaveBeenCalledTimes(0); // Not until we have opt-in - }); + context$, + }); - test('Handles errors in the shipper', async () => { - const extendContextMock = jest.fn().mockImplementation(() => { - throw new Error('Something went terribly wrong'); - }); - analyticsClient.registerShipper(MockedShipper, { extendContextMock }); - analyticsClient.optIn({ global: { enabled: true } }); - await delay(10); - expect(extendContextMock).toHaveBeenCalledWith({}); // The initial context - expect(logger.warn).toHaveBeenCalledWith( - `Shipper "${MockedShipper.shipperName}" failed to extend the context`, - expect.any(Error) - ); - }); + context$.next({ a_field: true }); + expect(extendContextMock).toHaveBeenCalledWith({ a_field: true }); // After update + }) + ); + + test( + 'Does not spread the context if opt-in === false', + fakeSchedulers((advance) => { + const extendContextMock = jest.fn(); + analyticsClient.registerShipper(MockedShipper, { extendContextMock }); + expect(extendContextMock).toHaveBeenCalledTimes(0); // Not until we have opt-in + analyticsClient.optIn({ global: { enabled: false } }); + advance(10); + expect(extendContextMock).toHaveBeenCalledTimes(0); // Not until we have opt-in + }) + ); + + test( + 'Handles errors in the shipper', + fakeSchedulers((advance) => { + const optInMock = jest.fn().mockImplementation(() => { + throw new Error('Something went terribly wrong'); + }); + const extendContextMock = jest.fn().mockImplementation(() => { + throw new Error('Something went terribly wrong'); + }); + const shutdownMock = jest.fn().mockImplementation(() => { + throw new Error('Something went terribly wrong'); + }); + analyticsClient.registerShipper(MockedShipper, { + optInMock, + extendContextMock, + shutdownMock, + }); + expect(() => analyticsClient.optIn({ global: { enabled: true } })).not.toThrow(); + advance(10); + expect(optInMock).toHaveBeenCalledWith(true); + expect(extendContextMock).toHaveBeenCalledWith({}); // The initial context + expect(logger.warn).toHaveBeenCalledWith( + `Shipper "${MockedShipper.shipperName}" failed to extend the context`, + expect.any(Error) + ); + expect(() => analyticsClient.shutdown()).not.toThrow(); + expect(shutdownMock).toHaveBeenCalled(); + }) + ); }); describe('registerContextProvider', () => { @@ -718,6 +748,7 @@ describe('AnalyticsClient', () => { expect(optInMock1).toHaveBeenCalledWith(false); // Using global and shipper-specific expect(optInMock2).toHaveBeenCalledWith(false); // Using only global }); + test('Catches error in the shipper.optIn method', () => { optInMock1.mockImplementation(() => { throw new Error('Something went terribly wrong'); @@ -818,86 +849,89 @@ describe('AnalyticsClient', () => { ]); }); - test('Sends events from the internal queue when there are shippers and an opt-in response is true', async () => { - const telemetryCounterPromise = lastValueFrom( - analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events - ); - - // Send multiple events of 1 type to test the grouping logic as well - analyticsClient.reportEvent('event-type-a', { a_field: 'a' }); - analyticsClient.reportEvent('event-type-b', { b_field: 100 }); - analyticsClient.reportEvent('event-type-a', { a_field: 'b' }); - - // As proven in the previous test, the events are still enqueued. - // Let's register a shipper and opt-in to test the dequeue logic. - const reportEventsMock = jest.fn(); - analyticsClient.registerShipper(MockedShipper1, { reportEventsMock }); - analyticsClient.optIn({ global: { enabled: true } }); - await delay(10); - - expect(reportEventsMock).toHaveBeenCalledTimes(2); - expect(reportEventsMock).toHaveBeenNthCalledWith(1, [ - { - context: {}, - event_type: 'event-type-a', - properties: { a_field: 'a' }, - timestamp: expect.any(String), - }, - { - context: {}, - event_type: 'event-type-a', - properties: { a_field: 'b' }, - timestamp: expect.any(String), - }, - ]); - expect(reportEventsMock).toHaveBeenNthCalledWith(2, [ - { - context: {}, - event_type: 'event-type-b', - properties: { b_field: 100 }, - timestamp: expect.any(String), - }, - ]); - - // Expect 3 enqueued events, and 2 sent_to_shipper batched requests - await expect(telemetryCounterPromise).resolves.toEqual([ - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-a', - code: 'enqueued', - count: 1, - }, - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-b', - code: 'enqueued', - count: 1, - }, - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-a', - code: 'enqueued', - count: 1, - }, - { - type: 'sent_to_shipper', - source: 'client', - event_type: 'event-type-a', - code: 'OK', - count: 2, - }, - { - type: 'sent_to_shipper', - source: 'client', - event_type: 'event-type-b', - code: 'OK', - count: 1, - }, - ]); - }); + test( + 'Sends events from the internal queue when there are shippers and an opt-in response is true', + fakeSchedulers(async (advance) => { + const telemetryCounterPromise = lastValueFrom( + analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events + ); + + // Send multiple events of 1 type to test the grouping logic as well + analyticsClient.reportEvent('event-type-a', { a_field: 'a' }); + analyticsClient.reportEvent('event-type-b', { b_field: 100 }); + analyticsClient.reportEvent('event-type-a', { a_field: 'b' }); + + // As proven in the previous test, the events are still enqueued. + // Let's register a shipper and opt-in to test the dequeue logic. + const reportEventsMock = jest.fn(); + analyticsClient.registerShipper(MockedShipper1, { reportEventsMock }); + analyticsClient.optIn({ global: { enabled: true } }); + advance(10); + + expect(reportEventsMock).toHaveBeenCalledTimes(2); + expect(reportEventsMock).toHaveBeenNthCalledWith(1, [ + { + context: {}, + event_type: 'event-type-a', + properties: { a_field: 'a' }, + timestamp: expect.any(String), + }, + { + context: {}, + event_type: 'event-type-a', + properties: { a_field: 'b' }, + timestamp: expect.any(String), + }, + ]); + expect(reportEventsMock).toHaveBeenNthCalledWith(2, [ + { + context: {}, + event_type: 'event-type-b', + properties: { b_field: 100 }, + timestamp: expect.any(String), + }, + ]); + + // Expect 3 enqueued events, and 2 sent_to_shipper batched requests + await expect(telemetryCounterPromise).resolves.toEqual([ + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-a', + code: 'enqueued', + count: 1, + }, + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-b', + code: 'enqueued', + count: 1, + }, + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-a', + code: 'enqueued', + count: 1, + }, + { + type: 'sent_to_shipper', + source: 'client', + event_type: 'event-type-a', + code: 'OK', + count: 2, + }, + { + type: 'sent_to_shipper', + source: 'client', + event_type: 'event-type-b', + code: 'OK', + count: 1, + }, + ]); + }) + ); test('Discards events from the internal queue when there are shippers and an opt-in response is false', async () => { const telemetryCounterPromise = lastValueFrom( @@ -941,250 +975,259 @@ describe('AnalyticsClient', () => { ]); }); - test('Discards only one type of the enqueued events based on event_type config', async () => { - const telemetryCounterPromise = lastValueFrom( - analyticsClient.telemetryCounter$.pipe(take(3 + 1), toArray()) // Waiting for 3 enqueued + 1 batch-shipped events - ); - - // Send multiple events of 1 type to test the grouping logic as well - analyticsClient.reportEvent('event-type-a', { a_field: 'a' }); - analyticsClient.reportEvent('event-type-b', { b_field: 100 }); - analyticsClient.reportEvent('event-type-a', { a_field: 'b' }); - - const reportEventsMock = jest.fn(); - analyticsClient.registerShipper(MockedShipper1, { reportEventsMock }); - analyticsClient.optIn({ - global: { enabled: true }, - event_types: { ['event-type-a']: { enabled: false } }, - }); - await delay(10); - - expect(reportEventsMock).toHaveBeenCalledTimes(1); - expect(reportEventsMock).toHaveBeenNthCalledWith(1, [ - { - context: {}, - event_type: 'event-type-b', - properties: { b_field: 100 }, - timestamp: expect.any(String), - }, - ]); - - // Expect 3 enqueued events, and 1 sent_to_shipper batched request - await expect(telemetryCounterPromise).resolves.toEqual([ - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-a', - code: 'enqueued', - count: 1, - }, - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-b', - code: 'enqueued', - count: 1, - }, - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-a', - code: 'enqueued', - count: 1, - }, - { - type: 'sent_to_shipper', - source: 'client', - event_type: 'event-type-b', - code: 'OK', - count: 1, - }, - ]); - }); - - test('Discards the event at the shipper level (for a specific event)', async () => { - const telemetryCounterPromise = lastValueFrom( - analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events - ); - - // Send multiple events of 1 type to test the grouping logic as well - analyticsClient.reportEvent('event-type-a', { a_field: 'a' }); - analyticsClient.reportEvent('event-type-b', { b_field: 100 }); - analyticsClient.reportEvent('event-type-a', { a_field: 'b' }); - - // Register 2 shippers and set 1 of them as disabled for event-type-a - const reportEventsMock1 = jest.fn(); - const reportEventsMock2 = jest.fn(); - analyticsClient.registerShipper(MockedShipper1, { reportEventsMock: reportEventsMock1 }); - analyticsClient.registerShipper(MockedShipper2, { reportEventsMock: reportEventsMock2 }); - analyticsClient.optIn({ - global: { enabled: true }, - event_types: { - ['event-type-a']: { enabled: true, shippers: { [MockedShipper2.shipperName]: false } }, - }, - }); - await delay(10); - - expect(reportEventsMock1).toHaveBeenCalledTimes(2); - expect(reportEventsMock1).toHaveBeenNthCalledWith(1, [ - { - context: {}, - event_type: 'event-type-a', - properties: { a_field: 'a' }, - timestamp: expect.any(String), - }, - { - context: {}, - event_type: 'event-type-a', - properties: { a_field: 'b' }, - timestamp: expect.any(String), - }, - ]); - expect(reportEventsMock1).toHaveBeenNthCalledWith(2, [ - { - context: {}, - event_type: 'event-type-b', - properties: { b_field: 100 }, - timestamp: expect.any(String), - }, - ]); - expect(reportEventsMock2).toHaveBeenCalledTimes(1); - expect(reportEventsMock2).toHaveBeenNthCalledWith(1, [ - { - context: {}, - event_type: 'event-type-b', - properties: { b_field: 100 }, - timestamp: expect.any(String), - }, - ]); - - // Expect 3 enqueued events, and 2 sent_to_shipper batched requests - await expect(telemetryCounterPromise).resolves.toEqual([ - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-a', - code: 'enqueued', - count: 1, - }, - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-b', - code: 'enqueued', - count: 1, - }, - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-a', - code: 'enqueued', - count: 1, - }, - { - type: 'sent_to_shipper', - source: 'client', - event_type: 'event-type-a', - code: 'OK', - count: 2, - }, - { - type: 'sent_to_shipper', - source: 'client', - event_type: 'event-type-b', - code: 'OK', - count: 1, - }, - ]); - }); - - test('Discards all the events at the shipper level (globally disabled)', async () => { - const telemetryCounterPromise = lastValueFrom( - analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events - ); - - // Send multiple events of 1 type to test the grouping logic as well - analyticsClient.reportEvent('event-type-a', { a_field: 'a' }); - analyticsClient.reportEvent('event-type-b', { b_field: 100 }); - analyticsClient.reportEvent('event-type-a', { a_field: 'b' }); - - // Register 2 shippers and set 1 of them as globally disabled - const reportEventsMock1 = jest.fn(); - const reportEventsMock2 = jest.fn(); - analyticsClient.registerShipper(MockedShipper1, { reportEventsMock: reportEventsMock1 }); - analyticsClient.registerShipper(MockedShipper2, { reportEventsMock: reportEventsMock2 }); - analyticsClient.optIn({ - global: { enabled: true, shippers: { [MockedShipper2.shipperName]: false } }, - event_types: { - ['event-type-a']: { enabled: true }, - }, - }); - await delay(10); - - expect(reportEventsMock1).toHaveBeenCalledTimes(2); - expect(reportEventsMock1).toHaveBeenNthCalledWith(1, [ - { - context: {}, - event_type: 'event-type-a', - properties: { a_field: 'a' }, - timestamp: expect.any(String), - }, - { - context: {}, - event_type: 'event-type-a', - properties: { a_field: 'b' }, - timestamp: expect.any(String), - }, - ]); - expect(reportEventsMock1).toHaveBeenNthCalledWith(2, [ - { - context: {}, - event_type: 'event-type-b', - properties: { b_field: 100 }, - timestamp: expect.any(String), - }, - ]); - expect(reportEventsMock2).toHaveBeenCalledTimes(0); - - // Expect 3 enqueued events, and 2 sent_to_shipper batched requests - await expect(telemetryCounterPromise).resolves.toEqual([ - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-a', - code: 'enqueued', - count: 1, - }, - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-b', - code: 'enqueued', - count: 1, - }, - { - type: 'enqueued', - source: 'client', - event_type: 'event-type-a', - code: 'enqueued', - count: 1, - }, - { - type: 'sent_to_shipper', - source: 'client', - event_type: 'event-type-a', - code: 'OK', - count: 2, - }, - { - type: 'sent_to_shipper', - source: 'client', - event_type: 'event-type-b', - code: 'OK', - count: 1, - }, - ]); - }); + test( + 'Discards only one type of the enqueued events based on event_type config', + fakeSchedulers(async (advance) => { + const telemetryCounterPromise = lastValueFrom( + analyticsClient.telemetryCounter$.pipe(take(3 + 1), toArray()) // Waiting for 3 enqueued + 1 batch-shipped events + ); + + // Send multiple events of 1 type to test the grouping logic as well + analyticsClient.reportEvent('event-type-a', { a_field: 'a' }); + analyticsClient.reportEvent('event-type-b', { b_field: 100 }); + analyticsClient.reportEvent('event-type-a', { a_field: 'b' }); + + const reportEventsMock = jest.fn(); + analyticsClient.registerShipper(MockedShipper1, { reportEventsMock }); + analyticsClient.optIn({ + global: { enabled: true }, + event_types: { ['event-type-a']: { enabled: false } }, + }); + advance(10); + + expect(reportEventsMock).toHaveBeenCalledTimes(1); + expect(reportEventsMock).toHaveBeenNthCalledWith(1, [ + { + context: {}, + event_type: 'event-type-b', + properties: { b_field: 100 }, + timestamp: expect.any(String), + }, + ]); + + // Expect 3 enqueued events, and 1 sent_to_shipper batched request + await expect(telemetryCounterPromise).resolves.toEqual([ + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-a', + code: 'enqueued', + count: 1, + }, + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-b', + code: 'enqueued', + count: 1, + }, + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-a', + code: 'enqueued', + count: 1, + }, + { + type: 'sent_to_shipper', + source: 'client', + event_type: 'event-type-b', + code: 'OK', + count: 1, + }, + ]); + }) + ); + + test( + 'Discards the event at the shipper level (for a specific event)', + fakeSchedulers(async (advance) => { + const telemetryCounterPromise = lastValueFrom( + analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events + ); + + // Send multiple events of 1 type to test the grouping logic as well + analyticsClient.reportEvent('event-type-a', { a_field: 'a' }); + analyticsClient.reportEvent('event-type-b', { b_field: 100 }); + analyticsClient.reportEvent('event-type-a', { a_field: 'b' }); + + // Register 2 shippers and set 1 of them as disabled for event-type-a + const reportEventsMock1 = jest.fn(); + const reportEventsMock2 = jest.fn(); + analyticsClient.registerShipper(MockedShipper1, { reportEventsMock: reportEventsMock1 }); + analyticsClient.registerShipper(MockedShipper2, { reportEventsMock: reportEventsMock2 }); + analyticsClient.optIn({ + global: { enabled: true }, + event_types: { + ['event-type-a']: { enabled: true, shippers: { [MockedShipper2.shipperName]: false } }, + }, + }); + advance(10); + + expect(reportEventsMock1).toHaveBeenCalledTimes(2); + expect(reportEventsMock1).toHaveBeenNthCalledWith(1, [ + { + context: {}, + event_type: 'event-type-a', + properties: { a_field: 'a' }, + timestamp: expect.any(String), + }, + { + context: {}, + event_type: 'event-type-a', + properties: { a_field: 'b' }, + timestamp: expect.any(String), + }, + ]); + expect(reportEventsMock1).toHaveBeenNthCalledWith(2, [ + { + context: {}, + event_type: 'event-type-b', + properties: { b_field: 100 }, + timestamp: expect.any(String), + }, + ]); + expect(reportEventsMock2).toHaveBeenCalledTimes(1); + expect(reportEventsMock2).toHaveBeenNthCalledWith(1, [ + { + context: {}, + event_type: 'event-type-b', + properties: { b_field: 100 }, + timestamp: expect.any(String), + }, + ]); + + // Expect 3 enqueued events, and 2 sent_to_shipper batched requests + await expect(telemetryCounterPromise).resolves.toEqual([ + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-a', + code: 'enqueued', + count: 1, + }, + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-b', + code: 'enqueued', + count: 1, + }, + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-a', + code: 'enqueued', + count: 1, + }, + { + type: 'sent_to_shipper', + source: 'client', + event_type: 'event-type-a', + code: 'OK', + count: 2, + }, + { + type: 'sent_to_shipper', + source: 'client', + event_type: 'event-type-b', + code: 'OK', + count: 1, + }, + ]); + }) + ); + + test( + 'Discards all the events at the shipper level (globally disabled)', + fakeSchedulers(async (advance) => { + const telemetryCounterPromise = lastValueFrom( + analyticsClient.telemetryCounter$.pipe(take(3 + 2), toArray()) // Waiting for 3 enqueued + 2 batch-shipped events + ); + + // Send multiple events of 1 type to test the grouping logic as well + analyticsClient.reportEvent('event-type-a', { a_field: 'a' }); + analyticsClient.reportEvent('event-type-b', { b_field: 100 }); + analyticsClient.reportEvent('event-type-a', { a_field: 'b' }); + + // Register 2 shippers and set 1 of them as globally disabled + const reportEventsMock1 = jest.fn(); + const reportEventsMock2 = jest.fn(); + analyticsClient.registerShipper(MockedShipper1, { reportEventsMock: reportEventsMock1 }); + analyticsClient.registerShipper(MockedShipper2, { reportEventsMock: reportEventsMock2 }); + analyticsClient.optIn({ + global: { enabled: true, shippers: { [MockedShipper2.shipperName]: false } }, + event_types: { + ['event-type-a']: { enabled: true }, + }, + }); + advance(10); + + expect(reportEventsMock1).toHaveBeenCalledTimes(2); + expect(reportEventsMock1).toHaveBeenNthCalledWith(1, [ + { + context: {}, + event_type: 'event-type-a', + properties: { a_field: 'a' }, + timestamp: expect.any(String), + }, + { + context: {}, + event_type: 'event-type-a', + properties: { a_field: 'b' }, + timestamp: expect.any(String), + }, + ]); + expect(reportEventsMock1).toHaveBeenNthCalledWith(2, [ + { + context: {}, + event_type: 'event-type-b', + properties: { b_field: 100 }, + timestamp: expect.any(String), + }, + ]); + expect(reportEventsMock2).toHaveBeenCalledTimes(0); + + // Expect 3 enqueued events, and 2 sent_to_shipper batched requests + await expect(telemetryCounterPromise).resolves.toEqual([ + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-a', + code: 'enqueued', + count: 1, + }, + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-b', + code: 'enqueued', + count: 1, + }, + { + type: 'enqueued', + source: 'client', + event_type: 'event-type-a', + code: 'enqueued', + count: 1, + }, + { + type: 'sent_to_shipper', + source: 'client', + event_type: 'event-type-a', + code: 'OK', + count: 2, + }, + { + type: 'sent_to_shipper', + source: 'client', + event_type: 'event-type-b', + code: 'OK', + count: 1, + }, + ]); + }) + ); test('Discards incoming events when opt-in response is false', async () => { // Set OptIn and shipper first to test the "once-set up" scenario diff --git a/packages/analytics/client/src/analytics_client/analytics_client.ts b/packages/analytics/client/src/analytics_client/analytics_client.ts index 1c7f261aaf4b4..e38f975fee5a9 100644 --- a/packages/analytics/client/src/analytics_client/analytics_client.ts +++ b/packages/analytics/client/src/analytics_client/analytics_client.ts @@ -208,6 +208,21 @@ export class AnalyticsClient implements IAnalyticsClient { this.shipperRegistered$.next(); }; + public shutdown = () => { + this.shippersRegistry.allShippers.forEach((shipper, shipperName) => { + try { + shipper.shutdown(); + } catch (err) { + this.initContext.logger.warn(`Failed to shutdown shipper "${shipperName}"`, err); + } + }); + this.internalEventQueue$.complete(); + this.internalTelemetryCounter$.complete(); + this.shipperRegistered$.complete(); + this.optInConfig$.complete(); + this.context$.complete(); + }; + /** * Forwards the `events` to the registered shippers, bearing in mind if the shipper is opted-in for that eventType. * @param eventType The event type's name diff --git a/packages/analytics/client/src/analytics_client/mocks.ts b/packages/analytics/client/src/analytics_client/mocks.ts index da707178a756e..221ca0ff3872f 100644 --- a/packages/analytics/client/src/analytics_client/mocks.ts +++ b/packages/analytics/client/src/analytics_client/mocks.ts @@ -18,6 +18,7 @@ function createMockedAnalyticsClient(): jest.Mocked { removeContextProvider: jest.fn(), registerShipper: jest.fn(), telemetryCounter$: new Subject(), + shutdown: jest.fn(), }; } diff --git a/packages/analytics/client/src/analytics_client/types.ts b/packages/analytics/client/src/analytics_client/types.ts index 782d6b16fa594..88b60dc100e89 100644 --- a/packages/analytics/client/src/analytics_client/types.ts +++ b/packages/analytics/client/src/analytics_client/types.ts @@ -176,7 +176,7 @@ export interface IAnalyticsClient { ) => void; /** * Registers the event type that will be emitted via the reportEvent API. - * @param eventTypeOps + * @param eventTypeOps The definition of the event type {@link EventTypeOpts}. */ registerEventType: (eventTypeOps: EventTypeOpts) => void; @@ -211,4 +211,8 @@ export interface IAnalyticsClient { * Observable to emit the stats of the processed events. */ readonly telemetryCounter$: Observable; + /** + * Stops the client. + */ + shutdown: () => void; } diff --git a/packages/analytics/client/src/events/types.ts b/packages/analytics/client/src/events/types.ts index bc193a2788db1..6d31f88621364 100644 --- a/packages/analytics/client/src/events/types.ts +++ b/packages/analytics/client/src/events/types.ts @@ -12,6 +12,18 @@ import type { ShipperName } from '../analytics_client'; * Definition of the context that can be appended to the events through the {@link IAnalyticsClient.registerContextProvider}. */ export interface EventContext { + /** + * The UUID of the cluster + */ + cluster_uuid?: string; + /** + * The name of the cluster. + */ + cluster_name?: string; + /** + * The license ID. + */ + license_id?: string; /** * The unique user ID. */ @@ -36,7 +48,10 @@ export interface EventContext { * The current entity ID (dashboard ID, visualization ID, etc.). */ entityId?: string; - // TODO: Extend with known keys + + /** + * Additional keys are allowed. + */ [key: string]: unknown; } diff --git a/packages/analytics/client/src/shippers/mocks.ts b/packages/analytics/client/src/shippers/mocks.ts index 6f80d91675c97..4660ae9d27e72 100644 --- a/packages/analytics/client/src/shippers/mocks.ts +++ b/packages/analytics/client/src/shippers/mocks.ts @@ -23,6 +23,7 @@ class MockedShipper implements IShipper { public reportEvents = jest.fn(); public extendContext = jest.fn(); public telemetryCounter$ = new Subject(); + public shutdown = jest.fn(); } export const shippersMock = { diff --git a/packages/analytics/client/src/shippers/types.ts b/packages/analytics/client/src/shippers/types.ts index 945ea08dae58a..67fe2c54bd77e 100644 --- a/packages/analytics/client/src/shippers/types.ts +++ b/packages/analytics/client/src/shippers/types.ts @@ -25,11 +25,15 @@ export interface IShipper { optIn: (isOptedIn: boolean) => void; /** * Perform any necessary calls to the persisting/analytics solution to set the event's context. - * @param newContext + * @param newContext The full new context to set {@link EventContext} */ extendContext?: (newContext: EventContext) => void; /** * Observable to emit the stats of the processed events. */ telemetryCounter$?: Observable; + /** + * Shutdown the shipper. + */ + shutdown: () => void; } diff --git a/packages/analytics/shippers/README.md b/packages/analytics/shippers/README.md index 8fc04b9f9ecbc..5ab85d08ff2ca 100644 --- a/packages/analytics/shippers/README.md +++ b/packages/analytics/shippers/README.md @@ -3,3 +3,5 @@ This directory holds the implementation of the _built-in_ shippers provided by the Analytics client. At the moment, the shippers are: * [FullStory](./fullstory/README.md) +* [Elastic V3 (Browser shipper)](./elastic_v3/browser/README.md) +* [Elastic V3 (Server-side shipper)](./elastic_v3/server/README.md) diff --git a/packages/analytics/shippers/elastic_v3/browser/BUILD.bazel b/packages/analytics/shippers/elastic_v3/browser/BUILD.bazel new file mode 100644 index 0000000000000..63332da454feb --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/browser/BUILD.bazel @@ -0,0 +1,128 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "browser" +PKG_REQUIRE_NAME = "@kbn/analytics-shippers-elastic-v3-browser" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//rxjs", + "//packages/analytics/client", + "//packages/analytics/shippers/elastic_v3/common", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/analytics/client:npm_module_types", + "//packages/analytics/shippers/elastic_v3/common:npm_module_types", + "//packages/kbn-logging-mocks:npm_module_types", +] + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +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, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/analytics/shippers/elastic_v3/browser/README.md b/packages/analytics/shippers/elastic_v3/browser/README.md new file mode 100644 index 0000000000000..fcdd5e8a3ca2e --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/browser/README.md @@ -0,0 +1,25 @@ +# @kbn/analytics-shippers-elastic-v3-browser + +UI-side implementation of the Elastic V3 shipper for the `@kbn/analytics-client`. + +## How to use it + +This module is intended to be used **on the browser only**. Due to the nature of the UI events, they are usually more scattered in time, and we can assume a much lower load than the server. For that reason, it doesn't apply the necessary backpressure mechanisms to prevent the server from getting overloaded with too many events neither identifies if the server sits behind a firewall to discard any incoming events. Refer to `@kbn/analytics-shippers-elastic-v3-server` for the server-side implementation. + +```typescript +import { ElasticV3BrowserShipper } from "@kbn/analytics-shippers-elastic-v3-browser"; + +analytics.registerShipper(ElasticV3BrowserShipper, { channelName: 'myChannel', version: '1.0.0' }); +``` + +## Configuration + +| Name | Description | +|:-------------:|:-------------------------------------------------------------------------------------------| +| `channelName` | The name of the channel to send the events. | +| `version` | The version of the application generating the events. | +| `debug` | When `true`, it logs the responses from the remote Telemetry Service. Defaults to `false`. | + +## Transmission protocol + +This shipper sends the events to the Elastic Internal Telemetry Service. The incoming events are buffered for up to 1 second to attempt to send them in a single request. diff --git a/packages/analytics/shippers/elastic_v3/browser/jest.config.js b/packages/analytics/shippers/elastic_v3/browser/jest.config.js new file mode 100644 index 0000000000000..20067863aad97 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/browser/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/jest_node', + rootDir: '../../../../../', + roots: ['/packages/analytics/shippers/elastic_v3/browser'], +}; diff --git a/packages/analytics/shippers/elastic_v3/browser/package.json b/packages/analytics/shippers/elastic_v3/browser/package.json new file mode 100644 index 0000000000000..418887000521a --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/browser/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/analytics-shippers-elastic-v3-browser", + "private": true, + "version": "1.0.0", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/analytics/shippers/elastic_v3/browser/src/browser_shipper.test.ts b/packages/analytics/shippers/elastic_v3/browser/src/browser_shipper.test.ts new file mode 100644 index 0000000000000..6fbe8fc166586 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/browser/src/browser_shipper.test.ts @@ -0,0 +1,291 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { loggerMock } from '@kbn/logging-mocks'; +import type { AnalyticsClientInitContext, Event } from '@kbn/analytics-client'; +import { fakeSchedulers } from 'rxjs-marbles/jest'; +import { firstValueFrom } from 'rxjs'; +import { ElasticV3BrowserShipper } from './browser_shipper'; + +describe('ElasticV3BrowserShipper', () => { + const events: Event[] = [ + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'test-event-type', + context: {}, + properties: {}, + }, + ]; + + const initContext: AnalyticsClientInitContext = { + sendTo: 'staging', + isDev: true, + logger: loggerMock.create(), + }; + + let shipper: ElasticV3BrowserShipper; + + let fetchMock: jest.Mock; + + beforeEach(() => { + jest.useFakeTimers(); + + fetchMock = jest.fn().mockResolvedValue({ + status: 200, + ok: true, + text: () => Promise.resolve('{"status": "ok"}'), + }); + + Object.defineProperty(global, 'fetch', { + value: fetchMock, + writable: true, + }); + + shipper = new ElasticV3BrowserShipper( + { version: '1.2.3', channelName: 'test-channel', debug: true }, + initContext + ); + }); + + afterEach(() => { + shipper.shutdown(); + jest.useRealTimers(); + }); + + test("custom sendTo overrides Analytics client's", () => { + const prodShipper = new ElasticV3BrowserShipper( + { version: '1.2.3', channelName: 'test-channel', debug: true, sendTo: 'production' }, + initContext + ); + + // eslint-disable-next-line dot-notation + expect(prodShipper['url']).not.toEqual(shipper['url']); + }); + + test('set optIn should update the isOptedIn$ observable', () => { + // eslint-disable-next-line dot-notation + const internalOptIn$ = shipper['isOptedIn$']; + + // Initially undefined + expect(internalOptIn$.value).toBeUndefined(); + + shipper.optIn(true); + expect(internalOptIn$.value).toBe(true); + + shipper.optIn(false); + expect(internalOptIn$.value).toBe(false); + }); + + test('set extendContext should store local values: clusterUuid and licenseId', () => { + // eslint-disable-next-line dot-notation + const getInternalClusterUuid = () => shipper['clusterUuid']; + // eslint-disable-next-line dot-notation + const getInternalLicenseId = () => shipper['licenseId']; + + // Initial values + expect(getInternalClusterUuid()).toBe('UNKNOWN'); + expect(getInternalLicenseId()).toBeUndefined(); + + shipper.extendContext({ cluster_uuid: 'test-cluster-uuid' }); + expect(getInternalClusterUuid()).toBe('test-cluster-uuid'); + expect(getInternalLicenseId()).toBeUndefined(); + + shipper.extendContext({ license_id: 'test-license-id' }); + expect(getInternalClusterUuid()).toBe('test-cluster-uuid'); + expect(getInternalLicenseId()).toBe('test-license-id'); + + shipper.extendContext({ cluster_uuid: 'test-cluster-uuid-2', license_id: 'test-license-id-2' }); + expect(getInternalClusterUuid()).toBe('test-cluster-uuid-2'); + expect(getInternalLicenseId()).toBe('test-license-id-2'); + }); + + test('calls to reportEvents do not call `fetch` straight away (buffer of 1s)', () => { + shipper.reportEvents(events); + expect(fetchMock).not.toHaveBeenCalled(); + }); + + test( + 'calls to reportEvents do not call `fetch` after 1s because no optIn value is set yet', + fakeSchedulers((advance) => { + shipper.reportEvents(events); + advance(1000); + expect(fetchMock).not.toHaveBeenCalled(); + }) + ); + + test( + 'calls to reportEvents call `fetch` after 1s when optIn value is set to true', + fakeSchedulers(async (advance) => { + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + advance(1000); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + keepalive: true, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "200", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_browser", + "type": "succeeded", + } + `); + }) + ); + + test( + 'calls to reportEvents do not call `fetch` after 1s when optIn value is set to false', + fakeSchedulers((advance) => { + shipper.reportEvents(events); + shipper.optIn(false); + advance(1000); + expect(fetchMock).not.toHaveBeenCalled(); + }) + ); + + test('calls to reportEvents call `fetch` when shutting down if optIn value is set to true', async () => { + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + shipper.shutdown(); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + keepalive: true, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "200", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_browser", + "type": "succeeded", + } + `); + }); + + test( + 'does not add the query.debug: true property to the request if the shipper is not set with the debug flag', + fakeSchedulers((advance) => { + shipper = new ElasticV3BrowserShipper( + { version: '1.2.3', channelName: 'test-channel' }, + initContext + ); + shipper.reportEvents(events); + shipper.optIn(true); + advance(1000); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + keepalive: true, + method: 'POST', + } + ); + }) + ); + + test( + 'handles when the fetch request fails', + fakeSchedulers(async (advance) => { + fetchMock.mockRejectedValueOnce(new Error('Failed to fetch')); + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + advance(1000); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + keepalive: true, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "Failed to fetch", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_browser", + "type": "failed", + } + `); + }) + ); + + test( + 'handles when the fetch request fails (request completes but not OK response)', + fakeSchedulers(async (advance) => { + fetchMock.mockResolvedValue({ + ok: false, + status: 400, + text: () => Promise.resolve('{"status": "not ok"}'), + }); + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + advance(1000); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + keepalive: true, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "400", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_browser", + "type": "failed", + } + `); + }) + ); +}); diff --git a/packages/analytics/shippers/elastic_v3/browser/src/browser_shipper.ts b/packages/analytics/shippers/elastic_v3/browser/src/browser_shipper.ts new file mode 100644 index 0000000000000..5607d3d79a13d --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/browser/src/browser_shipper.ts @@ -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 { BehaviorSubject, interval, Subject, bufferWhen, concatMap, filter, skipWhile } from 'rxjs'; +import type { + AnalyticsClientInitContext, + Event, + EventContext, + IShipper, + TelemetryCounter, +} from '@kbn/analytics-client'; +import { ElasticV3ShipperOptions, ErrorWithCode } from '@kbn/analytics-shippers-elastic-v3-common'; +import { + buildHeaders, + buildUrl, + createTelemetryCounterHelper, + eventsToNDJSON, +} from '@kbn/analytics-shippers-elastic-v3-common'; + +export class ElasticV3BrowserShipper implements IShipper { + public static shipperName = 'elastic_v3_browser'; + public readonly telemetryCounter$ = new Subject(); + + private readonly reportTelemetryCounters = createTelemetryCounterHelper( + this.telemetryCounter$, + ElasticV3BrowserShipper.shipperName + ); + private readonly url: string; + + private readonly internalQueue$ = new Subject(); + + private readonly isOptedIn$ = new BehaviorSubject(undefined); + private clusterUuid: string = 'UNKNOWN'; + private licenseId: string | undefined; + + constructor( + private readonly options: ElasticV3ShipperOptions, + private readonly initContext: AnalyticsClientInitContext + ) { + this.setUpInternalQueueSubscriber(); + this.url = buildUrl({ + sendTo: options.sendTo ?? initContext.sendTo, + channelName: options.channelName, + }); + } + + public extendContext(newContext: EventContext) { + if (newContext.cluster_uuid) { + this.clusterUuid = newContext.cluster_uuid; + } + if (newContext.license_id) { + this.licenseId = newContext.license_id; + } + } + + public optIn(isOptedIn: boolean) { + this.isOptedIn$.next(isOptedIn); + } + + public reportEvents(events: Event[]) { + events.forEach((event) => { + this.internalQueue$.next(event); + }); + } + + public shutdown() { + this.internalQueue$.complete(); // NOTE: When completing the observable, the buffer logic does not wait and releases any buffered events. + } + + private setUpInternalQueueSubscriber() { + this.internalQueue$ + .pipe( + // Buffer events for 1 second or until we have an optIn value + bufferWhen(() => interval(1000).pipe(skipWhile(() => this.isOptedIn$.value === undefined))), + // Discard any events if we are not opted in + skipWhile(() => this.isOptedIn$.value === false), + // Skip empty buffers + filter((events) => events.length > 0), + // Send events + concatMap(async (events) => this.sendEvents(events)) + ) + .subscribe(); + } + + private async sendEvents(events: Event[]) { + try { + const code = await this.makeRequest(events); + this.reportTelemetryCounters(events, { code }); + } catch (error) { + this.reportTelemetryCounters(events, { code: error.code, error }); + } + } + + private async makeRequest(events: Event[]): Promise { + const { status, text, ok } = await fetch(this.url, { + method: 'POST', + body: eventsToNDJSON(events), + headers: buildHeaders(this.clusterUuid, this.options.version, this.licenseId), + ...(this.options.debug && { query: { debug: true } }), + // Allow the request to outlive the page in case the tab is closed + keepalive: true, + }); + + if (this.options.debug) { + this.initContext.logger.debug( + `[${ElasticV3BrowserShipper.shipperName}]: ${status} - ${await text()}` + ); + } + + if (!ok) { + throw new ErrorWithCode(`${status} - ${await text()}`, `${status}`); + } + + return `${status}`; + } +} diff --git a/packages/analytics/shippers/elastic_v3/browser/src/index.ts b/packages/analytics/shippers/elastic_v3/browser/src/index.ts new file mode 100644 index 0000000000000..9eb6668994037 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/browser/src/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 type { ElasticV3ShipperOptions } from '@kbn/analytics-shippers-elastic-v3-common'; +export { ElasticV3BrowserShipper } from './browser_shipper'; diff --git a/packages/analytics/shippers/elastic_v3/browser/tsconfig.json b/packages/analytics/shippers/elastic_v3/browser/tsconfig.json new file mode 100644 index 0000000000000..b81a9a0217634 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/browser/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/analytics/shippers/elastic_v3/common/BUILD.bazel b/packages/analytics/shippers/elastic_v3/common/BUILD.bazel new file mode 100644 index 0000000000000..a09ee9019f93d --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/BUILD.bazel @@ -0,0 +1,125 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "common" +PKG_REQUIRE_NAME = "@kbn/analytics-shippers-elastic-v3-common" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//rxjs", + "//packages/analytics/client", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/analytics/client:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +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, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/analytics/shippers/elastic_v3/common/README.md b/packages/analytics/shippers/elastic_v3/common/README.md new file mode 100644 index 0000000000000..6684027b1ed7f --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/README.md @@ -0,0 +1,10 @@ +# @kbn/analytics-shippers-elastic-v3-common + +This package holds the common code for the Elastic V3 shippers: + +- Types defining the Shipper configuration `ElasticV3ShipperOptions` +- `buildUrl` utility helps decide which URL to use depending on whether the shipper is configured to send to production or staging. +- `eventsToNdjson` utility converts any array of events to NDJSON format. +- `reportTelemetryCounters` helps with building the TelemetryCounter to emit after processing an event. + +It should be considered an internal package and should not be used other than by the shipper implementations: `@kbn/analytics-shippers-elastic-v3-browser` and `@kbn/analytics-shippers-elastic-v3-server` diff --git a/packages/analytics/shippers/elastic_v3/common/jest.config.js b/packages/analytics/shippers/elastic_v3/common/jest.config.js new file mode 100644 index 0000000000000..1336211347fb7 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/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/jest_node', + rootDir: '../../../../../', + roots: ['/packages/analytics/shippers/elastic_v3/common'], +}; diff --git a/packages/analytics/shippers/elastic_v3/common/package.json b/packages/analytics/shippers/elastic_v3/common/package.json new file mode 100644 index 0000000000000..ce8825e6bdc1f --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/analytics-shippers-elastic-v3-common", + "private": true, + "version": "1.0.0", + "browser": "./target_web/index.js", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/analytics/shippers/elastic_v3/common/src/build_headers.test.ts b/packages/analytics/shippers/elastic_v3/common/src/build_headers.test.ts new file mode 100644 index 0000000000000..468824916ec48 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/build_headers.test.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 { buildHeaders } from './build_headers'; + +describe('buildHeaders', () => { + test('builds the headers as expected in the V3 endpoints', () => { + expect(buildHeaders('test-cluster', '1.2.3', 'test-license')).toMatchInlineSnapshot(` + Object { + "content-type": "application/x-njson", + "x-elastic-cluster-id": "test-cluster", + "x-elastic-license-id": "test-license", + "x-elastic-stack-version": "1.2.3", + } + `); + }); + + test('if license is not provided, it skips the license header', () => { + expect(buildHeaders('test-cluster', '1.2.3')).toMatchInlineSnapshot(` + Object { + "content-type": "application/x-njson", + "x-elastic-cluster-id": "test-cluster", + "x-elastic-stack-version": "1.2.3", + } + `); + }); +}); diff --git a/packages/analytics/shippers/elastic_v3/common/src/build_headers.ts b/packages/analytics/shippers/elastic_v3/common/src/build_headers.ts new file mode 100644 index 0000000000000..43126cf9d5629 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/build_headers.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. + */ + +export function buildHeaders(clusterUuid: string, version: string, licenseId?: string) { + return { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': clusterUuid, + 'x-elastic-stack-version': version, + ...(licenseId && { 'x-elastic-license-id': licenseId }), + }; +} diff --git a/packages/analytics/shippers/elastic_v3/common/src/build_url.test.ts b/packages/analytics/shippers/elastic_v3/common/src/build_url.test.ts new file mode 100644 index 0000000000000..171491757ea56 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/build_url.test.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 { buildUrl } from './build_url'; + +describe('buildUrl', () => { + test('returns production URL', () => { + expect(buildUrl({ sendTo: 'production', channelName: 'test-channel' })).toBe( + 'https://telemetry.elastic.co/v3/send/test-channel' + ); + }); + + test('returns staging URL', () => { + expect(buildUrl({ sendTo: 'staging', channelName: 'test-channel' })).toBe( + 'https://telemetry-staging.elastic.co/v3/send/test-channel' + ); + }); +}); diff --git a/packages/analytics/shippers/elastic_v3/common/src/build_url.ts b/packages/analytics/shippers/elastic_v3/common/src/build_url.ts new file mode 100644 index 0000000000000..f8d88b6804d08 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/build_url.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. + */ + +/** + * Builds the URL for the V3 API. + * @param sendTo Whether to send it to production or staging. + * @param channelName The name of the channel to send the data to. + */ +export function buildUrl({ + sendTo, + channelName, +}: { + sendTo: 'production' | 'staging'; + channelName: string; +}): string { + const baseUrl = + sendTo === 'production' + ? 'https://telemetry.elastic.co' + : 'https://telemetry-staging.elastic.co'; + return `${baseUrl}/v3/send/${channelName}`; +} diff --git a/packages/analytics/shippers/elastic_v3/common/src/error_with_code.test.ts b/packages/analytics/shippers/elastic_v3/common/src/error_with_code.test.ts new file mode 100644 index 0000000000000..9be5d5bdc762c --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/error_with_code.test.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ErrorWithCode } from './error_with_code'; + +describe('ErrorWithCode', () => { + const error = new ErrorWithCode('test', 'test_code'); + test('message and code properties are publicly accessible', () => { + expect(error.message).toBe('test'); + expect(error.code).toBe('test_code'); + }); + test('extends error', () => { + expect(error).toBeInstanceOf(Error); + }); +}); diff --git a/packages/analytics/shippers/elastic_v3/common/src/error_with_code.ts b/packages/analytics/shippers/elastic_v3/common/src/error_with_code.ts new file mode 100644 index 0000000000000..09346575a2df1 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/error_with_code.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 class ErrorWithCode extends Error { + constructor(message: string, public readonly code: string) { + super(message); + } +} diff --git a/packages/analytics/shippers/elastic_v3/common/src/events_to_ndjson.test.ts b/packages/analytics/shippers/elastic_v3/common/src/events_to_ndjson.test.ts new file mode 100644 index 0000000000000..4033bcb862967 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/events_to_ndjson.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 and the Server Side Public License, v 1; you may not 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 { Event } from '@kbn/analytics-client'; +import { eventsToNDJSON } from './events_to_ndjson'; + +describe('eventsToNDJSON', () => { + test('works with one event', () => { + const event: Event = { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type', + context: {}, + properties: {}, + }; + + // Mind the extra line at the bottom + expect(eventsToNDJSON([event])).toMatchInlineSnapshot(` + "{\\"timestamp\\":\\"2020-01-01T00:00:00.000Z\\",\\"event_type\\":\\"event_type\\",\\"context\\":{},\\"properties\\":{}} + " + `); + }); + + test('works with many events', () => { + const events: Event[] = [ + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type', + context: {}, + properties: {}, + }, + { + timestamp: '2020-01-02T00:00:00.000Z', + event_type: 'event_type', + context: {}, + properties: {}, + }, + ]; + + expect(eventsToNDJSON(events)).toMatchInlineSnapshot(` + "{\\"timestamp\\":\\"2020-01-01T00:00:00.000Z\\",\\"event_type\\":\\"event_type\\",\\"context\\":{},\\"properties\\":{}} + {\\"timestamp\\":\\"2020-01-02T00:00:00.000Z\\",\\"event_type\\":\\"event_type\\",\\"context\\":{},\\"properties\\":{}} + " + `); + }); +}); diff --git a/packages/analytics/shippers/elastic_v3/common/src/events_to_ndjson.ts b/packages/analytics/shippers/elastic_v3/common/src/events_to_ndjson.ts new file mode 100644 index 0000000000000..af768770a0d5f --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/events_to_ndjson.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 type { Event } from '@kbn/analytics-client'; + +export function eventsToNDJSON(events: Event[]): string { + return `${events.map((event) => JSON.stringify(event)).join('\n')}\n`; +} diff --git a/packages/analytics/shippers/elastic_v3/common/src/index.ts b/packages/analytics/shippers/elastic_v3/common/src/index.ts new file mode 100644 index 0000000000000..043be5c33c6fe --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may 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 { buildHeaders } from './build_headers'; +export { buildUrl } from './build_url'; +export { ErrorWithCode } from './error_with_code'; +export { eventsToNDJSON } from './events_to_ndjson'; +export { createTelemetryCounterHelper } from './report_telemetry_counters'; +export type { ElasticV3ShipperOptions } from './types'; diff --git a/packages/analytics/shippers/elastic_v3/common/src/report_telemetry_counters.test.ts b/packages/analytics/shippers/elastic_v3/common/src/report_telemetry_counters.test.ts new file mode 100644 index 0000000000000..13a59eb600db5 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/report_telemetry_counters.test.ts @@ -0,0 +1,203 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { firstValueFrom, Subject, take, toArray } from 'rxjs'; +import type { Event, TelemetryCounter } from '@kbn/analytics-client'; +import { TelemetryCounterType } from '@kbn/analytics-client'; +import { createTelemetryCounterHelper } from './report_telemetry_counters'; + +describe('reportTelemetryCounters', () => { + let reportTelemetryCounters: ReturnType; + let telemetryCounter$: Subject; + + beforeEach(() => { + telemetryCounter$ = new Subject(); + reportTelemetryCounters = createTelemetryCounterHelper(telemetryCounter$, 'my_shipper'); + }); + + test('emits a success counter for one event', async () => { + const events: Event[] = [ + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type_a', + context: {}, + properties: {}, + }, + ]; + + const counters = firstValueFrom(telemetryCounter$); + + reportTelemetryCounters(events); + + await expect(counters).resolves.toMatchInlineSnapshot(` + Object { + "code": "OK", + "count": 1, + "event_type": "event_type_a", + "source": "my_shipper", + "type": "succeeded", + } + `); + }); + + test('emits a success counter for one event with custom code', async () => { + const events: Event[] = [ + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type_a', + context: {}, + properties: {}, + }, + ]; + + const counters = firstValueFrom(telemetryCounter$); + + reportTelemetryCounters(events, { code: 'my_code' }); + + await expect(counters).resolves.toMatchInlineSnapshot(` + Object { + "code": "my_code", + "count": 1, + "event_type": "event_type_a", + "source": "my_shipper", + "type": "succeeded", + } + `); + }); + + test('emits a counter with custom type', async () => { + const events: Event[] = [ + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type_a', + context: {}, + properties: {}, + }, + ]; + + const counters = firstValueFrom(telemetryCounter$); + + reportTelemetryCounters(events, { + type: TelemetryCounterType.dropped, + code: 'my_code', + }); + + await expect(counters).resolves.toMatchInlineSnapshot(` + Object { + "code": "my_code", + "count": 1, + "event_type": "event_type_a", + "source": "my_shipper", + "type": "dropped", + } + `); + }); + + test('emits a failure counter for one event with error message as a code', async () => { + const events: Event[] = [ + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type_a', + context: {}, + properties: {}, + }, + ]; + + const counters = firstValueFrom(telemetryCounter$); + + reportTelemetryCounters(events, { + error: new Error('Something went terribly wrong'), + }); + + await expect(counters).resolves.toMatchInlineSnapshot(` + Object { + "code": "Something went terribly wrong", + "count": 1, + "event_type": "event_type_a", + "source": "my_shipper", + "type": "failed", + } + `); + }); + + test('emits a failure counter for one event with custom code', async () => { + const events: Event[] = [ + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type_a', + context: {}, + properties: {}, + }, + ]; + + const counters = firstValueFrom(telemetryCounter$); + + reportTelemetryCounters(events, { + code: 'my_code', + error: new Error('Something went terribly wrong'), + }); + + await expect(counters).resolves.toMatchInlineSnapshot(` + Object { + "code": "my_code", + "count": 1, + "event_type": "event_type_a", + "source": "my_shipper", + "type": "failed", + } + `); + }); + + test('emits a success counter for multiple events of different types', async () => { + const events: Event[] = [ + // 2 types a + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type_a', + context: {}, + properties: {}, + }, + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type_a', + context: {}, + properties: {}, + }, + // 1 type b + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'event_type_b', + context: {}, + properties: {}, + }, + ]; + + const counters = firstValueFrom(telemetryCounter$.pipe(take(2), toArray())); + + reportTelemetryCounters(events); + + await expect(counters).resolves.toMatchInlineSnapshot(` + Array [ + Object { + "code": "OK", + "count": 2, + "event_type": "event_type_a", + "source": "my_shipper", + "type": "succeeded", + }, + Object { + "code": "OK", + "count": 1, + "event_type": "event_type_b", + "source": "my_shipper", + "type": "succeeded", + }, + ] + `); + }); +}); diff --git a/packages/analytics/shippers/elastic_v3/common/src/report_telemetry_counters.ts b/packages/analytics/shippers/elastic_v3/common/src/report_telemetry_counters.ts new file mode 100644 index 0000000000000..e4b63bcf2710f --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/report_telemetry_counters.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not 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 { Subject } from 'rxjs'; +import type { Event, TelemetryCounter } from '@kbn/analytics-client'; +import { TelemetryCounterType } from '@kbn/analytics-client'; + +/** + * Creates a telemetry counter helper to make it easier to generate them + * @param telemetryCounter$ The observable that will be used to emit the telemetry counters + * @param source The name of the shipper that is sending the events. + */ +export function createTelemetryCounterHelper( + telemetryCounter$: Subject, + source: string +) { + /** + * Triggers a telemetry counter for each event type. + * @param events The events to trigger the telemetry counter for. + * @param type The type of telemetry counter to trigger. + * @param code The success or error code for additional detail about the result. + * @param error The error that occurred, if any. + */ + return ( + events: Event[], + { type, code, error }: { type?: TelemetryCounterType; code?: string; error?: Error } = {} + ) => { + const eventTypeCounts = countEventTypes(events); + Object.entries(eventTypeCounts).forEach(([eventType, count]) => { + telemetryCounter$.next({ + source, + type: type ?? (error ? TelemetryCounterType.failed : TelemetryCounterType.succeeded), + code: code ?? error?.message ?? 'OK', + count, + event_type: eventType, + }); + }); + }; +} + +function countEventTypes(events: Event[]) { + return events.reduce((acc, event) => { + if (acc[event.event_type]) { + acc[event.event_type] += 1; + } else { + acc[event.event_type] = 1; + } + return acc; + }, {} as Record); +} diff --git a/packages/analytics/shippers/elastic_v3/common/src/types.ts b/packages/analytics/shippers/elastic_v3/common/src/types.ts new file mode 100644 index 0000000000000..c27aa448119fe --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/src/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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * Options for the Elastic V3 shipper + */ +export interface ElasticV3ShipperOptions { + /** + * The name of the channel to stream all the events to. + */ + channelName: string; + /** + * The product's version. + */ + version: string; + /** + * Provide it to override the Analytics client's default configuration. + */ + sendTo?: 'staging' | 'production'; + /** + * Should show debug information about the requests it makes to the V3 API. + */ + debug?: boolean; +} diff --git a/packages/analytics/shippers/elastic_v3/common/tsconfig.json b/packages/analytics/shippers/elastic_v3/common/tsconfig.json new file mode 100644 index 0000000000000..b81a9a0217634 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/common/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/analytics/shippers/elastic_v3/server/BUILD.bazel b/packages/analytics/shippers/elastic_v3/server/BUILD.bazel new file mode 100644 index 0000000000000..c05164d1f2b7e --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/BUILD.bazel @@ -0,0 +1,123 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "server" +PKG_REQUIRE_NAME = "@kbn/analytics-shippers-elastic-v3-server" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//node-fetch", + "@npm//rxjs", + "//packages/analytics/client", + "//packages/analytics/shippers/elastic_v3/common", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/node-fetch", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/analytics/client:npm_module_types", + "//packages/analytics/shippers/elastic_v3/common:npm_module_types", + "//packages/kbn-logging-mocks:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +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, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/analytics/shippers/elastic_v3/server/README.md b/packages/analytics/shippers/elastic_v3/server/README.md new file mode 100644 index 0000000000000..ccdcf6a66cbe2 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/README.md @@ -0,0 +1,25 @@ +# @kbn/analytics-shippers-elastic-v3-server + +Server-side implementation of the Elastic V3 shipper for the `@kbn/analytics-client`. + +## How to use it + +This module is intended to be used **on the server-side only**. It is specially designed to apply the necessary backpressure mechanisms to prevent the server from getting overloaded with too many events and identify if the server sits behind a firewall to discard any incoming events. Refer to `@kbn/analytics-shippers-elastic-v3-browser` for the browser-side implementation. + +```typescript +import { ElasticV3ServerShipper } from "@kbn/analytics-shippers-elastic-v3-server"; + +analytics.registerShipper(ElasticV3ServerShipper, { channelName: 'myChannel', version: '1.0.0' }); +``` + +## Configuration + +| Name | Description | +|:-------------:|:-------------------------------------------------------------------------------------------| +| `channelName` | The name of the channel to send the events. | +| `version` | The version of the application generating the events. | +| `debug` | When `true`, it logs the responses from the remote Telemetry Service. Defaults to `false`. | + +## Transmission protocol + +This shipper sends the events to the Elastic Internal Telemetry Service. It holds up to 1000 events in a shared queue. Any additional incoming events once it's full will be dropped. It sends the events from the queue in batches of 10kB every 10 seconds. If not enough events are available in the queue for longer than 10 minutes, it will send any remaining events. When shutting down, it'll send all the remaining events in the queue. diff --git a/packages/analytics/shippers/elastic_v3/server/jest.config.js b/packages/analytics/shippers/elastic_v3/server/jest.config.js new file mode 100644 index 0000000000000..4397eb3e50c5a --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/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/jest_node', + rootDir: '../../../../../', + roots: ['/packages/analytics/shippers/elastic_v3/server'], +}; diff --git a/packages/analytics/shippers/elastic_v3/server/package.json b/packages/analytics/shippers/elastic_v3/server/package.json new file mode 100644 index 0000000000000..5ab24844eb1ba --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/analytics-shippers-elastic-v3-server", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/analytics/shippers/elastic_v3/server/src/index.ts b/packages/analytics/shippers/elastic_v3/server/src/index.ts new file mode 100644 index 0000000000000..50faf3c72ab29 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/src/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 type { ElasticV3ShipperOptions } from '@kbn/analytics-shippers-elastic-v3-common'; +export { ElasticV3ServerShipper } from './server_shipper'; diff --git a/packages/analytics/shippers/elastic_v3/server/src/server_shipper.test.mocks.ts b/packages/analytics/shippers/elastic_v3/server/src/server_shipper.test.mocks.ts new file mode 100644 index 0000000000000..8da36242d48b6 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/src/server_shipper.test.mocks.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. + */ + +export const fetchMock = jest.fn().mockResolvedValue({ + status: 200, + ok: true, + text: () => Promise.resolve('{"status": "ok"}'), +}); + +jest.doMock('node-fetch', () => fetchMock); diff --git a/packages/analytics/shippers/elastic_v3/server/src/server_shipper.test.ts b/packages/analytics/shippers/elastic_v3/server/src/server_shipper.test.ts new file mode 100644 index 0000000000000..ffdfd797437a9 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/src/server_shipper.test.ts @@ -0,0 +1,438 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { loggerMock } from '@kbn/logging-mocks'; +import { firstValueFrom } from 'rxjs'; +import { fakeSchedulers } from 'rxjs-marbles/jest'; +import type { AnalyticsClientInitContext, Event } from '@kbn/analytics-client'; +import { fetchMock } from './server_shipper.test.mocks'; +import { ElasticV3ServerShipper } from './server_shipper'; + +const SECONDS = 1000; +const MINUTES = 60 * SECONDS; + +describe('ElasticV3ServerShipper', () => { + const events: Event[] = [ + { + timestamp: '2020-01-01T00:00:00.000Z', + event_type: 'test-event-type', + context: {}, + properties: {}, + }, + ]; + + const nextTick = () => new Promise((resolve) => setImmediate(resolve)); + + const initContext: AnalyticsClientInitContext = { + sendTo: 'staging', + isDev: true, + logger: loggerMock.create(), + }; + + let shipper: ElasticV3ServerShipper; + + // eslint-disable-next-line dot-notation + const setLastBatchSent = (ms: number) => (shipper['lastBatchSent'] = ms); + + beforeEach(() => { + jest.useFakeTimers(); + + shipper = new ElasticV3ServerShipper( + { version: '1.2.3', channelName: 'test-channel', debug: true }, + initContext + ); + // eslint-disable-next-line dot-notation + shipper['firstTimeOffline'] = null; + }); + + afterEach(() => { + shipper.shutdown(); + jest.clearAllMocks(); + }); + + test('set optIn should update the isOptedIn$ observable', () => { + // eslint-disable-next-line dot-notation + const getInternalOptIn = () => shipper['isOptedIn']; + + // Initially undefined + expect(getInternalOptIn()).toBeUndefined(); + + shipper.optIn(true); + expect(getInternalOptIn()).toBe(true); + + shipper.optIn(false); + expect(getInternalOptIn()).toBe(false); + }); + + test('clears the queue after optIn: false', () => { + shipper.reportEvents(events); + // eslint-disable-next-line dot-notation + expect(shipper['internalQueue'].length).toBe(1); + + shipper.optIn(false); + // eslint-disable-next-line dot-notation + expect(shipper['internalQueue'].length).toBe(0); + }); + + test('set extendContext should store local values: clusterUuid and licenseId', () => { + // eslint-disable-next-line dot-notation + const getInternalClusterUuid = () => shipper['clusterUuid']; + // eslint-disable-next-line dot-notation + const getInternalLicenseId = () => shipper['licenseId']; + + // Initial values + expect(getInternalClusterUuid()).toBe('UNKNOWN'); + expect(getInternalLicenseId()).toBeUndefined(); + + shipper.extendContext({ cluster_uuid: 'test-cluster-uuid' }); + expect(getInternalClusterUuid()).toBe('test-cluster-uuid'); + expect(getInternalLicenseId()).toBeUndefined(); + + shipper.extendContext({ license_id: 'test-license-id' }); + expect(getInternalClusterUuid()).toBe('test-cluster-uuid'); + expect(getInternalLicenseId()).toBe('test-license-id'); + + shipper.extendContext({ cluster_uuid: 'test-cluster-uuid-2', license_id: 'test-license-id-2' }); + expect(getInternalClusterUuid()).toBe('test-cluster-uuid-2'); + expect(getInternalLicenseId()).toBe('test-license-id-2'); + }); + + test('calls to reportEvents do not call `fetch` straight away', () => { + shipper.reportEvents(events); + expect(fetchMock).not.toHaveBeenCalled(); + }); + + test( + 'calls to reportEvents do not call `fetch` after 10 minutes because no optIn value is set yet', + fakeSchedulers((advance) => { + shipper.reportEvents(events); + advance(10 * MINUTES); + expect(fetchMock).not.toHaveBeenCalled(); + }) + ); + + test( + 'calls to reportEvents call `fetch` after 10 minutes when optIn value is set to true', + fakeSchedulers(async (advance) => { + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + setLastBatchSent(Date.now() - 10 * MINUTES); + advance(10 * MINUTES); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "200", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_server", + "type": "succeeded", + } + `); + }) + ); + + test( + 'calls to reportEvents do not call `fetch` after 10 minutes when optIn value is set to false', + fakeSchedulers((advance) => { + shipper.reportEvents(events); + shipper.optIn(false); + setLastBatchSent(Date.now() - 10 * MINUTES); + advance(10 * MINUTES); + expect(fetchMock).not.toHaveBeenCalled(); + }) + ); + + test('calls to reportEvents call `fetch` when shutting down if optIn value is set to true', async () => { + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + shipper.shutdown(); + await nextTick(); // We are handling the shutdown in a promise, so we need to wait for the next tick. + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "200", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_server", + "type": "succeeded", + } + `); + }); + + test( + 'does not add the query.debug: true property to the request if the shipper is not set with the debug flag', + fakeSchedulers((advance) => { + shipper = new ElasticV3ServerShipper( + { version: '1.2.3', channelName: 'test-channel' }, + initContext + ); + // eslint-disable-next-line dot-notation + shipper['firstTimeOffline'] = null; + shipper.reportEvents(events); + shipper.optIn(true); + setLastBatchSent(Date.now() - 10 * MINUTES); + advance(10 * MINUTES); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + method: 'POST', + } + ); + }) + ); + + test( + 'sends when the queue overflows the 10kB leaky bucket one batch every 10s', + fakeSchedulers(async (advance) => { + expect.assertions(2 * 9 + 2); + + shipper.reportEvents(new Array(1000).fill(events[0])); + shipper.optIn(true); + + // Due to the size of the test events, it matches 9 rounds. + for (let i = 0; i < 9; i++) { + const counter = firstValueFrom(shipper.telemetryCounter$); + setLastBatchSent(Date.now() - 10 * SECONDS); + advance(10 * SECONDS); + expect(fetchMock).toHaveBeenNthCalledWith( + i + 1, + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: new Array(103) + .fill( + '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n' + ) + .join(''), + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "200", + "count": 103, + "event_type": "test-event-type", + "source": "elastic_v3_server", + "type": "succeeded", + } + `); + await nextTick(); + } + // eslint-disable-next-line dot-notation + expect(shipper['internalQueue'].length).toBe(1000 - 9 * 103); // 73 + + // If we call it again, it should not enqueue all the events (only the ones to fill the queue): + shipper.reportEvents(new Array(1000).fill(events[0])); + // eslint-disable-next-line dot-notation + expect(shipper['internalQueue'].length).toBe(1000); + }) + ); + + test( + 'handles when the fetch request fails', + fakeSchedulers(async (advance) => { + fetchMock.mockRejectedValueOnce(new Error('Failed to fetch')); + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + setLastBatchSent(Date.now() - 10 * MINUTES); + advance(10 * MINUTES); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "Failed to fetch", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_server", + "type": "failed", + } + `); + }) + ); + + test( + 'handles when the fetch request fails (request completes but not OK response)', + fakeSchedulers(async (advance) => { + fetchMock.mockResolvedValueOnce({ + ok: false, + status: 400, + text: () => Promise.resolve('{"status": "not ok"}'), + }); + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + setLastBatchSent(Date.now() - 10 * MINUTES); + advance(10 * MINUTES); + expect(fetchMock).toHaveBeenCalledWith( + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "400", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_server", + "type": "failed", + } + `); + }) + ); + + test( + 'connectivity check is run after report failure', + fakeSchedulers(async (advance) => { + fetchMock.mockRejectedValueOnce(new Error('Failed to fetch')); + shipper.reportEvents(events); + shipper.optIn(true); + const counter = firstValueFrom(shipper.telemetryCounter$); + setLastBatchSent(Date.now() - 10 * MINUTES); + advance(10 * MINUTES); + expect(fetchMock).toHaveBeenNthCalledWith( + 1, + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { + body: '{"timestamp":"2020-01-01T00:00:00.000Z","event_type":"test-event-type","context":{},"properties":{}}\n', + headers: { + 'content-type': 'application/x-njson', + 'x-elastic-cluster-id': 'UNKNOWN', + 'x-elastic-stack-version': '1.2.3', + }, + method: 'POST', + query: { debug: true }, + } + ); + await expect(counter).resolves.toMatchInlineSnapshot(` + Object { + "code": "Failed to fetch", + "count": 1, + "event_type": "test-event-type", + "source": "elastic_v3_server", + "type": "failed", + } + `); + fetchMock.mockRejectedValueOnce(new Error('Failed to fetch')); + advance(1 * MINUTES); + await nextTick(); + expect(fetchMock).toHaveBeenNthCalledWith( + 2, + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { method: 'OPTIONS' } + ); + fetchMock.mockResolvedValueOnce({ ok: false }); + advance(2 * MINUTES); + await nextTick(); + expect(fetchMock).toHaveBeenNthCalledWith( + 3, + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { method: 'OPTIONS' } + ); + + // let's see the effect of after 24 hours: + shipper.reportEvents(events); + // eslint-disable-next-line dot-notation + expect(shipper['internalQueue'].length).toBe(1); + // eslint-disable-next-line dot-notation + shipper['firstTimeOffline'] = 100; + + fetchMock.mockResolvedValueOnce({ ok: false }); + advance(4 * MINUTES); + await nextTick(); + expect(fetchMock).toHaveBeenNthCalledWith( + 4, + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { method: 'OPTIONS' } + ); + // eslint-disable-next-line dot-notation + expect(shipper['internalQueue'].length).toBe(0); + + // New events are not added to the queue because it's been offline for 24 hours. + shipper.reportEvents(events); + // eslint-disable-next-line dot-notation + expect(shipper['internalQueue'].length).toBe(0); + + // Regains connection + fetchMock.mockResolvedValueOnce({ ok: true }); + advance(8 * MINUTES); + await nextTick(); + expect(fetchMock).toHaveBeenNthCalledWith( + 5, + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { method: 'OPTIONS' } + ); + // eslint-disable-next-line dot-notation + expect(shipper['firstTimeOffline']).toBe(null); + + advance(16 * MINUTES); + await nextTick(); + expect(fetchMock).not.toHaveBeenNthCalledWith( + 6, + 'https://telemetry-staging.elastic.co/v3/send/test-channel', + { method: 'OPTIONS' } + ); + }) + ); +}); diff --git a/packages/analytics/shippers/elastic_v3/server/src/server_shipper.ts b/packages/analytics/shippers/elastic_v3/server/src/server_shipper.ts new file mode 100644 index 0000000000000..1c1277f7d7b4b --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/src/server_shipper.ts @@ -0,0 +1,290 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import fetch from 'node-fetch'; +import { + filter, + Subject, + interval, + concatMap, + merge, + from, + firstValueFrom, + timer, + retryWhen, + tap, + delayWhen, + takeWhile, +} from 'rxjs'; +import type { + AnalyticsClientInitContext, + Event, + EventContext, + IShipper, + TelemetryCounter, +} from '@kbn/analytics-client'; +import { TelemetryCounterType } from '@kbn/analytics-client'; +import type { ElasticV3ShipperOptions } from '@kbn/analytics-shippers-elastic-v3-common'; +import { + buildHeaders, + buildUrl, + createTelemetryCounterHelper, + eventsToNDJSON, + ErrorWithCode, +} from '@kbn/analytics-shippers-elastic-v3-common'; + +const SECOND = 1000; +const MINUTE = 60 * SECOND; +const HOUR = 60 * MINUTE; +const KIB = 1024; +const MAX_NUMBER_OF_EVENTS_IN_INTERNAL_QUEUE = 1000; + +export class ElasticV3ServerShipper implements IShipper { + public static shipperName = 'elastic_v3_server'; + public readonly telemetryCounter$ = new Subject(); + + private readonly reportTelemetryCounters = createTelemetryCounterHelper( + this.telemetryCounter$, + ElasticV3ServerShipper.shipperName + ); + + private readonly internalQueue: Event[] = []; + private readonly shutdown$ = new Subject(); + + private readonly url: string; + + private lastBatchSent = Date.now(); + + private clusterUuid: string = 'UNKNOWN'; + private licenseId?: string; + private isOptedIn?: boolean; + + /** + * Specifies when it went offline: + * - `undefined` means it doesn't know yet whether it is online or offline + * - `null` means it's online + * - `number` means it's offline since that time + * @private + */ + private firstTimeOffline?: number | null; + + constructor( + private readonly options: ElasticV3ShipperOptions, + private readonly initContext: AnalyticsClientInitContext + ) { + this.url = buildUrl({ + sendTo: options.sendTo ?? initContext.sendTo, + channelName: options.channelName, + }); + this.setInternalSubscriber(); + this.checkConnectivity(); + } + + public extendContext(newContext: EventContext) { + if (newContext.cluster_uuid) { + this.clusterUuid = newContext.cluster_uuid; + } + if (newContext.license_id) { + this.licenseId = newContext.license_id; + } + } + + public optIn(isOptedIn: boolean) { + this.isOptedIn = isOptedIn; + + if (isOptedIn === false) { + this.internalQueue.length = 0; + } + } + + public reportEvents(events: Event[]) { + if ( + this.isOptedIn === false || + (this.firstTimeOffline && Date.now() - this.firstTimeOffline > 24 * HOUR) + ) { + return; + } + + const freeSpace = MAX_NUMBER_OF_EVENTS_IN_INTERNAL_QUEUE - this.internalQueue.length; + + // As per design, we only want store up-to 1000 events at a time. Drop anything that goes beyond that limit + if (freeSpace < events.length) { + const toDrop = events.length - freeSpace; + const droppedEvents = events.splice(-toDrop, toDrop); + this.reportTelemetryCounters(droppedEvents, { + type: TelemetryCounterType.dropped, + code: 'queue_full', + }); + } + + this.internalQueue.push(...events); + } + + public shutdown() { + this.shutdown$.complete(); + } + + /** + * Checks the server has connectivity to the remote endpoint. + * The frequency of the connectivity tests will back off, starting with 1 minute, and multiplying by 2 + * until it reaches 1 hour. Then, it’ll keep the 1h frequency until it reaches 24h without connectivity. + * At that point, it clears the queue and stops accepting events in the queue. + * The connectivity checks will continue to happen every 1 hour just in case it regains it at any point. + * @private + */ + private checkConnectivity() { + let backoff = 1 * MINUTE; + timer(0, 1 * MINUTE) + .pipe( + takeWhile(() => this.shutdown$.isStopped === false), + filter(() => this.isOptedIn === true && this.firstTimeOffline !== null), + concatMap(async () => { + const { ok } = await fetch(this.url, { + method: 'OPTIONS', + }); + + if (!ok) { + throw new Error(`Failed to connect to ${this.url}`); + } + + this.firstTimeOffline = null; + backoff = 1 * MINUTE; + }), + retryWhen((errors) => + errors.pipe( + takeWhile(() => this.shutdown$.isStopped === false), + tap(() => { + if (!this.firstTimeOffline) { + this.firstTimeOffline = Date.now(); + } else if (Date.now() - this.firstTimeOffline > 24 * HOUR) { + this.internalQueue.length = 0; + } + backoff = backoff * 2; + if (backoff > 1 * HOUR) { + backoff = 1 * HOUR; + } + }), + delayWhen(() => timer(backoff)) + ) + ) + ) + .subscribe(); + } + + private setInternalSubscriber() { + // Check the status of the queues every 1 second. + merge( + interval(1000), + // Using a promise because complete does not emit through the pipe. + from(firstValueFrom(this.shutdown$, { defaultValue: true })) + ) + .pipe( + // Only move ahead if it's opted-in and online. + filter(() => this.isOptedIn === true && this.firstTimeOffline === null), + + // Send the events now if (validations sorted from cheapest to most CPU expensive): + // - We are shutting down. + // - There are some events in the queue, and we didn't send anything in the last 10 minutes. + // - The last time we sent was more than 10 seconds ago and: + // - We reached the minimum batch size of 10kB per request in our leaky bucket. + // - The queue is full (meaning we'll never get to 10kB because the events are very small). + filter( + () => + (this.internalQueue.length > 0 && + (this.shutdown$.isStopped || Date.now() - this.lastBatchSent >= 10 * MINUTE)) || + (Date.now() - this.lastBatchSent >= 10 * SECOND && + (this.internalQueue.length === 1000 || + this.getQueueByteSize(this.internalQueue) >= 10 * KIB)) + ), + + // Send the events + concatMap(async () => { + this.lastBatchSent = Date.now(); + const eventsToSend = this.getEventsToSend(); + await this.sendEvents(eventsToSend); + }), + + // Stop the subscriber if we are shutting down. + takeWhile(() => !this.shutdown$.isStopped) + ) + .subscribe(); + } + + /** + * Calculates the size of the queue in bytes. + * @returns The number of bytes held in the queue. + * @private + */ + private getQueueByteSize(queue: Event[]) { + return queue.reduce((acc, event) => { + return acc + this.getEventSize(event); + }, 0); + } + + /** + * Calculates the size of the event in bytes. + * @param event The event to calculate the size of. + * @returns The number of bytes held in the event. + * @private + */ + private getEventSize(event: Event) { + return Buffer.from(JSON.stringify(event)).length; + } + + /** + * Returns a queue of events of up-to 10kB. + * @remarks It mutates the internal queue by removing from it the events returned by this method. + * @private + */ + private getEventsToSend(): Event[] { + // If the internal queue is already smaller than the minimum batch size, do a direct assignment. + if (this.getQueueByteSize(this.internalQueue) < 10 * KIB) { + return this.internalQueue.splice(0, this.internalQueue.length); + } + // Otherwise, we'll feed the events to the leaky bucket queue until we reach 10kB. + const queue: Event[] = []; + let queueByteSize = 0; + while (queueByteSize < 10 * KIB) { + const event = this.internalQueue.shift()!; + queueByteSize += this.getEventSize(event); + queue.push(event); + } + return queue; + } + + private async sendEvents(events: Event[]) { + try { + const code = await this.makeRequest(events); + this.reportTelemetryCounters(events, { code }); + } catch (error) { + this.reportTelemetryCounters(events, { code: error.code, error }); + this.firstTimeOffline = undefined; + } + } + + private async makeRequest(events: Event[]): Promise { + const { status, text, ok } = await fetch(this.url, { + method: 'POST', + body: eventsToNDJSON(events), + headers: buildHeaders(this.clusterUuid, this.options.version, this.licenseId), + ...(this.options.debug && { query: { debug: true } }), + }); + + if (this.options.debug) { + this.initContext.logger.debug( + `[${ElasticV3ServerShipper.shipperName}]: ${status} - ${await text()}` + ); + } + + if (!ok) { + throw new ErrorWithCode(`${status} - ${await text()}`, `${status}`); + } + + return `${status}`; + } +} diff --git a/packages/analytics/shippers/elastic_v3/server/tsconfig.json b/packages/analytics/shippers/elastic_v3/server/tsconfig.json new file mode 100644 index 0000000000000..b81a9a0217634 --- /dev/null +++ b/packages/analytics/shippers/elastic_v3/server/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/analytics/shippers/fullstory/README.md b/packages/analytics/shippers/fullstory/README.md index 60c4b641e300b..6d1c443db3d22 100644 --- a/packages/analytics/shippers/fullstory/README.md +++ b/packages/analytics/shippers/fullstory/README.md @@ -4,7 +4,7 @@ FullStory implementation as a shipper for the `@kbn/analytics-client`. ## How to use it -This module is intended to be used on the UI only. It does not support server-side events. +This module is intended to be used **on the browser only**. It does not support server-side events. ```typescript import { FullStoryShipper } from "@kbn/analytics-shippers-fullstory"; @@ -21,3 +21,11 @@ analytics.registerShipper(FullStoryShipper, { fullStoryOrgId: '12345' }) | `scriptUrl` | The URL to load the FullStory client from. Falls back to `edge.fullstory.com/s/fs.js` if not specified. | | `debug` | Whether the debug logs should be printed to the console. Defaults to `false`. | | `namespace` | The name of the variable where the API is stored: `window[namespace]`. Defaults to `FS`. | + +## FullStory Custom Events Rate Limits + +FullStory limits the number of custom events that can be sent per second ([docs](https://help.fullstory.com/hc/en-us/articles/360020623234#custom-property-rate-limiting)). In order to comply with that limit, this shipper will only emit the event types registered in the allow-list defined in the constant [CUSTOM_EVENT_TYPES_ALLOWLIST](./src/fullstory_shipper.ts). We may change this behaviour in the future to a remotely-controlled list of events or rely on the opt-in _cherry-pick_ config mechanism of the Analytics Client. + +## Transmission protocol + +This shipper relies on FullStory official snippet. The internals about how it transfers the data are not documented. diff --git a/packages/analytics/shippers/fullstory/src/fullstory_shipper.test.ts b/packages/analytics/shippers/fullstory/src/fullstory_shipper.test.ts index 4b60ba661fe14..10f24ba5b5e14 100644 --- a/packages/analytics/shippers/fullstory/src/fullstory_shipper.test.ts +++ b/packages/analytics/shippers/fullstory/src/fullstory_shipper.test.ts @@ -119,7 +119,7 @@ describe('FullStoryShipper', () => { { event_type: 'test-event-2', timestamp: '2020-01-01T00:00:00.000Z', - properties: { test: 'test-2' }, + properties: { other_property: 'test-2' }, context: { pageName: 'test-page-1' }, }, ]); @@ -129,6 +129,49 @@ describe('FullStoryShipper', () => { test_str: 'test-1', }); expect(fullStoryApiMock.event).toHaveBeenCalledWith('test-event-2', { + other_property_str: 'test-2', + }); + }); + + test('filters the events by the allow-list', () => { + fullstoryShipper = new FullStoryShipper( + { + eventTypesAllowlist: ['valid-event-1', 'valid-event-2'], + debug: true, + fullStoryOrgId: 'test-org-id', + }, + { + logger: loggerMock.create(), + sendTo: 'staging', + isDev: true, + } + ); + fullstoryShipper.reportEvents([ + { + event_type: 'test-event-1', // Should be filtered out. + timestamp: '2020-01-01T00:00:00.000Z', + properties: { test: 'test-1' }, + context: { pageName: 'test-page-1' }, + }, + { + event_type: 'valid-event-1', + timestamp: '2020-01-01T00:00:00.000Z', + properties: { test: 'test-1' }, + context: { pageName: 'test-page-1' }, + }, + { + event_type: 'valid-event-2', + timestamp: '2020-01-01T00:00:00.000Z', + properties: { test: 'test-2' }, + context: { pageName: 'test-page-1' }, + }, + ]); + + expect(fullStoryApiMock.event).toHaveBeenCalledTimes(2); + expect(fullStoryApiMock.event).toHaveBeenCalledWith('valid-event-1', { + test_str: 'test-1', + }); + expect(fullStoryApiMock.event).toHaveBeenCalledWith('valid-event-2', { test_str: 'test-2', }); }); diff --git a/packages/analytics/shippers/fullstory/src/fullstory_shipper.ts b/packages/analytics/shippers/fullstory/src/fullstory_shipper.ts index ef9d5d662813d..48e8d7e6fa246 100644 --- a/packages/analytics/shippers/fullstory/src/fullstory_shipper.ts +++ b/packages/analytics/shippers/fullstory/src/fullstory_shipper.ts @@ -18,20 +18,46 @@ import { getParsedVersion } from './get_parsed_version'; import { formatPayload } from './format_payload'; import { loadSnippet } from './load_snippet'; -export type FullStoryShipperConfig = FullStorySnippetConfig; +/** + * FullStory shipper configuration. + */ +export interface FullStoryShipperConfig extends FullStorySnippetConfig { + /** + * FullStory's custom events rate limit is very aggressive. + * If this setting is provided, it'll only send the event types specified in this list. + */ + eventTypesAllowlist?: string[]; +} +/** + * FullStory shipper. + */ export class FullStoryShipper implements IShipper { + /** Shipper's unique name */ public static shipperName = 'FullStory'; + private readonly fullStoryApi: FullStoryApi; private lastUserId: string | undefined; + private readonly eventTypesAllowlist?: string[]; + /** + * Creates a new instance of the FullStoryShipper. + * @param config {@link FullStoryShipperConfig} + * @param initContext {@link AnalyticsClientInitContext} + */ constructor( config: FullStoryShipperConfig, private readonly initContext: AnalyticsClientInitContext ) { - this.fullStoryApi = loadSnippet(config); + const { eventTypesAllowlist, ...snippetConfig } = config; + this.fullStoryApi = loadSnippet(snippetConfig); + this.eventTypesAllowlist = eventTypesAllowlist; } + /** + * {@inheritDoc IShipper.extendContext} + * @param newContext {@inheritDoc IShipper.extendContext.newContext} + */ public extendContext(newContext: EventContext): void { this.initContext.logger.debug(`Received context ${JSON.stringify(newContext)}`); @@ -70,6 +96,10 @@ export class FullStoryShipper implements IShipper { } } + /** + * {@inheritDoc IShipper.optIn} + * @param isOptedIn {@inheritDoc IShipper.optIn.isOptedIn} + */ public optIn(isOptedIn: boolean): void { this.initContext.logger.debug(`Setting FS to optIn ${isOptedIn}`); // FullStory uses 2 different opt-in methods: @@ -85,11 +115,21 @@ export class FullStoryShipper implements IShipper { } } + /** + * {@inheritDoc IShipper.reportEvents} + * @param events {@inheritDoc IShipper.reportEvents.events} + */ public reportEvents(events: Event[]): void { this.initContext.logger.debug(`Reporting ${events.length} events to FS`); - events.forEach((event) => { - // We only read event.properties and discard the rest because the context is already sent in the other APIs. - this.fullStoryApi.event(event.event_type, formatPayload(event.properties)); - }); + events + .filter((event) => this.eventTypesAllowlist?.includes(event.event_type) ?? true) + .forEach((event) => { + // We only read event.properties and discard the rest because the context is already sent in the other APIs. + this.fullStoryApi.event(event.event_type, formatPayload(event.properties)); + }); + } + + public shutdown() { + // No need to do anything here for now. } } diff --git a/packages/analytics/shippers/fullstory/src/load_snippet.ts b/packages/analytics/shippers/fullstory/src/load_snippet.ts index 471152f033b5a..b06530111d672 100644 --- a/packages/analytics/shippers/fullstory/src/load_snippet.ts +++ b/packages/analytics/shippers/fullstory/src/load_snippet.ts @@ -8,6 +8,9 @@ import type { FullStoryApi } from './types'; +/** + * FullStory basic configuration. + */ export interface FullStorySnippetConfig { /** * The FullStory account id. diff --git a/packages/elastic-apm-synthtrace/src/lib/apm/aggregators/service_latency_aggregator.ts b/packages/elastic-apm-synthtrace/src/lib/apm/aggregators/service_latency_aggregator.ts new file mode 100644 index 0000000000000..e28ba234b2a49 --- /dev/null +++ b/packages/elastic-apm-synthtrace/src/lib/apm/aggregators/service_latency_aggregator.ts @@ -0,0 +1,183 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { random } from 'lodash'; +import { Client } from '@elastic/elasticsearch'; +import { ApmFields } from '../apm_fields'; +import { Fields } from '../../entity'; +import { StreamAggregator } from '../../stream_aggregator'; + +type LatencyState = { + count: number; + min: number; + max: number; + sum: number; + timestamp: number; +} & Pick; + +export type ServiceFields = Fields & + Pick< + ApmFields, + | 'timestamp.us' + | 'ecs.version' + | 'metricset.name' + | 'observer' + | 'processor.event' + | 'processor.name' + | 'service.name' + | 'service.version' + | 'service.environment' + | 'transaction.type' + > & + Partial<{ + 'transaction.duration.aggregate': { + min: number; + max: number; + sum: number; + value_count: number; + }; + }>; + +export class ServiceLatencyAggregator implements StreamAggregator { + public readonly name; + + constructor() { + this.name = 'service-latency'; + } + + getDataStreamName(): string { + return 'metrics-apm.service'; + } + + getMappings(): Record { + return { + properties: { + '@timestamp': { + type: 'date', + format: 'date_optional_time||epoch_millis', + }, + transaction: { + type: 'object', + properties: { + type: { type: 'keyword', time_series_dimension: true }, + duration: { + type: 'object', + properties: { + aggregate: { + type: 'aggregate_metric_double', + metrics: ['min', 'max', 'sum', 'value_count'], + default_metric: 'sum', + time_series_metric: 'gauge', + }, + }, + }, + }, + }, + service: { + type: 'object', + properties: { + name: { type: 'keyword', time_series_dimension: true }, + environment: { type: 'keyword', time_series_dimension: true }, + }, + }, + }, + }; + } + + getDimensions(): string[] { + return ['service.name', 'service.environment', 'transaction.type']; + } + + getWriteTarget(document: Record): string | null { + const eventType = document.metricset?.name; + if (eventType === 'service') return 'metrics-apm.service-default'; + return null; + } + + private state: Record = {}; + + private processedComponent: number = 0; + + process(event: ApmFields): Fields[] | null { + if (!event['@timestamp']) return null; + const service = event['service.name']!; + const environment = event['service.environment'] ?? 'production'; + const transactionType = event['transaction.type'] ?? 'request'; + const key = `${service}-${environment}-${transactionType}`; + const addToState = (timestamp: number) => { + if (!this.state[key]) { + this.state[key] = { + timestamp, + count: 0, + min: 0, + max: 0, + sum: 0, + 'service.name': service, + 'service.environment': environment, + 'transaction.type': transactionType, + }; + } + const duration = Number(event['transaction.duration.us']); + if (duration >= 0) { + const state = this.state[key]; + + state.count++; + state.sum += duration; + if (duration > state.max) state.max = duration; + if (duration < state.min) state.min = Math.min(0, duration); + } + }; + + // ensure we flush current state first if event falls out of the current max window age + if (this.state[key]) { + const diff = Math.abs(event['@timestamp'] - this.state[key].timestamp); + if (diff >= 1000 * 60) { + const fields = this.createServiceFields(key); + delete this.state[key]; + addToState(event['@timestamp']); + return [fields]; + } + } + + addToState(event['@timestamp']); + // if cardinality is too high force emit of current state + if (Object.keys(this.state).length === 1000) { + return this.flush(); + } + + return null; + } + + flush(): Fields[] { + const fields = Object.keys(this.state).map((key) => this.createServiceFields(key)); + this.state = {}; + return fields; + } + + private createServiceFields(key: string): ServiceFields { + this.processedComponent = ++this.processedComponent % 1000; + const component = Date.now() % 100; + const state = this.state[key]; + return { + '@timestamp': state.timestamp + random(0, 100) + component + this.processedComponent, + 'metricset.name': 'service', + 'processor.event': 'metric', + 'service.name': state['service.name'], + 'service.environment': state['service.environment'], + 'transaction.type': state['transaction.type'], + 'transaction.duration.aggregate': { + min: state.min, + max: state.max, + sum: state.sum, + value_count: state.count, + }, + }; + } + + async bootstrapElasticsearch(esClient: Client): Promise {} +} diff --git a/packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts b/packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts index 6e7fb5ffdb1bc..91bec0ba49c52 100644 --- a/packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts +++ b/packages/elastic-apm-synthtrace/src/lib/apm/client/apm_synthtrace_es_client.ts @@ -7,6 +7,7 @@ */ import { Client } from '@elastic/elasticsearch'; +import { IndicesIndexSettings } from '@elastic/elasticsearch/lib/api/types'; import { cleanWriteTargets } from '../../utils/clean_write_targets'; import { getApmWriteTargets } from '../utils/get_apm_write_targets'; import { Logger } from '../../utils/create_logger'; @@ -15,6 +16,7 @@ import { EntityIterable } from '../../entity_iterable'; import { StreamProcessor } from '../../stream_processor'; import { EntityStreams } from '../../entity_streams'; import { Fields } from '../../entity'; +import { StreamAggregator } from '../../stream_aggregator'; export interface StreamToBulkOptions { concurrency?: number; @@ -57,7 +59,7 @@ export class ApmSynthtraceEsClient { return info.version.number; } - async clean() { + async clean(dataStreams?: string[]) { return this.getWriteTargets().then(async (writeTargets) => { const indices = Object.values(writeTargets); this.logger.info(`Attempting to clean: ${indices}`); @@ -68,7 +70,7 @@ export class ApmSynthtraceEsClient { logger: this.logger, }); } - for (const name of indices) { + for (const name of indices.concat(dataStreams ?? [])) { const dataStream = await this.client.indices.getDataStream({ name }, { ignore: [404] }); if (dataStream.data_streams && dataStream.data_streams.length > 0) { this.logger.debug(`Deleting datastream: ${name}`); @@ -149,7 +151,6 @@ export class ApmSynthtraceEsClient { streamProcessor?: StreamProcessor ) { const dataStream = Array.isArray(events) ? new EntityStreams(events) : events; - const sp = streamProcessor != null ? streamProcessor @@ -165,7 +166,7 @@ export class ApmSynthtraceEsClient { await this.logger.perf('enumerate_scenario', async () => { // @ts-ignore // We just want to enumerate - for await (item of sp.streamToDocumentAsync(sp.toDocument, dataStream)) { + for await (item of sp.streamToDocumentAsync((e) => sp.toDocument(e), dataStream)) { if (yielded === 0) { options.itemStartStopCallback?.apply(this, [item, false]); yielded++; @@ -185,7 +186,7 @@ export class ApmSynthtraceEsClient { flushBytes: 500000, // TODO https://github.com/elastic/elasticsearch-js/issues/1610 // having to map here is awkward, it'd be better to map just before serialization. - datasource: sp.streamToDocumentAsync(sp.toDocument, dataStream), + datasource: sp.streamToDocumentAsync((e) => sp.toDocument(e), dataStream), onDrop: (doc) => { this.logger.info(JSON.stringify(doc, null, 2)); }, @@ -197,11 +198,12 @@ export class ApmSynthtraceEsClient { options?.itemStartStopCallback?.apply(this, [item, false]); yielded++; } - const index = options?.mapToIndex - ? options?.mapToIndex(item) - : !this.forceLegacyIndices - ? StreamProcessor.getDataStreamForEvent(item, writeTargets) - : StreamProcessor.getIndexForEvent(item, writeTargets); + let index = options?.mapToIndex ? options?.mapToIndex(item) : null; + if (!index) { + index = !this.forceLegacyIndices + ? sp.getDataStreamForEvent(item, writeTargets) + : StreamProcessor.getIndexForEvent(item, writeTargets); + } return { create: { _index: index } }; }, }); @@ -211,4 +213,53 @@ export class ApmSynthtraceEsClient { await this.refresh(); } } + + async createDataStream(aggregator: StreamAggregator) { + const datastreamName = aggregator.getDataStreamName(); + const mappings = aggregator.getMappings(); + const dimensions = aggregator.getDimensions(); + + const indexSettings: IndicesIndexSettings = { lifecycle: { name: 'metrics' } }; + if (dimensions.length > 0) { + indexSettings.mode = 'time_series'; + indexSettings.routing_path = dimensions; + } + + await this.client.cluster.putComponentTemplate({ + name: `${datastreamName}-mappings`, + template: { + mappings, + }, + _meta: { + description: `Mappings for ${datastreamName}-*`, + }, + }); + this.logger.info(`Created mapping component template for ${datastreamName}-*`); + + await this.client.cluster.putComponentTemplate({ + name: `${datastreamName}-settings`, + template: { + settings: { + index: indexSettings, + }, + }, + _meta: { + description: `Settings for ${datastreamName}-*`, + }, + }); + this.logger.info(`Created settings component template for ${datastreamName}-*`); + + await this.client.indices.putIndexTemplate({ + name: `${datastreamName}-index_template`, + index_patterns: [`${datastreamName}-*`], + data_stream: {}, + composed_of: [`${datastreamName}-mappings`, `${datastreamName}-settings`], + priority: 500, + }); + this.logger.info(`Created index template for ${datastreamName}-*`); + + await this.client.indices.createDataStream({ name: datastreamName + '-default' }); + + await aggregator.bootstrapElasticsearch(this.client); + } } diff --git a/packages/elastic-apm-synthtrace/src/lib/stream_aggregator.ts b/packages/elastic-apm-synthtrace/src/lib/stream_aggregator.ts new file mode 100644 index 0000000000000..3076b105a10fd --- /dev/null +++ b/packages/elastic-apm-synthtrace/src/lib/stream_aggregator.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not 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 '@elastic/elasticsearch'; +import { ApmFields, Fields } from '..'; + +export interface StreamAggregator { + name: string; + + getWriteTarget(document: Record): string | null; + + process(event: TFields): Fields[] | null; + + flush(): Fields[]; + + bootstrapElasticsearch(esClient: Client): Promise; + + getDataStreamName(): string; + + getDimensions(): string[]; + + getMappings(): Record; +} diff --git a/packages/elastic-apm-synthtrace/src/lib/stream_processor.ts b/packages/elastic-apm-synthtrace/src/lib/stream_processor.ts index 17ced20f5d7ed..e1cb332996e23 100644 --- a/packages/elastic-apm-synthtrace/src/lib/stream_processor.ts +++ b/packages/elastic-apm-synthtrace/src/lib/stream_processor.ts @@ -17,10 +17,12 @@ import { dedot } from './utils/dedot'; import { ApmElasticsearchOutputWriteTargets } from './apm/utils/get_apm_write_targets'; import { Logger } from './utils/create_logger'; import { Fields } from './entity'; +import { StreamAggregator } from './stream_aggregator'; export interface StreamProcessorOptions { version?: string; - processors: Array<(events: TFields[]) => TFields[]>; + processors?: Array<(events: TFields[]) => TFields[]>; + streamAggregators?: Array>; flushInterval?: string; // defaults to 10k maxBufferSize?: number; @@ -39,6 +41,8 @@ export class StreamProcessor { getBreakdownMetrics, ]; public static defaultFlushInterval: number = 10000; + private readonly processors: Array<(events: TFields[]) => TFields[]>; + private readonly streamAggregators: Array>; constructor(private readonly options: StreamProcessorOptions) { [this.intervalAmount, this.intervalUnit] = this.options.flushInterval @@ -47,6 +51,8 @@ export class StreamProcessor { this.name = this.options?.name ?? 'StreamProcessor'; this.version = this.options.version ?? '8.0.0'; this.versionMajor = Number.parseInt(this.version.split('.')[0], 10); + this.processors = options.processors ?? []; + this.streamAggregators = options.streamAggregators ?? []; } private readonly intervalAmount: number; private readonly intervalUnit: any; @@ -73,6 +79,15 @@ export class StreamProcessor { yield StreamProcessor.enrich(event, this.version, this.versionMajor); sourceEventsYielded++; + for (const aggregator of this.streamAggregators) { + const aggregatedEvents = aggregator.process(event); + if (aggregatedEvents) { + yield* aggregatedEvents.map((d) => + StreamProcessor.enrich(d, this.version, this.versionMajor) + ); + } + } + if (sourceEventsYielded % maxBufferSize === 0) { if (this.options?.processedCallback) { this.options.processedCallback(maxBufferSize); @@ -96,7 +111,7 @@ export class StreamProcessor { this.options.logger?.debug( `${this.name} flush ${localBuffer.length} documents ${order}: ${e} => ${f}` ); - for (const processor of this.options.processors) { + for (const processor of this.processors) { yield* processor(localBuffer).map((d) => StreamProcessor.enrich(d, this.version, this.versionMajor) ); @@ -116,13 +131,16 @@ export class StreamProcessor { this.options.logger?.info( `${this.name} processing remaining buffer: ${localBuffer.length} items left` ); - for (const processor of this.options.processors) { + for (const processor of this.processors) { yield* processor(localBuffer).map((d) => StreamProcessor.enrich(d, this.version, this.versionMajor) ); } this.options.processedCallback?.apply(this, [localBuffer.length]); } + for (const aggregator of this.streamAggregators) { + yield* aggregator.flush(); + } } private calculateFlushAfter(eventDate: number | null, order: 'asc' | 'desc') { @@ -186,10 +204,7 @@ export class StreamProcessor { return newDoc; } - static getDataStreamForEvent( - d: Record, - writeTargets: ApmElasticsearchOutputWriteTargets - ) { + getDataStreamForEvent(d: Record, writeTargets: ApmElasticsearchOutputWriteTargets) { if (!d.processor?.event) { throw Error("'processor.event' is not set on document, can not determine target index"); } @@ -204,6 +219,13 @@ export class StreamProcessor { } } } + for (const aggregator of this.streamAggregators) { + const target = aggregator.getWriteTarget(d); + if (target) { + dataStream = target; + break; + } + } return dataStream; } diff --git a/packages/elastic-apm-synthtrace/src/scripts/run_synthtrace.ts b/packages/elastic-apm-synthtrace/src/scripts/run_synthtrace.ts index 7ba3251def983..5e007d9adeac4 100644 --- a/packages/elastic-apm-synthtrace/src/scripts/run_synthtrace.ts +++ b/packages/elastic-apm-synthtrace/src/scripts/run_synthtrace.ts @@ -14,6 +14,8 @@ import { startLiveDataUpload } from './utils/start_live_data_upload'; import { parseRunCliFlags } from './utils/parse_run_cli_flags'; import { getCommonServices } from './utils/get_common_services'; import { ApmSynthtraceKibanaClient } from '../lib/apm/client/apm_synthtrace_kibana_client'; +import { StreamAggregator } from '../lib/stream_aggregator'; +import { ServiceLatencyAggregator } from '../lib/apm/aggregators/service_latency_aggregator'; function options(y: Argv) { return y @@ -186,8 +188,9 @@ yargs(process.argv.slice(2)) await apmEsClient.updateComponentTemplates(runOptions.numShards); } + const aggregators: StreamAggregator[] = [new ServiceLatencyAggregator()]; if (argv.clean) { - await apmEsClient.clean(); + await apmEsClient.clean(aggregators.map((a) => a.getDataStreamName() + '-*')); } if (runOptions.gcpRepository) { await apmEsClient.registerGcpRepository(runOptions.gcpRepository); @@ -205,6 +208,8 @@ yargs(process.argv.slice(2)) )}` ); + for (const aggregator of aggregators) await apmEsClient.createDataStream(aggregator); + if (runOptions.maxDocs !== 0) await startHistoricalDataUpload(apmEsClient, logger, runOptions, from, to, version); diff --git a/packages/elastic-apm-synthtrace/src/scripts/utils/worker.ts b/packages/elastic-apm-synthtrace/src/scripts/utils/synthtrace_worker.ts similarity index 92% rename from packages/elastic-apm-synthtrace/src/scripts/utils/worker.ts rename to packages/elastic-apm-synthtrace/src/scripts/utils/synthtrace_worker.ts index 4e4ef8a02ff71..76b6e2ce6b6d8 100644 --- a/packages/elastic-apm-synthtrace/src/scripts/utils/worker.ts +++ b/packages/elastic-apm-synthtrace/src/scripts/utils/synthtrace_worker.ts @@ -15,6 +15,8 @@ import { LogLevel } from '../../lib/utils/create_logger'; import { StreamProcessor } from '../../lib/stream_processor'; import { Scenario } from '../scenario'; import { EntityIterable, Fields } from '../..'; +import { StreamAggregator } from '../../lib/stream_aggregator'; +import { ServiceLatencyAggregator } from '../../lib/apm/aggregators/service_latency_aggregator'; // logging proxy to main thread, ensures we see real time logging const l = { @@ -61,9 +63,11 @@ async function setup() { parentPort?.postMessage({ workerIndex, lastTimestamp: item['@timestamp'] }); } }; + const aggregators: StreamAggregator[] = [new ServiceLatencyAggregator()]; streamProcessor = new StreamProcessor({ version, processors: StreamProcessor.apmProcessors, + streamAggregators: aggregators, maxSourceEvents: runOptions.maxDocs, logger: l, processedCallback: (processedDocuments) => { diff --git a/packages/elastic-apm-synthtrace/src/scripts/utils/worker.js b/packages/elastic-apm-synthtrace/src/scripts/utils/worker.js index 84887f4d9285b..734a9323e5516 100644 --- a/packages/elastic-apm-synthtrace/src/scripts/utils/worker.js +++ b/packages/elastic-apm-synthtrace/src/scripts/utils/worker.js @@ -12,4 +12,4 @@ require('@babel/register')({ presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'], }); -require('./worker'); +require('./synthtrace_worker'); diff --git a/packages/kbn-bazel-packages/src/bazel_package_dirs.ts b/packages/kbn-bazel-packages/src/bazel_package_dirs.ts index f09883994feca..1027883df10dd 100644 --- a/packages/kbn-bazel-packages/src/bazel_package_dirs.ts +++ b/packages/kbn-bazel-packages/src/bazel_package_dirs.ts @@ -24,6 +24,7 @@ export const BAZEL_PACKAGE_DIRS = [ 'packages/shared-ux/*', 'packages/analytics', 'packages/analytics/shippers', + 'packages/analytics/shippers/elastic_v3', ]; /** diff --git a/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts b/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts index 73eecbda2ff3e..5d3f17a76f687 100644 --- a/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts +++ b/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts @@ -22,6 +22,8 @@ import { parseConfig, Config, CiStatsMetadata } from '@kbn/ci-stats-core'; import type { CiStatsTestGroupInfo, CiStatsTestRun } from './ci_stats_test_group_types'; const BASE_URL = 'https://ci-stats.kibana.dev'; +const SECOND = 1000; +const MINUTE = 60 * SECOND; function limitMetaStrings(meta: CiStatsMetadata) { return Object.fromEntries( @@ -107,6 +109,7 @@ interface ReqOptions { body: any; bodyDesc: string; query?: AxiosRequestConfig['params']; + timeout?: number; } /** Object that helps report data to the ci-stats service */ @@ -282,6 +285,7 @@ export class CiStatsReporter { }, bodyDesc: `[${group.name}/${group.type}] Chunk of ${bufferBytes} bytes`, body: buffer.join('\n'), + timeout: 5 * MINUTE, }); buffer.length = 0; bufferBytes = 0; @@ -336,7 +340,7 @@ export class CiStatsReporter { } } - private async req({ auth, body, bodyDesc, path, query }: ReqOptions) { + private async req({ auth, body, bodyDesc, path, query, timeout = 60 * SECOND }: ReqOptions) { let attempt = 0; const maxAttempts = 5; @@ -365,6 +369,7 @@ export class CiStatsReporter { // if it can be serialized into a string, send it maxBodyLength: Infinity, maxContentLength: Infinity, + timeout, }); return resp.data; diff --git a/packages/kbn-dev-utils/src/proc_runner/proc.ts b/packages/kbn-dev-utils/src/proc_runner/proc.ts index 0402feec99d47..c622c46456abf 100644 --- a/packages/kbn-dev-utils/src/proc_runner/proc.ts +++ b/packages/kbn-dev-utils/src/proc_runner/proc.ts @@ -37,19 +37,7 @@ async function withTimeout( ms: number, onTimeout: () => Promise ) { - const TIMEOUT = Symbol('timeout'); - try { - await Promise.race([ - attempt(), - new Promise((_, reject) => setTimeout(() => reject(TIMEOUT), ms)), - ]); - } catch (error) { - if (error === TIMEOUT) { - await onTimeout(); - } else { - throw error; - } - } + await Rx.lastValueFrom(Rx.race(Rx.defer(attempt), Rx.timer(ms).pipe(Rx.mergeMap(onTimeout)))); } export type Proc = ReturnType; diff --git a/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts b/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts index 3b7cf008df9a6..857a4fcfd475d 100644 --- a/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts +++ b/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts @@ -7,7 +7,6 @@ */ import * as Rx from 'rxjs'; -import { filter, first, catchError, map } from 'rxjs/operators'; import exitHook from 'exit-hook'; import { ToolingLog } from '@kbn/tooling-log'; @@ -93,29 +92,30 @@ export class ProcRunner { try { if (wait instanceof RegExp) { // wait for process to log matching line - await Rx.race( - proc.lines$.pipe( - filter((line) => wait.test(line)), - first(), - catchError((err) => { - if (err.name !== 'EmptyError') { - throw createFailError(`[${name}] exited without matching pattern: ${wait}`); - } else { - throw err; - } - }) - ), - waitTimeout === false - ? Rx.NEVER - : Rx.timer(waitTimeout).pipe( - map(() => { - const sec = waitTimeout / SECOND; - throw createFailError( - `[${name}] failed to match pattern within ${sec} seconds [pattern=${wait}]` - ); - }) - ) - ).toPromise(); + await Rx.lastValueFrom( + Rx.race( + proc.lines$.pipe( + Rx.filter((line) => wait.test(line)), + Rx.take(1), + Rx.defaultIfEmpty(undefined), + Rx.map((line) => { + if (line === undefined) { + throw createFailError(`[${name}] exited without matching pattern: ${wait}`); + } + }) + ), + waitTimeout === false + ? Rx.NEVER + : Rx.timer(waitTimeout).pipe( + Rx.map(() => { + const sec = waitTimeout / SECOND; + throw createFailError( + `[${name}] failed to match pattern within ${sec} seconds [pattern=${wait}]` + ); + }) + ) + ) + ); } if (wait === true) { diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 74549f4e32b57..79b41112768a6 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -47,6 +47,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { metaData: `${APM_DOCS}guide/${DOC_LINK_VERSION}/data-model-metadata.html`, overview: `${APM_DOCS}guide/${DOC_LINK_VERSION}/apm-overview.html`, tailSamplingPolicies: `${APM_DOCS}guide/${DOC_LINK_VERSION}/configure-tail-based-sampling.html`, + elasticAgent: `${APM_DOCS}guide/${DOC_LINK_VERSION}/upgrade-to-apm-integration.html`, }, canvas: { guide: `${KIBANA_DOCS}canvas.html`, @@ -648,6 +649,8 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { }, kibanaUpgradeSavedObjects: { resolveMigrationFailures: `${KIBANA_DOCS}resolve-migrations-failures.html`, + repeatedTimeoutRequests: `${KIBANA_DOCS}resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail`, + routingAllocationDisabled: `${KIBANA_DOCS}resolve-migrations-failures.html#routing-allocation-disabled`, }, }); }; diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index bf378c4cf2dd1..645aad3af2bd2 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -33,6 +33,7 @@ export interface DocLinks { readonly metaData: string; readonly overview: string; readonly tailSamplingPolicies: string; + readonly elasticAgent: string; }; readonly canvas: { readonly guide: string; @@ -403,5 +404,7 @@ export interface DocLinks { }; readonly kibanaUpgradeSavedObjects: { readonly resolveMigrationFailures: string; + readonly repeatedTimeoutRequests: string; + readonly routingAllocationDisabled: string; }; } diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts index 9b86db445c225..527ce59011a8b 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts @@ -53,6 +53,24 @@ it('Test number primitive doc def', () => { expect(def.type).toBe(TypeKind.NumberKind); }); +it('Test a constructor type declaration inside an interface', () => { + const node = nodes.find((n) => getNodeName(n) === 'ClassConstructorWithStaticProperties'); + expect(node).toBeDefined(); + const def = buildApiDeclarationTopNode(node!, { + plugins, + log, + currentPluginId: plugins[0].manifest.id, + scope: ApiScope.CLIENT, + captureReferences: false, + }); + + expect(def.type).toBe(TypeKind.InterfaceKind); + expect(def.children).toHaveLength(2); + expect(def.children![1].type).toBe(TypeKind.FunctionKind); + expect(def.children![1].label).toBe('new'); + expect(def.children![1].id).toBe('def-public.ClassConstructorWithStaticProperties.new'); +}); + it('Function type is exported as type with signature', () => { const node = nodes.find((n) => getNodeName(n) === 'FnWithGeneric'); expect(node).toBeDefined(); diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts index 809097ee73818..2e167c7a0a783 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts @@ -65,12 +65,17 @@ export function buildApiDeclaration(node: Node, opts: BuildApiDecOpts): ApiDecla Node.isMethodSignature(node) || Node.isFunctionDeclaration(node) || Node.isMethodDeclaration(node) || + Node.isConstructSignatureDeclaration(node) || Node.isConstructorDeclaration(node) ) { return buildFunctionDec(node, { ...opts, // Use "Constructor" if applicable, instead of the default "Unnamed" - name: Node.isConstructorDeclaration(node) ? 'Constructor' : node.getName() || 'Unnamed', + name: Node.isConstructSignatureDeclaration(node) + ? 'new' + : Node.isConstructorDeclaration(node) + ? 'Constructor' + : node.getName() || 'Unnamed', }); } else if ( Node.isPropertySignature(node) || diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_function_dec.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_function_dec.ts index 3ba688f1ee284..020ffd402366a 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_function_dec.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_function_dec.ts @@ -11,6 +11,7 @@ import { MethodDeclaration, ConstructorDeclaration, MethodSignature, + ConstructSignatureDeclaration, } from 'ts-morph'; import { buildApiDecsForParameters } from './build_parameter_decs'; @@ -23,7 +24,12 @@ import { BuildApiDecOpts } from './types'; * Takes the various function-like node declaration types and converts them into an ApiDeclaration. */ export function buildFunctionDec( - node: FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | MethodSignature, + node: + | ConstructSignatureDeclaration + | FunctionDeclaration + | MethodDeclaration + | ConstructorDeclaration + | MethodSignature, opts: BuildApiDecOpts ): ApiDeclaration { const fn = { diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/utils.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/utils.ts index a57b1790b27a8..76328a314b066 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/utils.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/utils.ts @@ -46,7 +46,11 @@ export function buildParentApiId(parentName: string, parentsParentApiId?: string } export function getOptsForChild(node: Node, parentOpts: BuildApiDecOpts): BuildApiDecOpts { - const name = isNamedNode(node) ? node.getName() : 'Unnamed'; + const name = Node.isConstructSignatureDeclaration(node) + ? 'new' + : isNamedNode(node) + ? node.getName() + : 'Unnamed'; return getOptsForChildWithName(name, parentOpts); } 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 0617e35a88615..41bb6400b92ab 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 @@ -65,11 +65,16 @@ export function runBuildApiDocsCli() { // Delete all files except the README that warns about the auto-generated nature of // the folder. const files = Fs.readdirSync(outputFolder); - files.forEach((file) => { - if (file.indexOf('README.md') < 0) { - Fs.rmSync(Path.resolve(outputFolder, file)); - } - }); + await Promise.all( + files + .filter((file) => file.indexOf('README.md') < 0) + .map( + (file) => + new Promise((resolve, reject) => + Fs.rm(Path.resolve(outputFolder, file), (err) => (err ? reject(err) : resolve())) + ) + ) + ); } const collectReferences = flags.references as boolean; diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts b/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts index b1862f9bc2165..1a1ecb8ec3e67 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts @@ -38,7 +38,7 @@ beforeAll(() => { }); test('foo service has all exports', () => { - expect(doc?.client.length).toBe(37); + expect(doc?.client.length).toBe(38); const split = splitApisByFolder(doc); expect(split.length).toBe(2); @@ -47,5 +47,5 @@ test('foo service has all exports', () => { expect(fooDoc?.common.length).toBe(1); expect(fooDoc?.client.length).toBe(2); - expect(mainDoc?.client.length).toBe(35); + expect(mainDoc?.client.length).toBe(36); }); diff --git a/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts b/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts index 345e85bc044b7..ad3d1204aeda9 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts +++ b/packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts @@ -24,6 +24,11 @@ export interface InterfaceWithIndexSignature { [key: string]: { foo: string }; } +export interface ClassConstructorWithStaticProperties { + staticProperty1: string; + new (config: { foo: string }): InterfaceWithIndexSignature; +} + export function plugin() { return new PluginA(); } diff --git a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.devdocs.json b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.devdocs.json index ff977517cb5a7..88e4043442e88 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.devdocs.json +++ b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.devdocs.json @@ -712,6 +712,67 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "pluginA", + "id": "def-public.ClassConstructorWithStaticProperties", + "type": "Interface", + "tags": [], + "label": "ClassConstructorWithStaticProperties", + "description": [], + "path": "packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "pluginA", + "id": "def-public.ClassConstructorWithStaticProperties.staticProperty1", + "type": "string", + "tags": [], + "label": "staticProperty1", + "description": [], + "path": "packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "pluginA", + "id": "def-public.ClassConstructorWithStaticProperties.new", + "type": "Function", + "tags": [], + "label": "new", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "pluginA", + "id": "def-public.ClassConstructorWithStaticProperties.new.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "path": "packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "pluginA", + "id": "def-public.ClassConstructorWithStaticProperties.new.$1.foo", + "type": "string", + "tags": [], + "label": "foo", + "description": [], + "path": "packages/kbn-docs-utils/src/api_docs/tests/__fixtures__/src/plugin_a/public/index.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "pluginA", "id": "def-public.ExampleInterface", diff --git a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.mdx b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.mdx index ab80f1f02d0ac..6a66fa74f7c01 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.mdx +++ b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/pluginA title: "pluginA" image: https://source.unsplash.com/400x175/?github summary: API docs for the pluginA plugin -date: 2022-02-14 +date: 2022-04-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'pluginA'] 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. --- @@ -18,7 +18,7 @@ Contact Kibana Core for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 131 | 1 | 71 | 2 | +| 136 | 1 | 76 | 2 | ## Client diff --git a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a_foo.mdx b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a_foo.mdx index e9873f8223017..4082de6306895 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a_foo.mdx +++ b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a_foo.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/pluginA-foo title: "pluginA.foo" image: https://source.unsplash.com/400x175/?github summary: API docs for the pluginA.foo plugin -date: 2022-02-14 +date: 2022-04-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'pluginA.foo'] 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. --- @@ -18,7 +18,7 @@ Contact Kibana Core for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 131 | 1 | 71 | 2 | +| 136 | 1 | 76 | 2 | ## Client diff --git a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_b.mdx b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_b.mdx index 1671cd7a529d3..d69da971f7e3e 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_b.mdx +++ b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_b.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/pluginB title: "pluginB" image: https://source.unsplash.com/400x175/?github summary: API docs for the pluginB plugin -date: 2022-02-14 +date: 2022-04-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'pluginB'] 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. --- diff --git a/packages/kbn-es-archiver/src/cli.ts b/packages/kbn-es-archiver/src/cli.ts index fbb5784afe5ac..899a7843a68fc 100644 --- a/packages/kbn-es-archiver/src/cli.ts +++ b/packages/kbn-es-archiver/src/cli.ts @@ -24,7 +24,7 @@ import { Client, HttpConnection } from '@elastic/elasticsearch'; import { EsArchiver } from './es_archiver'; const resolveConfigPath = (v: string) => Path.resolve(process.cwd(), v); -const defaultConfigPath = resolveConfigPath('test/functional/config.js'); +const defaultConfigPath = resolveConfigPath('test/functional/config.base.js'); export function runCli() { new RunWithCommands({ diff --git a/packages/kbn-es/src/cluster.js b/packages/kbn-es/src/cluster.js index a6faffc2cfcd7..50ca9fa91e0aa 100644 --- a/packages/kbn-es/src/cluster.js +++ b/packages/kbn-es/src/cluster.js @@ -260,6 +260,24 @@ exports.Cluster = class Cluster { await this._outcome; } + /** + * Stops ES process, it it's running, without waiting for it to shutdown gracefully + */ + async kill() { + if (this._stopCalled) { + return; + } + + this._stopCalled; + + if (!this._process || !this._outcome) { + throw new Error('ES has not been started'); + } + + await treeKillAsync(this._process.pid, 'SIGKILL'); + await this._outcome; + } + /** * Common logic from this.start() and this.run() * diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 4c83bc19f1cda..9f73dcd620d30 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -122,9 +122,9 @@ pageLoadAssetSize: sessionView: 77750 cloudSecurityPosture: 19109 visTypeGauge: 24113 - unifiedSearch: 104869 + unifiedSearch: 71059 data: 454087 - expressionXY: 26500 eventAnnotation: 19334 screenshotting: 22870 synthetics: 40958 + expressionXY: 29000 diff --git a/packages/kbn-optimizer/src/worker/webpack.config.ts b/packages/kbn-optimizer/src/worker/webpack.config.ts index 422fe12f11b28..876bc347a21c5 100644 --- a/packages/kbn-optimizer/src/worker/webpack.config.ts +++ b/packages/kbn-optimizer/src/worker/webpack.config.ts @@ -94,7 +94,7 @@ export function getWebpackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker: module: { // no parse rules for a few known large packages which have no require() statements // or which have require() statements that should be ignored because the file is - // already bundled with all its necessary depedencies + // already bundled with all its necessary dependencies noParse: [ /[\/\\]node_modules[\/\\]lodash[\/\\]index\.js$/, /[\/\\]node_modules[\/\\]vega[\/\\]build[\/\\]vega\.js$/, diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index b0aabefb1b0f2..97ff65d4f71bc 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -1580,6 +1580,8 @@ var _ciStatsCore = __webpack_require__("../../node_modules/@kbn/ci-stats-core/ta */ // @ts-expect-error not "public", but necessary to prevent Jest shimming from breaking things const BASE_URL = 'https://ci-stats.kibana.dev'; +const SECOND = 1000; +const MINUTE = 60 * SECOND; function limitMetaStrings(meta) { return Object.fromEntries(Object.entries(meta).map(([key, value]) => { @@ -1782,7 +1784,8 @@ class CiStatsReporter { groupType: group.type }, bodyDesc: `[${group.name}/${group.type}] Chunk of ${bufferBytes} bytes`, - body: buffer.join('\n') + body: buffer.join('\n'), + timeout: 5 * MINUTE }); buffer.length = 0; bufferBytes = 0; @@ -1851,7 +1854,8 @@ class CiStatsReporter { body, bodyDesc, path, - query + query, + timeout = 60 * SECOND }) { let attempt = 0; const maxAttempts = 5; @@ -1879,7 +1883,8 @@ class CiStatsReporter { adapter: _http.default, // if it can be serialized into a string, send it maxBodyLength: Infinity, - maxContentLength: Infinity + maxContentLength: Infinity, + timeout }); return resp.data; } catch (error) { @@ -2265,8 +2270,6 @@ exports.observeLines = observeLines; var Rx = _interopRequireWildcard(__webpack_require__("../../node_modules/rxjs/dist/esm5/index.js")); -var _operators = __webpack_require__("../../node_modules/rxjs/dist/esm5/operators/index.js"); - var _observe_readable = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_readable.js"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } @@ -2292,8 +2295,8 @@ const SEP = /\r?\n/; * @return {Rx.Observable} */ function observeLines(readable) { - const done$ = (0, _observe_readable.observeReadable)(readable).pipe((0, _operators.share)()); - const scan$ = Rx.fromEvent(readable, 'data').pipe((0, _operators.scan)(({ + const done$ = (0, _observe_readable.observeReadable)(readable).pipe(Rx.share()); + const scan$ = Rx.fromEvent(readable, 'data').pipe(Rx.scan(({ buffer }, chunk) => { buffer += chunk; @@ -2317,16 +2320,15 @@ function observeLines(readable) { }, { buffer: '' }), // stop if done completes or errors - (0, _operators.takeUntil)(done$.pipe((0, _operators.materialize)())), (0, _operators.share)()); + Rx.takeUntil(done$.pipe(Rx.materialize())), Rx.share()); return Rx.merge( // use done$ to provide completion/errors done$, // merge in the "lines" from each step - scan$.pipe((0, _operators.mergeMap)(({ + scan$.pipe(Rx.mergeMap(({ lines }) => lines || [])), // inject the "unsplit" data at the end - scan$.pipe((0, _operators.last)(), (0, _operators.mergeMap)(({ + scan$.pipe(Rx.takeLast(1), Rx.mergeMap(({ buffer - }) => buffer ? [buffer] : []), // if there were no lines, last() will error, so catch and complete - (0, _operators.catchError)(() => Rx.empty()))); + }) => buffer ? [buffer] : []))); } /***/ }), @@ -2344,8 +2346,6 @@ exports.observeReadable = observeReadable; var Rx = _interopRequireWildcard(__webpack_require__("../../node_modules/rxjs/dist/esm5/index.js")); -var _operators = __webpack_require__("../../node_modules/rxjs/dist/esm5/operators/index.js"); - function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (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; } @@ -2364,7 +2364,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && * - fails on the first "error" event */ function observeReadable(readable) { - return Rx.race(Rx.fromEvent(readable, 'end').pipe((0, _operators.first)(), (0, _operators.ignoreElements)()), Rx.fromEvent(readable, 'error').pipe((0, _operators.first)(), (0, _operators.mergeMap)(err => Rx.throwError(err)))); + return Rx.race(Rx.fromEvent(readable, 'end').pipe(Rx.first(), Rx.ignoreElements()), Rx.fromEvent(readable, 'error').pipe(Rx.first(), Rx.map(err => { + throw err; + }))); } /***/ }), diff --git a/packages/kbn-stdio-dev-helpers/src/observe_lines.ts b/packages/kbn-stdio-dev-helpers/src/observe_lines.ts index 9b6ba85fea897..4b3a2ac2287da 100644 --- a/packages/kbn-stdio-dev-helpers/src/observe_lines.ts +++ b/packages/kbn-stdio-dev-helpers/src/observe_lines.ts @@ -9,7 +9,6 @@ import { Readable } from 'stream'; import * as Rx from 'rxjs'; -import { scan, takeUntil, share, materialize, mergeMap, last, catchError } from 'rxjs/operators'; const SEP = /\r?\n/; @@ -25,13 +24,13 @@ import { observeReadable } from './observe_readable'; * @return {Rx.Observable} */ export function observeLines(readable: Readable): Rx.Observable { - const done$ = observeReadable(readable).pipe(share()); + const done$ = observeReadable(readable).pipe(Rx.share()); const scan$: Rx.Observable<{ buffer: string; lines?: string[] }> = Rx.fromEvent( readable, 'data' ).pipe( - scan( + Rx.scan( ({ buffer }, chunk) => { buffer += chunk; @@ -53,9 +52,9 @@ export function observeLines(readable: Readable): Rx.Observable { ), // stop if done completes or errors - takeUntil(done$.pipe(materialize())), + Rx.takeUntil(done$.pipe(Rx.materialize())), - share() + Rx.share() ); return Rx.merge( @@ -63,14 +62,12 @@ export function observeLines(readable: Readable): Rx.Observable { done$, // merge in the "lines" from each step - scan$.pipe(mergeMap(({ lines }) => lines || [])), + scan$.pipe(Rx.mergeMap(({ lines }) => lines || [])), // inject the "unsplit" data at the end scan$.pipe( - last(), - mergeMap(({ buffer }) => (buffer ? [buffer] : [])), - // if there were no lines, last() will error, so catch and complete - catchError(() => Rx.empty()) + Rx.takeLast(1), + Rx.mergeMap(({ buffer }) => (buffer ? [buffer] : [])) ) ); } diff --git a/packages/kbn-stdio-dev-helpers/src/observe_readable.ts b/packages/kbn-stdio-dev-helpers/src/observe_readable.ts index 29aa77a538601..fa087c299aa51 100644 --- a/packages/kbn-stdio-dev-helpers/src/observe_readable.ts +++ b/packages/kbn-stdio-dev-helpers/src/observe_readable.ts @@ -9,7 +9,6 @@ import { Readable } from 'stream'; import * as Rx from 'rxjs'; -import { first, ignoreElements, mergeMap } from 'rxjs/operators'; /** * Produces an Observable from a ReadableSteam that: @@ -18,11 +17,12 @@ import { first, ignoreElements, mergeMap } from 'rxjs/operators'; */ export function observeReadable(readable: Readable): Rx.Observable { return Rx.race( - Rx.fromEvent(readable, 'end').pipe(first(), ignoreElements()), - + Rx.fromEvent(readable, 'end').pipe(Rx.first(), Rx.ignoreElements()), Rx.fromEvent(readable, 'error').pipe( - first(), - mergeMap((err) => Rx.throwError(err)) + Rx.first(), + Rx.map((err) => { + throw err; + }) ) ); } diff --git a/packages/kbn-storybook/src/lib/default_config.ts b/packages/kbn-storybook/src/lib/default_config.ts index 3caf879c48cbb..0f0b8070ff8b0 100644 --- a/packages/kbn-storybook/src/lib/default_config.ts +++ b/packages/kbn-storybook/src/lib/default_config.ts @@ -14,6 +14,12 @@ import { REPO_ROOT } from './constants'; import { default as WebpackConfig } from '../webpack.config'; const toPath = (_path: string) => path.join(REPO_ROOT, _path); + +// This ignore pattern excludes all of node_modules EXCEPT for `@kbn`. This allows for +// changes to packages to cause a refresh in Storybook. +const IGNORE_PATTERN = + /[/\\]node_modules[/\\](?!@kbn[/\\][^/\\]+[/\\](?!node_modules)([^/\\]+))([^/\\]+[/\\][^/\\]+)/; + export const defaultConfig: StorybookConfig = { addons: ['@kbn/storybook/preset', '@storybook/addon-a11y', '@storybook/addon-essentials'], stories: ['../**/*.stories.tsx', '../**/*.stories.mdx'], @@ -45,6 +51,11 @@ export const defaultConfig: StorybookConfig = { } config.node = { fs: 'empty' }; + config.watch = true; + config.watchOptions = { + ...config.watchOptions, + ignored: [IGNORE_PATTERN], + }; // Remove when @storybook has moved to @emotion v11 // https://github.com/storybookjs/storybook/issues/13145 diff --git a/packages/kbn-test/BUILD.bazel b/packages/kbn-test/BUILD.bazel index 8a7aabdecd61e..f7599e6d81649 100644 --- a/packages/kbn-test/BUILD.bazel +++ b/packages/kbn-test/BUILD.bazel @@ -64,6 +64,7 @@ RUNTIME_DEPS = [ "@npm//jest-snapshot", "@npm//jest-styled-components", "@npm//joi", + "@npm//js-yaml", "@npm//mustache", "@npm//normalize-path", "@npm//parse-link-header", @@ -108,6 +109,7 @@ TYPES_DEPS = [ "@npm//@types/he", "@npm//@types/history", "@npm//@types/jest", + "@npm//@types/js-yaml", "@npm//@types/joi", "@npm//@types/lodash", "@npm//@types/mustache", diff --git a/packages/kbn-test/README.md b/packages/kbn-test/README.md index 3159e5c2492b4..72fb5c3358ce7 100644 --- a/packages/kbn-test/README.md +++ b/packages/kbn-test/README.md @@ -15,14 +15,14 @@ Functional testing methods exist in the `src/functional_tests` directory. They d #### runTests(configPaths: Array) For each config file specified in configPaths, starts Elasticsearch and Kibana once, runs tests specified in that config file, and shuts down Elasticsearch and Kibana once completed. (Repeats for every config file.) -`configPaths`: array of strings, each an absolute path to a config file that looks like [this](../../test/functional/config.js), following the config schema specified [here](../../src/functional_test_runner/lib/config/schema.js). +`configPaths`: array of strings, each an absolute path to a config file that looks like [this](../../test/functional/config.base.js), following the config schema specified [here](../../src/functional_test_runner/lib/config/schema.js). Internally the method that starts Elasticsearch comes from [kbn-es](../../packages/kbn-es). #### startServers(configPath: string) Starts Elasticsearch and Kibana servers given a specified config. -`configPath`: absolute path to a config file that looks like [this](../../test/functional/config.js), following the config schema specified [here](../../src/functional_test_runner/lib/config/schema.js). +`configPath`: absolute path to a config file that looks like [this](../../test/functional/config.base.js), following the config schema specified [here](../../src/functional_test_runner/lib/config/schema.js). Allows users to start another process to run just the tests while keeping the servers running with this method. Start servers _and_ run tests using the same config file ([see how](../../scripts/README.md)). diff --git a/packages/kbn-test/src/es/test_es_cluster.ts b/packages/kbn-test/src/es/test_es_cluster.ts index a12b1d852ced9..42dc19445c293 100644 --- a/packages/kbn-test/src/es/test_es_cluster.ts +++ b/packages/kbn-test/src/es/test_es_cluster.ts @@ -41,6 +41,7 @@ interface Node { ) => Promise<{ insallPath: string }>; start: (installPath: string, opts: Record) => Promise; stop: () => Promise; + kill: () => Promise; } export interface ICluster { @@ -268,20 +269,26 @@ export function createTestEsCluster< } async stop() { - const nodeStopPromises = []; - for (let i = 0; i < this.nodes.length; i++) { - nodeStopPromises.push(async () => { + await Promise.all( + this.nodes.map(async (node, i) => { log.info(`[es] stopping node ${nodes[i].name}`); - return await this.nodes[i].stop(); - }); - } - await Promise.all(nodeStopPromises.map(async (stop) => await stop())); + await node.stop(); + }) + ); log.info('[es] stopped'); } async cleanup() { - await this.stop(); + log.info('[es] killing', this.nodes.length === 1 ? 'node' : `${this.nodes.length} nodes`); + await Promise.all( + this.nodes.map(async (node, i) => { + log.info(`[es] stopping node ${nodes[i].name}`); + // we are deleting this install, stop ES more aggressively + await node.kill(); + }) + ); + await del(config.installPath, { force: true }); log.info('[es] cleanup complete'); } diff --git a/packages/kbn-test/src/functional_test_runner/cli.ts b/packages/kbn-test/src/functional_test_runner/cli.ts index ee01b0ccfde9c..4159533e628bc 100644 --- a/packages/kbn-test/src/functional_test_runner/cli.ts +++ b/packages/kbn-test/src/functional_test_runner/cli.ts @@ -98,11 +98,7 @@ export function runFtrCli() { }); } - try { - await functionalTestRunner.close(); - } finally { - process.exit(); - } + process.exit(); }; process.on('unhandledRejection', (err) => diff --git a/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts b/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts index 1ba99fc69a5d3..0ceba511f9b9b 100644 --- a/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts +++ b/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts @@ -14,10 +14,9 @@ import { REPO_ROOT } from '@kbn/utils'; import { Suite, Test } from './fake_mocha_types'; import { Lifecycle, - LifecyclePhase, - TestMetadata, readConfigFile, ProviderCollection, + Providers, readProviderSpec, setupMocha, runTests, @@ -29,10 +28,6 @@ import { import { createEsClientForFtrConfig } from '../es'; export class FunctionalTestRunner { - public readonly lifecycle = new Lifecycle(); - public readonly testMetadata = new TestMetadata(this.lifecycle); - private closed = false; - private readonly esVersion: EsVersion; constructor( private readonly log: ToolingLog, @@ -40,12 +35,6 @@ export class FunctionalTestRunner { private readonly configOverrides: any, esVersion?: string | EsVersion ) { - for (const [key, value] of Object.entries(this.lifecycle)) { - if (value instanceof LifecyclePhase) { - value.before$.subscribe(() => log.verbose('starting %j lifecycle phase', key)); - value.after$.subscribe(() => log.verbose('starting %j lifecycle phase', key)); - } - } this.esVersion = esVersion === undefined ? EsVersion.getDefault() @@ -55,19 +44,28 @@ export class FunctionalTestRunner { } async run() { - return await this._run(async (config, coreProviders) => { - SuiteTracker.startTracking(this.lifecycle, this.configFile); + const testStats = await this.getTestStats(); + + return await this.runHarness(async (config, lifecycle, coreProviders) => { + SuiteTracker.startTracking(lifecycle, this.configFile); + + const realServices = + !testStats || (testStats.testCount > 0 && testStats.nonSkippedTestCount > 0); - const providers = new ProviderCollection(this.log, [ - ...coreProviders, - ...readProviderSpec('Service', config.get('services')), - ...readProviderSpec('PageObject', config.get('pageObjects')), - ]); + const providers = realServices + ? new ProviderCollection(this.log, [ + ...coreProviders, + ...readProviderSpec('Service', config.get('services')), + ...readProviderSpec('PageObject', config.get('pageObjects')), + ]) + : this.getStubProviderCollection(config, coreProviders); - if (providers.hasService('es')) { - await this.validateEsVersion(config); + if (realServices) { + if (providers.hasService('es')) { + await this.validateEsVersion(config); + } + await providers.loadAll(); } - await providers.loadAll(); const customTestRunner = config.get('testRunner'); if (customTestRunner) { @@ -90,7 +88,7 @@ export class FunctionalTestRunner { } const mocha = await setupMocha( - this.lifecycle, + lifecycle, this.log, config, providers, @@ -108,10 +106,10 @@ export class FunctionalTestRunner { return this.simulateMochaDryRun(mocha); } - await this.lifecycle.beforeTests.trigger(mocha.suite); + await lifecycle.beforeTests.trigger(mocha.suite); this.log.info('Starting tests'); - return await runTests(this.lifecycle, mocha); + return await runTests(lifecycle, mocha); }); } @@ -143,60 +141,73 @@ export class FunctionalTestRunner { } async getTestStats() { - return await this._run(async (config, coreProviders) => { + return await this.runHarness(async (config, lifecycle, coreProviders) => { if (config.get('testRunner')) { - throw new Error('Unable to get test stats for config that uses a custom test runner'); + return; } - // replace the function of custom service providers so that they return - // promise-like objects which never resolve, essentially disabling them - // allowing us to load the test files and populate the mocha suites - const readStubbedProviderSpec = (type: string, providers: any, skip: string[]) => - readProviderSpec(type, providers).map((p) => ({ - ...p, - fn: skip.includes(p.name) - ? (ctx: any) => { - const result = ProviderCollection.callProviderFn(p.fn, ctx); - - if ('then' in result) { - throw new Error( - `Provider [${p.name}] returns a promise so it can't loaded during test analysis` - ); - } - - return result; - } - : () => ({ - then: () => {}, - }), - })); - - const providers = new ProviderCollection(this.log, [ - ...coreProviders, - ...readStubbedProviderSpec( - 'Service', - config.get('services'), - config.get('servicesRequiredForTestAnalysis') - ), - ...readStubbedProviderSpec('PageObject', config.get('pageObjects'), []), - ]); - - const mocha = await setupMocha(this.lifecycle, this.log, config, providers, this.esVersion); - - const countTests = (suite: Suite): number => - suite.suites.reduce((sum, s) => sum + countTests(s), suite.tests.length); + const providers = this.getStubProviderCollection(config, coreProviders); + const mocha = await setupMocha(lifecycle, this.log, config, providers, this.esVersion); + + const queue = new Set([mocha.suite]); + const allTests: Test[] = []; + for (const suite of queue) { + for (const test of suite.tests) { + allTests.push(test); + } + for (const childSuite of suite.suites) { + queue.add(childSuite); + } + } return { - testCount: countTests(mocha.suite), + testCount: allTests.length, + nonSkippedTestCount: allTests.filter((t) => !t.pending).length, testsExcludedByTag: mocha.testsExcludedByTag.map((t: Test) => t.fullTitle()), }; }); } - async _run( - handler: (config: Config, coreProvider: ReturnType) => Promise + private getStubProviderCollection(config: Config, coreProviders: Providers) { + // when we want to load the tests but not actually run anything we can + // use stubbed providers which allow mocha to do it's thing without taking + // too much time + const readStubbedProviderSpec = (type: string, providers: any, skip: string[]) => + readProviderSpec(type, providers).map((p) => ({ + ...p, + fn: skip.includes(p.name) + ? (ctx: any) => { + const result = ProviderCollection.callProviderFn(p.fn, ctx); + + if ('then' in result) { + throw new Error( + `Provider [${p.name}] returns a promise so it can't loaded during test analysis` + ); + } + + return result; + } + : () => ({ + then: () => {}, + }), + })); + + return new ProviderCollection(this.log, [ + ...coreProviders, + ...readStubbedProviderSpec( + 'Service', + config.get('services'), + config.get('servicesRequiredForTestAnalysis') + ), + ...readStubbedProviderSpec('PageObject', config.get('pageObjects'), []), + ]); + } + + private async runHarness( + handler: (config: Config, lifecycle: Lifecycle, coreProviders: Providers) => Promise ): Promise { let runErrorOccurred = false; + const lifecycle = new Lifecycle(this.log); try { const config = await readConfigFile( @@ -205,7 +216,7 @@ export class FunctionalTestRunner { this.configFile, this.configOverrides ); - this.log.info('Config loaded'); + this.log.debug('Config loaded'); if ( (!config.get('testFiles') || config.get('testFiles').length === 0) && @@ -217,26 +228,25 @@ export class FunctionalTestRunner { const dockerServers = new DockerServersService( config.get('dockerServers'), this.log, - this.lifecycle + lifecycle ); // base level services that functional_test_runner exposes const coreProviders = readProviderSpec('Service', { - lifecycle: () => this.lifecycle, + lifecycle: () => lifecycle, log: () => this.log, - testMetadata: () => this.testMetadata, config: () => config, dockerServers: () => dockerServers, esVersion: () => this.esVersion, }); - return await handler(config, coreProviders); + return await handler(config, lifecycle, coreProviders); } catch (runError) { runErrorOccurred = true; throw runError; } finally { try { - await this.close(); + await lifecycle.cleanup.trigger(); } catch (closeError) { if (runErrorOccurred) { this.log.error('failed to close functional_test_runner'); @@ -249,13 +259,6 @@ export class FunctionalTestRunner { } } - async close() { - if (this.closed) return; - - this.closed = true; - await this.lifecycle.cleanup.trigger(); - } - simulateMochaDryRun(mocha: any) { interface TestEntry { file: string; diff --git a/packages/kbn-test/src/functional_test_runner/index.ts b/packages/kbn-test/src/functional_test_runner/index.ts index b5d55c28ee9b2..1a8efb6097048 100644 --- a/packages/kbn-test/src/functional_test_runner/index.ts +++ b/packages/kbn-test/src/functional_test_runner/index.ts @@ -15,7 +15,6 @@ export { Lifecycle, LifecyclePhase, } from './lib'; -export type { ScreenshotRecord } from './lib'; export { runFtrCli } from './cli'; export * from './lib/docker_servers'; export * from './public_types'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/ftr_configs_manifest.ts b/packages/kbn-test/src/functional_test_runner/lib/config/ftr_configs_manifest.ts new file mode 100644 index 0000000000000..93cab4bfaac95 --- /dev/null +++ b/packages/kbn-test/src/functional_test_runner/lib/config/ftr_configs_manifest.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 Path from 'path'; +import Fs from 'fs'; + +import { REPO_ROOT } from '@kbn/utils'; +import JsYaml from 'js-yaml'; + +export const FTR_CONFIGS_MANIFEST_REL = '.buildkite/ftr_configs.yml'; + +const ftrConfigsManifest = JsYaml.safeLoad( + Fs.readFileSync(Path.resolve(REPO_ROOT, FTR_CONFIGS_MANIFEST_REL), 'utf8') +); + +export const FTR_CONFIGS_MANIFEST_PATHS = (Object.values(ftrConfigsManifest) as string[][]) + .flat() + .map((rel) => Path.resolve(REPO_ROOT, rel)); diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.ts similarity index 70% rename from packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js rename to packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.ts index d1ce17cc95b7b..29b723dae7195 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js +++ b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.ts @@ -14,36 +14,35 @@ import { EsVersion } from '../es_version'; const log = new ToolingLog(); const esVersion = new EsVersion('8.0.0'); +const CONFIG_PATH_1 = require.resolve('./__fixtures__/config.1.js'); +const CONFIG_PATH_2 = require.resolve('./__fixtures__/config.2.js'); +const CONFIG_PATH_INVALID = require.resolve('./__fixtures__/config.invalid.js'); + describe('readConfigFile()', () => { it('reads config from a file, returns an instance of Config class', async () => { - const config = await readConfigFile(log, esVersion, require.resolve('./__fixtures__/config.1')); + const config = await readConfigFile(log, esVersion, CONFIG_PATH_1); expect(config instanceof Config).toBeTruthy(); expect(config.get('testFiles')).toEqual(['config.1']); }); it('merges setting overrides into log', async () => { - const config = await readConfigFile( - log, - esVersion, - require.resolve('./__fixtures__/config.1'), - { - screenshots: { - directory: 'foo.bar', - }, - } - ); + const config = await readConfigFile(log, esVersion, CONFIG_PATH_1, { + screenshots: { + directory: 'foo.bar', + }, + }); expect(config.get('screenshots.directory')).toBe('foo.bar'); }); it('supports loading config files from within config files', async () => { - const config = await readConfigFile(log, esVersion, require.resolve('./__fixtures__/config.2')); + const config = await readConfigFile(log, esVersion, CONFIG_PATH_2); expect(config.get('testFiles')).toEqual(['config.1', 'config.2']); }); it('throws if settings are invalid', async () => { try { - await readConfigFile(log, esVersion, require.resolve('./__fixtures__/config.invalid')); + await readConfigFile(log, esVersion, CONFIG_PATH_INVALID); throw new Error('expected readConfigFile() to fail'); } catch (err) { expect(err.message).toMatch(/"foo"/); diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts index d026842f3a4f1..24702d699064c 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts @@ -6,25 +6,41 @@ * Side Public License, v 1. */ +import Path from 'path'; import { ToolingLog } from '@kbn/tooling-log'; import { defaultsDeep } from 'lodash'; +import { createFlagError } from '@kbn/dev-utils'; import { Config } from './config'; import { EsVersion } from '../es_version'; +import { FTR_CONFIGS_MANIFEST_REL, FTR_CONFIGS_MANIFEST_PATHS } from './ftr_configs_manifest'; const cache = new WeakMap(); async function getSettingsFromFile( log: ToolingLog, esVersion: EsVersion, - path: string, - settingOverrides: any + options: { + path: string; + settingOverrides: any; + primary: boolean; + } ) { - const configModule = require(path); // eslint-disable-line @typescript-eslint/no-var-requires + if ( + options.primary && + !FTR_CONFIGS_MANIFEST_PATHS.includes(options.path) && + !options.path.includes(`${Path.sep}__fixtures__${Path.sep}`) + ) { + throw createFlagError( + `Refusing to load FTR Config which is not listed in [${FTR_CONFIGS_MANIFEST_REL}]. All FTR Config files must be listed there, use the "enabled" key if the FTR Config should be run on automatically on PR CI, or the "disabled" key if it is run manually or by a special job.` + ); + } + + const configModule = require(options.path); // eslint-disable-line @typescript-eslint/no-var-requires const configProvider = configModule.__esModule ? configModule.default : configModule; if (!cache.has(configProvider)) { - log.debug('Loading config file from %j', path); + log.debug('Loading config file from %j', options.path); cache.set( configProvider, configProvider({ @@ -32,7 +48,11 @@ async function getSettingsFromFile( esVersion, async readConfigFile(p: string, o: any) { return new Config({ - settings: await getSettingsFromFile(log, esVersion, p, o), + settings: await getSettingsFromFile(log, esVersion, { + path: p, + settingOverrides: o, + primary: false, + }), primary: false, path: p, }); @@ -43,7 +63,7 @@ async function getSettingsFromFile( const settingsWithDefaults: any = defaultsDeep( {}, - settingOverrides, + options.settingOverrides, await cache.get(configProvider)! ); @@ -57,7 +77,11 @@ export async function readConfigFile( settingOverrides: any = {} ) { return new Config({ - settings: await getSettingsFromFile(log, esVersion, path, settingOverrides), + settings: await getSettingsFromFile(log, esVersion, { + path, + settingOverrides, + primary: true, + }), primary: true, path, }); 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 17c3af046f92f..d2182064d352e 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 @@ -226,6 +226,11 @@ export const schema = Joi.object() wait: Joi.object() .regex() .default(/Kibana is now available/), + + /** + * Does this test config only work when run against source? + */ + alwaysUseSource: Joi.boolean().default(false), }) .default(), env: Joi.object().unknown().default(), diff --git a/packages/kbn-test/src/functional_test_runner/lib/index.ts b/packages/kbn-test/src/functional_test_runner/lib/index.ts index 077a62e8e74e5..9f637f8bd5b4f 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/index.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/index.ts @@ -12,7 +12,6 @@ export { readConfigFile, Config } from './config'; export * from './providers'; // @internal export { runTests, setupMocha } from './mocha'; -export * from './test_metadata'; export * from './docker_servers'; export { SuiteTracker } from './suite_tracker'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/lifecycle.ts b/packages/kbn-test/src/functional_test_runner/lib/lifecycle.ts index e683ec23a8d84..230eacb91008e 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/lifecycle.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/lifecycle.ts @@ -6,29 +6,51 @@ * Side Public License, v 1. */ +import * as Rx from 'rxjs'; +import { ToolingLog } from '@kbn/tooling-log'; + import { LifecyclePhase } from './lifecycle_phase'; import { Suite, Test } from '../fake_mocha_types'; export class Lifecycle { + /** root subscription to cleanup lifecycle phases when lifecycle completes */ + private readonly sub = new Rx.Subscription(); + /** lifecycle phase that will run handlers once before tests execute */ - public readonly beforeTests = new LifecyclePhase<[Suite]>({ + public readonly beforeTests = new LifecyclePhase<[Suite]>(this.sub, { singular: true, }); /** lifecycle phase that runs handlers before each runnable (test and hooks) */ - public readonly beforeEachRunnable = new LifecyclePhase<[Test]>(); + public readonly beforeEachRunnable = new LifecyclePhase<[Test]>(this.sub); /** lifecycle phase that runs handlers before each suite */ - public readonly beforeTestSuite = new LifecyclePhase<[Suite]>(); + public readonly beforeTestSuite = new LifecyclePhase<[Suite]>(this.sub); /** lifecycle phase that runs handlers before each test */ - public readonly beforeEachTest = new LifecyclePhase<[Test]>(); + public readonly beforeEachTest = new LifecyclePhase<[Test]>(this.sub); /** lifecycle phase that runs handlers after each suite */ - public readonly afterTestSuite = new LifecyclePhase<[Suite]>(); + public readonly afterTestSuite = new LifecyclePhase<[Suite]>(this.sub); /** lifecycle phase that runs handlers after a test fails */ - public readonly testFailure = new LifecyclePhase<[Error, Test]>(); + public readonly testFailure = new LifecyclePhase<[Error, Test]>(this.sub); /** lifecycle phase that runs handlers after a hook fails */ - public readonly testHookFailure = new LifecyclePhase<[Error, Test]>(); + public readonly testHookFailure = new LifecyclePhase<[Error, Test]>(this.sub); /** lifecycle phase that runs handlers at the very end of execution */ - public readonly cleanup = new LifecyclePhase<[]>({ + public readonly cleanup = new LifecyclePhase<[]>(this.sub, { singular: true, }); + + constructor(log: ToolingLog) { + for (const [name, phase] of Object.entries(this)) { + if (phase instanceof LifecyclePhase) { + phase.before$.subscribe(() => log.verbose('starting %j lifecycle phase', name)); + phase.after$.subscribe(() => log.verbose('starting %j lifecycle phase', name)); + } + } + + // after the singular cleanup lifecycle phase completes unsubscribe from the root subscription + this.cleanup.after$.pipe(Rx.materialize()).subscribe((n) => { + if (n.kind === 'C') { + this.sub.unsubscribe(); + } + }); + } } diff --git a/packages/kbn-test/src/functional_test_runner/lib/lifecycle_phase.test.ts b/packages/kbn-test/src/functional_test_runner/lib/lifecycle_phase.test.ts index 503a9490f2664..47ab24169d204 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/lifecycle_phase.test.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/lifecycle_phase.test.ts @@ -26,7 +26,7 @@ describe('with randomness', () => { }); it('calls handlers in random order', async () => { - const phase = new LifecyclePhase(); + const phase = new LifecyclePhase(new Rx.Subscription()); const order: string[] = []; phase.add( @@ -69,7 +69,7 @@ describe('without randomness', () => { afterEach(() => jest.restoreAllMocks()); it('calls all handlers and throws first error', async () => { - const phase = new LifecyclePhase(); + const phase = new LifecyclePhase(new Rx.Subscription()); const fn1 = jest.fn(); phase.add(fn1); @@ -88,7 +88,7 @@ describe('without randomness', () => { }); it('triggers before$ just before calling handler and after$ once it resolves', async () => { - const phase = new LifecyclePhase(); + const phase = new LifecyclePhase(new Rx.Subscription()); const order: string[] = []; const beforeSub = jest.fn(() => order.push('before')); @@ -116,7 +116,7 @@ describe('without randomness', () => { }); it('completes before$ and after$ if phase is singular', async () => { - const phase = new LifecyclePhase({ singular: true }); + const phase = new LifecyclePhase(new Rx.Subscription(), { singular: true }); const beforeNotifs: Array> = []; phase.before$.pipe(materialize()).subscribe((n) => beforeNotifs.push(n)); @@ -160,7 +160,7 @@ describe('without randomness', () => { }); it('completes before$ subscribers after trigger of singular phase', async () => { - const phase = new LifecyclePhase({ singular: true }); + const phase = new LifecyclePhase(new Rx.Subscription(), { singular: true }); await phase.trigger(); await expect(phase.before$.pipe(materialize(), toArray()).toPromise()).resolves @@ -177,7 +177,7 @@ describe('without randomness', () => { }); it('replays after$ event subscribers after trigger of singular phase', async () => { - const phase = new LifecyclePhase({ singular: true }); + const phase = new LifecyclePhase(new Rx.Subscription(), { singular: true }); await phase.trigger(); await expect(phase.after$.pipe(materialize(), toArray()).toPromise()).resolves diff --git a/packages/kbn-test/src/functional_test_runner/lib/lifecycle_phase.ts b/packages/kbn-test/src/functional_test_runner/lib/lifecycle_phase.ts index 09e7c6f3b8d15..df4b26230d4da 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/lifecycle_phase.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/lifecycle_phase.ts @@ -26,6 +26,7 @@ export class LifecyclePhase { public readonly after$: Rx.Observable; constructor( + sub: Rx.Subscription, private readonly options: { singular?: boolean; } = {} @@ -35,6 +36,12 @@ export class LifecyclePhase { this.afterSubj = this.options.singular ? new Rx.ReplaySubject(1) : new Rx.Subject(); this.after$ = this.afterSubj.asObservable(); + + sub.add(() => { + this.beforeSubj.complete(); + this.afterSubj.complete(); + this.handlers.length = 0; + }); } public add(fn: (...args: Args) => Promise | void) { 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 b9d4ed6ef7b5e..62104cebf9cba 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 @@ -12,6 +12,32 @@ import { createAssignmentProxy } from './assignment_proxy'; import { wrapFunction } from './wrap_function'; import { wrapRunnableArgs } from './wrap_runnable_args'; +const allTestsSkippedCache = new WeakMap(); +function allTestsAreSkipped(suite) { + // cache result for each suite so we don't have to traverse over and over + const cache = allTestsSkippedCache.get(suite); + if (cache) { + return cache; + } + + // if this suite is skipped directly then all it's children are skipped + if (suite.pending) { + allTestsSkippedCache.set(suite, true); + return true; + } + + // if any of this suites own tests are not skipped, then we don't need to traverse to child suites + if (suite.tests.some((t) => !t.pending)) { + allTestsSkippedCache.set(suite, false); + return false; + } + + // otherwise traverse down through the child suites and return true only if all children are all skipped + const childrenSkipped = suite.suites.every(allTestsAreSkipped); + allTestsSkippedCache.set(suite, childrenSkipped); + return childrenSkipped; +} + export function decorateMochaUi(log, lifecycle, context, { rootTags }) { // incremented at the start of each suite, decremented after // so that in each non-suite call we can know if we are within @@ -71,6 +97,12 @@ export function decorateMochaUi(log, lifecycle, context, { rootTags }) { provider.call(this); + if (allTestsAreSkipped(this)) { + // all the children in this suite are skipped, so make sure the suite is + // marked as pending so that its hooks are not run + this.pending = true; + } + after('afterTestSuite.trigger', async () => { await lifecycle.afterTestSuite.trigger(this); }); diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.test.js b/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.test.js index 191503af123d0..3d1867aa0eed0 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.test.js +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.test.js @@ -69,6 +69,9 @@ function setup({ include, exclude, esVersion }) { info(...args) { history.push(`info: ${format(...args)}`); }, + debug(...args) { + history.push(`debg: ${format(...args)}`); + }, }, mocha, include, @@ -221,7 +224,7 @@ it(`excludes tests which don't meet the esVersionRequirement`, async () => { expect(history).toMatchInlineSnapshot(` Array [ - "info: Only running suites which are compatible with ES version 9.0.0", + "debg: Only running suites which are compatible with ES version 9.0.0", "suite: ", "suite: level 1", "suite: level 1 level 1a", diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts b/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts index 98db434b3b088..6bb95acd407de 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts @@ -44,7 +44,7 @@ export function filterSuites({ log, mocha, include, exclude, esVersion }: Option if (esVersion) { // traverse the test graph and exclude any tests which don't meet their esVersionRequirement - log.info('Only running suites which are compatible with ES version', esVersion.toString()); + log.debug('Only running suites which are compatible with ES version', esVersion.toString()); (function recurse(parentSuite: SuiteInternal) { const children = parentSuite.suites; parentSuite.suites = []; diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts index ee993122d7d9c..96900555db745 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts @@ -17,7 +17,6 @@ import { import { Config } from '../../config'; import { Runner } from '../../../fake_mocha_types'; -import { TestMetadata, ScreenshotRecord } from '../../test_metadata'; import { Lifecycle } from '../../lifecycle'; import { getSnapshotOfRunnableLogs } from '../../../../mocha'; @@ -36,7 +35,6 @@ interface Runnable { file: string; title: string; parent: Suite; - _screenshots?: ScreenshotRecord[]; } function getHookType(hook: Runnable): CiStatsTestType { @@ -60,15 +58,18 @@ export function setupCiStatsFtrTestGroupReporter({ config, lifecycle, runner, - testMetadata, reporter, }: { config: Config; lifecycle: Lifecycle; runner: Runner; - testMetadata: TestMetadata; reporter: CiStatsReporter; }) { + const testGroupType = process.env.TEST_GROUP_TYPE_FUNCTIONAL; + if (!testGroupType) { + throw new Error('missing process.env.TEST_GROUP_TYPE_FUNCTIONAL'); + } + let startMs: number | undefined; runner.on('start', () => { startMs = Date.now(); @@ -78,7 +79,7 @@ export function setupCiStatsFtrTestGroupReporter({ const group: CiStatsReportTestsOptions['group'] = { startTime: new Date(start).toJSON(), durationMs: 0, - type: config.path.startsWith('x-pack') ? 'X-Pack Functional Tests' : 'Functional Tests', + type: testGroupType, name: Path.relative(REPO_ROOT, config.path), result: 'skip', meta: { @@ -106,10 +107,6 @@ export function setupCiStatsFtrTestGroupReporter({ type, error: error?.stack, stdout: getSnapshotOfRunnableLogs(runnable), - screenshots: testMetadata.getScreenshots(runnable).map((s) => ({ - base64Png: s.base64Png, - name: s.name, - })), }); } diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js index 973a552ebb728..66a4c9ce4fd04 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js @@ -24,7 +24,6 @@ export function MochaReporterProvider({ getService }) { const log = getService('log'); const config = getService('config'); const lifecycle = getService('lifecycle'); - const testMetadata = getService('testMetadata'); let originalLogWriters; let reporterCaptureStartTime; @@ -61,7 +60,6 @@ export function MochaReporterProvider({ getService }) { config, lifecycle, runner, - testMetadata, }); } } diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/validate_ci_group_tags.js b/packages/kbn-test/src/functional_test_runner/lib/mocha/validate_ci_group_tags.js index 4f798839d7231..a0298b635a135 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/validate_ci_group_tags.js +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/validate_ci_group_tags.js @@ -48,8 +48,10 @@ export function validateCiGroupTags(log, mocha) { const queue = [mocha.suite]; while (queue.length) { const suite = queue.shift(); - if (getCiGroups(suite).length > 1) { - suitesWithMultipleCiGroups.push(suite); + if (getCiGroups(suite).length) { + throw new Error( + 'ciGroups are no longer needed and should be removed. If you need to split up your FTR config because it is taking too long to complete then create one or more a new FTR config files and split your test files amoungst them' + ); } else { queue.push(...(suite.suites ?? [])); } diff --git a/packages/kbn-test/src/functional_test_runner/lib/providers/index.ts b/packages/kbn-test/src/functional_test_runner/lib/providers/index.ts index 578e41ca8e827..c0b85370d321c 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/providers/index.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/providers/index.ts @@ -7,6 +7,6 @@ */ export { ProviderCollection } from './provider_collection'; -export { readProviderSpec } from './read_provider_spec'; +export * from './read_provider_spec'; export { createAsyncInstance } from './async_instance'; export type { Provider } from './read_provider_spec'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/snapshots/decorate_snapshot_ui.test.ts b/packages/kbn-test/src/functional_test_runner/lib/snapshots/decorate_snapshot_ui.test.ts index c199dfc092789..403708b893db8 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/snapshots/decorate_snapshot_ui.test.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/snapshots/decorate_snapshot_ui.test.ts @@ -6,11 +6,14 @@ * Side Public License, v 1. */ +import path from 'path'; +import fs from 'fs'; + +import { ToolingLog } from '@kbn/tooling-log'; + import { Suite, Test } from '../../fake_mocha_types'; import { Lifecycle } from '../lifecycle'; import { decorateSnapshotUi, expectSnapshot } from './decorate_snapshot_ui'; -import path from 'path'; -import fs from 'fs'; const createRootSuite = () => { const suite = { @@ -65,7 +68,7 @@ describe('decorateSnapshotUi', () => { let lifecycle: Lifecycle; let rootSuite: Suite; beforeEach(async () => { - lifecycle = new Lifecycle(); + lifecycle = new Lifecycle(new ToolingLog()); rootSuite = createRootSuite(); decorateSnapshotUi({ lifecycle, updateSnapshots: false, isCi: false }); @@ -116,7 +119,7 @@ describe('decorateSnapshotUi', () => { let lifecycle: Lifecycle; let rootSuite: Suite; beforeEach(async () => { - lifecycle = new Lifecycle(); + lifecycle = new Lifecycle(new ToolingLog()); rootSuite = createRootSuite(); decorateSnapshotUi({ lifecycle, updateSnapshots: false, isCi: false }); @@ -162,7 +165,7 @@ exports[\`Test2 1\`] = \`"bar"\`; let lifecycle: Lifecycle; let rootSuite: Suite; beforeEach(async () => { - lifecycle = new Lifecycle(); + lifecycle = new Lifecycle(new ToolingLog()); rootSuite = createRootSuite(); decorateSnapshotUi({ lifecycle, updateSnapshots: true, isCi: false }); @@ -185,7 +188,7 @@ exports[\`Test2 1\`] = \`"bar"\`; fs.writeFileSync( snapshotFile, `// Jest Snapshot v1, https://goo.gl/fbAQLP - + exports[\`Test 1\`] = \`"foo"\`; `, { encoding: 'utf-8' } @@ -219,7 +222,7 @@ exports[\`Test2 1\`] = \`"bar"\`; let lifecycle: Lifecycle; let rootSuite: Suite; beforeEach(async () => { - lifecycle = new Lifecycle(); + lifecycle = new Lifecycle(new ToolingLog()); rootSuite = createRootSuite(); decorateSnapshotUi({ lifecycle, updateSnapshots: false, isCi: true }); diff --git a/packages/kbn-test/src/functional_test_runner/lib/suite_tracker.test.ts b/packages/kbn-test/src/functional_test_runner/lib/suite_tracker.test.ts index 53ce4c74c1388..43f1508ab7938 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/suite_tracker.test.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/suite_tracker.test.ts @@ -9,6 +9,8 @@ import fs from 'fs'; import { join, resolve } from 'path'; +import { ToolingLog } from '@kbn/tooling-log'; + jest.mock('fs'); jest.mock('@kbn/utils', () => { return { REPO_ROOT: '/dev/null/root' }; @@ -60,7 +62,7 @@ describe('SuiteTracker', () => { }; const runLifecycleWithMocks = async (mocks: Suite[], fn: (objs: any) => any = () => {}) => { - const lifecycle = new Lifecycle(); + const lifecycle = new Lifecycle(new ToolingLog()); const suiteTracker = SuiteTracker.startTracking( lifecycle, resolve(REPO_ROOT, MOCK_CONFIG_PATH) diff --git a/packages/kbn-test/src/functional_test_runner/lib/test_metadata.ts b/packages/kbn-test/src/functional_test_runner/lib/test_metadata.ts deleted file mode 100644 index 5789231f87044..0000000000000 --- a/packages/kbn-test/src/functional_test_runner/lib/test_metadata.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 { Lifecycle } from './lifecycle'; - -export interface ScreenshotRecord { - name: string; - base64Png: string; - baselinePath?: string; - failurePath?: string; -} - -export class TestMetadata { - // mocha's global types mean we can't import Mocha or it will override the global jest types.............. - private currentRunnable?: any; - - constructor(lifecycle: Lifecycle) { - lifecycle.beforeEachRunnable.add((runnable) => { - this.currentRunnable = runnable; - }); - } - - addScreenshot(screenshot: ScreenshotRecord) { - this.currentRunnable._screenshots = (this.currentRunnable._screenshots || []).concat( - screenshot - ); - } - - getScreenshots(test: any): ScreenshotRecord[] { - if (!test || typeof test !== 'object' || !test._screenshots) { - return []; - } - - return test._screenshots.slice(); - } -} diff --git a/packages/kbn-test/src/functional_test_runner/public_types.ts b/packages/kbn-test/src/functional_test_runner/public_types.ts index 2d632b28d6e21..67adceaf22323 100644 --- a/packages/kbn-test/src/functional_test_runner/public_types.ts +++ b/packages/kbn-test/src/functional_test_runner/public_types.ts @@ -8,10 +8,10 @@ import type { ToolingLog } from '@kbn/tooling-log'; -import type { Config, Lifecycle, TestMetadata, DockerServersService, EsVersion } from './lib'; +import type { Config, Lifecycle, DockerServersService, EsVersion } from './lib'; import type { Test, Suite } from './fake_mocha_types'; -export { Lifecycle, Config, TestMetadata }; +export { Lifecycle, Config }; export interface AsyncInstance { /** @@ -56,9 +56,7 @@ export interface GenericFtrProviderContext< * Determine if a service is avaliable * @param serviceName */ - hasService( - serviceName: 'config' | 'log' | 'lifecycle' | 'testMetadata' | 'dockerServers' | 'esVersion' - ): true; + hasService(serviceName: 'config' | 'log' | 'lifecycle' | 'dockerServers' | 'esVersion'): true; hasService(serviceName: K): serviceName is K; hasService(serviceName: string): serviceName is Extract; @@ -71,7 +69,6 @@ export interface GenericFtrProviderContext< getService(serviceName: 'log'): ToolingLog; getService(serviceName: 'lifecycle'): Lifecycle; getService(serviceName: 'dockerServers'): DockerServersService; - getService(serviceName: 'testMetadata'): TestMetadata; getService(serviceName: 'esVersion'): EsVersion; getService(serviceName: T): ServiceMap[T]; diff --git a/packages/kbn-test/src/functional_tests/lib/run_ftr.ts b/packages/kbn-test/src/functional_tests/lib/run_ftr.ts index 6887a664d6657..4c4a7128a05a9 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_ftr.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_ftr.ts @@ -90,6 +90,9 @@ export async function assertNoneExcluded({ configPath, options }: CreateFtrParam } const stats = await ftr.getTestStats(); + if (!stats) { + throw new Error('unable to get test stats'); + } if (stats.testsExcludedByTag.length > 0) { throw new CliError(` ${stats.testsExcludedByTag.length} tests in the ${configPath} config @@ -122,5 +125,8 @@ export async function hasTests({ configPath, options }: CreateFtrParams) { return true; } const stats = await ftr.getTestStats(); - return stats.testCount > 0; + if (!stats) { + throw new Error('unable to get test stats'); + } + return stats.nonSkippedTestCount > 0; } 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 index 6305e522b3929..47d0b1c93b620 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_kibana_server.ts @@ -36,13 +36,13 @@ export async function runKibanaServer({ config: Config; options: { installDir?: string; extraKbnOpts?: string[] }; }) { - const { installDir } = options; const runOptions = config.get('kbnTestServer.runOptions'); + const installDir = runOptions.alwaysUseSource ? undefined : options.installDir; const env = config.get('kbnTestServer.env'); await procs.run('kibana', { cmd: getKibanaCmd(installDir), - args: filterCliArgs(collectCliArgs(config, options)), + args: filterCliArgs(collectCliArgs(config, installDir, options.extraKbnOpts)), env: { FORCE_COLOR: 1, ...process.env, @@ -70,10 +70,7 @@ function getKibanaCmd(installDir?: string) { * 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[] } -) { +function collectCliArgs(config: Config, 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') || []; @@ -82,7 +79,7 @@ function collectCliArgs( serverArgs, (args) => (installDir ? args.filter((a: string) => a !== '--oss') : args), (args) => (installDir ? [...buildArgs, ...args] : [KIBANA_EXEC_PATH, ...sourceArgs, ...args]), - (args) => args.concat(extraKbnOpts || []) + (args) => args.concat(extraKbnOpts) ); } diff --git a/packages/kbn-test/src/functional_tests/tasks.ts b/packages/kbn-test/src/functional_tests/tasks.ts index 8116fa25650a1..dd9fe4c93016c 100644 --- a/packages/kbn-test/src/functional_tests/tasks.ts +++ b/packages/kbn-test/src/functional_tests/tasks.ts @@ -8,6 +8,7 @@ import { relative } from 'path'; import * as Rx from 'rxjs'; +import { setTimeout } from 'timers/promises'; import { startWith, switchMap, take } from 'rxjs/operators'; import { withProcRunner } from '@kbn/dev-utils'; import { ToolingLog } from '@kbn/tooling-log'; @@ -63,7 +64,7 @@ interface RunTestsParams extends CreateFtrOptions { assertNoneExcluded: boolean; } export async function runTests(options: RunTestsParams) { - if (!process.env.KBN_NP_PLUGINS_BUILT && !options.assertNoneExcluded) { + if (!process.env.CI && !options.assertNoneExcluded) { const log = options.createLogger(); log.warning('❗️❗️❗️'); log.warning('❗️❗️❗️'); @@ -91,21 +92,18 @@ export async function runTests(options: RunTestsParams) { return; } - log.write('--- determining which ftr configs to run'); - const configPathsWithTests: string[] = []; - for (const configPath of options.configs) { - log.info('testing', relative(REPO_ROOT, configPath)); - await log.indent(4, async () => { - if (await hasTests({ configPath, options: { ...options, log } })) { - configPathsWithTests.push(configPath); + for (const [i, configPath] of options.configs.entries()) { + await log.indent(0, async () => { + if (options.configs.length > 1) { + const progress = `${i + 1}/${options.configs.length}`; + log.write(`--- [${progress}] Running ${relative(REPO_ROOT, configPath)}`); } - }); - } - for (const [i, configPath] of configPathsWithTests.entries()) { - await log.indent(0, async () => { - const progress = `${i + 1}/${configPathsWithTests.length}`; - log.write(`--- [${progress}] Running ${relative(REPO_ROOT, configPath)}`); + if (!(await hasTests({ configPath, options: { ...options, log } }))) { + // just run the FTR, no Kibana or ES, which will quickly report a skipped test group to ci-stats and continue + await runFtr({ configPath, options: { ...options, log } }); + return; + } await withProcRunner(log, async (procs) => { const config = await readConfigFile(log, options.esVersion, configPath); @@ -122,7 +120,7 @@ export async function runTests(options: RunTestsParams) { 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 setTimeout(delay); } await procs.stop('kibana'); diff --git a/scripts/README.md b/scripts/README.md index 960e8ab2ed0b8..a743ce5e1d53d 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -17,13 +17,13 @@ This directory is excluded from the build and tools within it should help users ## Functional Test Scripts -**`node scripts/functional_tests [--config test/functional/config.js --config test/api_integration/config.js]`** +**`node scripts/functional_tests [--config test/functional/config.base.js --config test/api_integration/config.js]`** Runs all the functional tests: selenium tests and api integration tests. List configs with multiple `--config` arguments. Uses the [@kbn/test](../packages/kbn-test) library to run Elasticsearch and Kibana servers and tests against those servers, for multiple server+test setups. In particular, calls out to [`runTests()`](../packages/kbn-test/src/functional_tests/tasks.js). Can be run on a single config. -**`node scripts/functional_tests_server [--config test/functional/config.js]`** +**`node scripts/functional_tests_server [--config test/functional/config.base.js]`** -Starts just the Elasticsearch and Kibana servers given a single config, i.e. via `--config test/functional/config.js` or `--config test/api_integration/config`. Allows the user to start just the servers with this script, and keep them running while running tests against these servers. The idea is that the same config file configures both Elasticsearch and Kibana servers. Uses the [`startServers()`](../packages/kbn-test/src/functional_tests/tasks.js#L52-L80) method from [@kbn/test](../packages/kbn-test) library. +Starts just the Elasticsearch and Kibana servers given a single config, i.e. via `--config test/functional/config.base.js` or `--config test/api_integration/config`. Allows the user to start just the servers with this script, and keep them running while running tests against these servers. The idea is that the same config file configures both Elasticsearch and Kibana servers. Uses the [`startServers()`](../packages/kbn-test/src/functional_tests/tasks.js#L52-L80) method from [@kbn/test](../packages/kbn-test) library. Example. Start servers _and_ run tests, separately, but using the same config: @@ -51,7 +51,7 @@ If you wish to load up specific es archived data for your test, you can do so vi node scripts/es_archiver.js load [--es-url=http://username:password@localhost:9200] [--kibana-url=http://username:password@localhost:5601/{basepath?}] ``` -That will load the specified archive located in the archive directory specified by the default functional config file, located in `test/functional/config.js`. To load archives from other function config files you can pass `--config path/to/config.js`. +That will load the specified archive located in the archive directory specified by the default functional config file, located in `test/functional/config.base.js`. To load archives from other function config files you can pass `--config path/to/config.js`. *Note:* The `--es-url` and `--kibana-url` options may or may not be neccessary depending on your current Kibana configuration settings, and their values may also change based on those settings (for example if you are not running with security you will not need the `username:password` portion). diff --git a/scripts/functional_tests.js b/scripts/functional_tests.js index 1e963660a1e03..eb1dea2dcab36 100644 --- a/scripts/functional_tests.js +++ b/scripts/functional_tests.js @@ -7,26 +7,4 @@ */ require('../src/setup_node_env'); -require('@kbn/test').runTestsCli([ - require.resolve('../test/functional/config.ccs.ts'), - require.resolve('../test/functional/config.js'), - require.resolve('../test/plugin_functional/config.ts'), - require.resolve('../test/ui_capabilities/newsfeed_err/config.ts'), - require.resolve('../test/new_visualize_flow/config.ts'), - require.resolve('../test/interactive_setup_api_integration/enrollment_flow.config.ts'), - require.resolve('../test/interactive_setup_api_integration/manual_configuration_flow.config.ts'), - require.resolve( - '../test/interactive_setup_api_integration/manual_configuration_flow_without_tls.config.ts' - ), - require.resolve('../test/interactive_setup_functional/enrollment_token.config.ts'), - require.resolve('../test/interactive_setup_functional/manual_configuration.config.ts'), - require.resolve( - '../test/interactive_setup_functional/manual_configuration_without_security.config.ts' - ), - require.resolve( - '../test/interactive_setup_functional/manual_configuration_without_tls.config.ts' - ), - require.resolve('../test/api_integration/config.js'), - require.resolve('../test/interpreter_functional/config.ts'), - require.resolve('../test/examples/config.js'), -]); +require('@kbn/test').runTestsCli(); diff --git a/scripts/functional_tests_server.js b/scripts/functional_tests_server.js index 4995eba4de670..836a1ede126e3 100644 --- a/scripts/functional_tests_server.js +++ b/scripts/functional_tests_server.js @@ -7,4 +7,4 @@ */ require('../src/setup_node_env'); -require('@kbn/test').startServersCli(require.resolve('../test/functional/config.js')); +require('@kbn/test').startServersCli(require.resolve('../test/functional/config.base.js')); diff --git a/src/core/public/analytics/analytics_service.mock.ts b/src/core/public/analytics/analytics_service.mock.ts index c14d4a8216850..9037a756473c3 100644 --- a/src/core/public/analytics/analytics_service.mock.ts +++ b/src/core/public/analytics/analytics_service.mock.ts @@ -40,6 +40,7 @@ const createAnalyticsServiceMock = (): jest.Mocked => return { setup: jest.fn().mockImplementation(createAnalyticsServiceSetup), start: jest.fn().mockImplementation(createAnalyticsServiceStart), + stop: jest.fn(), }; }; diff --git a/src/core/public/analytics/analytics_service.ts b/src/core/public/analytics/analytics_service.ts index 89e83c7e3c85b..86b0977faa0c0 100644 --- a/src/core/public/analytics/analytics_service.ts +++ b/src/core/public/analytics/analytics_service.ts @@ -16,7 +16,7 @@ import { createLogger } from './logger'; * {@link AnalyticsClient} * @public */ -export type AnalyticsServiceSetup = AnalyticsClient; +export type AnalyticsServiceSetup = Omit; /** * Exposes the public APIs of the AnalyticsClient during the start phase * {@link AnalyticsClient} @@ -58,4 +58,7 @@ export class AnalyticsService { telemetryCounter$: this.analyticsClient.telemetryCounter$, }; } + public stop() { + this.analyticsClient.shutdown(); + } } diff --git a/src/core/public/core_system.ts b/src/core/public/core_system.ts index 726f53a345208..9334dd579f0f3 100644 --- a/src/core/public/core_system.ts +++ b/src/core/public/core_system.ts @@ -300,6 +300,7 @@ export class CoreSystem { this.application.stop(); this.deprecations.stop(); this.theme.stop(); + this.analytics.stop(); this.rootDomElement.textContent = ''; } } diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index 2a662e3f7f8bd..3e431f07bd1cf 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -69,7 +69,7 @@ export { AnalyticsClient } // Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver // // @public -export type AnalyticsServiceSetup = AnalyticsClient; +export type AnalyticsServiceSetup = Omit; // Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver // diff --git a/src/core/server/analytics/analytics_service.mock.ts b/src/core/server/analytics/analytics_service.mock.ts index 74f675ac37b8f..7a00e573f3e7b 100644 --- a/src/core/server/analytics/analytics_service.mock.ts +++ b/src/core/server/analytics/analytics_service.mock.ts @@ -54,6 +54,7 @@ const createAnalyticsServiceMock = (): jest.Mocked => preboot: jest.fn().mockImplementation(createAnalyticsServicePreboot), setup: jest.fn().mockImplementation(createAnalyticsServiceSetup), start: jest.fn().mockImplementation(createAnalyticsServiceStart), + stop: jest.fn(), }; }; diff --git a/src/core/server/analytics/analytics_service.ts b/src/core/server/analytics/analytics_service.ts index 4262a966ceb10..3afc997fd52ea 100644 --- a/src/core/server/analytics/analytics_service.ts +++ b/src/core/server/analytics/analytics_service.ts @@ -15,13 +15,13 @@ import type { CoreContext } from '../core_context'; * {@link AnalyticsClient} * @public */ -export type AnalyticsServicePreboot = AnalyticsClient; +export type AnalyticsServicePreboot = Omit; /** * Exposes the public APIs of the AnalyticsClient during the setup phase. * {@link AnalyticsClient} * @public */ -export type AnalyticsServiceSetup = AnalyticsClient; +export type AnalyticsServiceSetup = Omit; /** * Exposes the public APIs of the AnalyticsClient during the start phase * {@link AnalyticsClient} @@ -74,4 +74,7 @@ export class AnalyticsService { telemetryCounter$: this.analyticsClient.telemetryCounter$, }; } + public stop() { + this.analyticsClient.shutdown(); + } } diff --git a/src/core/server/saved_objects/import/import_saved_objects.ts b/src/core/server/saved_objects/import/import_saved_objects.ts index 0631d97b58a72..9e9f5f8b050dc 100644 --- a/src/core/server/saved_objects/import/import_saved_objects.ts +++ b/src/core/server/saved_objects/import/import_saved_objects.ts @@ -35,6 +35,8 @@ export interface ImportSavedObjectsOptions { objectLimit: number; /** If true, will override existing object if present. Note: this has no effect when used with the `createNewCopies` option. */ overwrite: boolean; + /** Refresh setting, defaults to `wait_for` */ + refresh?: boolean | 'wait_for'; /** {@link SavedObjectsClientContract | client} to use to perform the import operation */ savedObjectsClient: SavedObjectsClientContract; /** The registry of all known saved object types */ @@ -62,6 +64,7 @@ export async function importSavedObjectsFromStream({ typeRegistry, importHooks, namespace, + refresh, }: ImportSavedObjectsOptions): Promise { let errorAccumulator: SavedObjectsImportFailure[] = []; const supportedTypes = typeRegistry.getImportableAndExportableTypes().map((type) => type.name); @@ -141,6 +144,7 @@ export async function importSavedObjectsFromStream({ importStateMap, overwrite, namespace, + refresh, }; const createSavedObjectsResult = await createSavedObjects(createSavedObjectsParams); errorAccumulator = [...errorAccumulator, ...createSavedObjectsResult.errors]; diff --git a/src/core/server/saved_objects/import/lib/create_saved_objects.ts b/src/core/server/saved_objects/import/lib/create_saved_objects.ts index bf58b2bb4b00e..d6c7cbe934b51 100644 --- a/src/core/server/saved_objects/import/lib/create_saved_objects.ts +++ b/src/core/server/saved_objects/import/lib/create_saved_objects.ts @@ -18,6 +18,7 @@ export interface CreateSavedObjectsParams { importStateMap: ImportStateMap; namespace?: string; overwrite?: boolean; + refresh?: boolean | 'wait_for'; } export interface CreateSavedObjectsResult { createdObjects: Array>; @@ -35,6 +36,7 @@ export const createSavedObjects = async ({ importStateMap, namespace, overwrite, + refresh, }: CreateSavedObjectsParams): Promise> => { // filter out any objects that resulted in errors const errorSet = accumulatedErrors.reduce( @@ -87,6 +89,7 @@ export const createSavedObjects = async ({ const bulkCreateResponse = await savedObjectsClient.bulkCreate(objectsToCreate, { namespace, overwrite, + refresh, }); expectedResults = bulkCreateResponse.saved_objects; } diff --git a/src/core/server/saved_objects/import/saved_objects_importer.ts b/src/core/server/saved_objects/import/saved_objects_importer.ts index f4572e58d6fad..e9c54f7b44deb 100644 --- a/src/core/server/saved_objects/import/saved_objects_importer.ts +++ b/src/core/server/saved_objects/import/saved_objects_importer.ts @@ -66,12 +66,14 @@ export class SavedObjectsImporter { createNewCopies, namespace, overwrite, + refresh, }: SavedObjectsImportOptions): Promise { return importSavedObjectsFromStream({ readStream, createNewCopies, namespace, overwrite, + refresh, objectLimit: this.#importSizeLimit, savedObjectsClient: this.#savedObjectsClient, typeRegistry: this.#typeRegistry, diff --git a/src/core/server/saved_objects/import/types.ts b/src/core/server/saved_objects/import/types.ts index ccf58c99f1ad8..d3a38b48e92cb 100644 --- a/src/core/server/saved_objects/import/types.ts +++ b/src/core/server/saved_objects/import/types.ts @@ -155,6 +155,8 @@ export interface SavedObjectsImportOptions { namespace?: string; /** If true, will create new copies of import objects, each with a random `id` and undefined `originId`. */ createNewCopies: boolean; + /** Refresh setting, defaults to `wait_for` */ + refresh?: boolean | 'wait_for'; } /** diff --git a/src/core/server/saved_objects/migrations/__snapshots__/migrations_state_action_machine.test.ts.snap b/src/core/server/saved_objects/migrations/__snapshots__/migrations_state_action_machine.test.ts.snap index b1dcd51bbdd0d..e6e1fc2cdc21d 100644 --- a/src/core/server/saved_objects/migrations/__snapshots__/migrations_state_action_machine.test.ts.snap +++ b/src/core/server/saved_objects/migrations/__snapshots__/migrations_state_action_machine.test.ts.snap @@ -33,7 +33,9 @@ Object { ], "maxBatchSizeBytes": 100000000, "migrationDocLinks": Object { + "repeatedTimeoutRequests": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail", "resolveMigrationFailures": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html", + "routingAllocationDisabled": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#routing-allocation-disabled", }, "outdatedDocuments": Array [], "outdatedDocumentsQuery": Object { @@ -137,6 +139,11 @@ Object { "type": "tsvb-validation-telemetry", }, }, + Object { + "term": Object { + "type": "ui-counter", + }, + }, Object { "bool": Object { "must": Array [ @@ -197,7 +204,9 @@ Object { ], "maxBatchSizeBytes": 100000000, "migrationDocLinks": Object { + "repeatedTimeoutRequests": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail", "resolveMigrationFailures": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html", + "routingAllocationDisabled": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#routing-allocation-disabled", }, "outdatedDocuments": Array [], "outdatedDocumentsQuery": Object { @@ -301,6 +310,11 @@ Object { "type": "tsvb-validation-telemetry", }, }, + Object { + "term": Object { + "type": "ui-counter", + }, + }, Object { "bool": Object { "must": Array [ @@ -365,7 +379,9 @@ Object { ], "maxBatchSizeBytes": 100000000, "migrationDocLinks": Object { + "repeatedTimeoutRequests": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail", "resolveMigrationFailures": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html", + "routingAllocationDisabled": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#routing-allocation-disabled", }, "outdatedDocuments": Array [], "outdatedDocumentsQuery": Object { @@ -469,6 +485,11 @@ Object { "type": "tsvb-validation-telemetry", }, }, + Object { + "term": Object { + "type": "ui-counter", + }, + }, Object { "bool": Object { "must": Array [ @@ -537,7 +558,9 @@ Object { ], "maxBatchSizeBytes": 100000000, "migrationDocLinks": Object { + "repeatedTimeoutRequests": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail", "resolveMigrationFailures": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html", + "routingAllocationDisabled": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#routing-allocation-disabled", }, "outdatedDocuments": Array [], "outdatedDocumentsQuery": Object { @@ -641,6 +664,11 @@ Object { "type": "tsvb-validation-telemetry", }, }, + Object { + "term": Object { + "type": "ui-counter", + }, + }, Object { "bool": Object { "must": Array [ @@ -735,7 +763,9 @@ Object { ], "maxBatchSizeBytes": 100000000, "migrationDocLinks": Object { + "repeatedTimeoutRequests": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail", "resolveMigrationFailures": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html", + "routingAllocationDisabled": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#routing-allocation-disabled", }, "outdatedDocuments": Array [ Object { @@ -850,6 +880,11 @@ Object { "type": "tsvb-validation-telemetry", }, }, + Object { + "term": Object { + "type": "ui-counter", + }, + }, Object { "bool": Object { "must": Array [ @@ -910,7 +945,9 @@ Object { ], "maxBatchSizeBytes": 100000000, "migrationDocLinks": Object { + "repeatedTimeoutRequests": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail", "resolveMigrationFailures": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html", + "routingAllocationDisabled": "https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#routing-allocation-disabled", }, "outdatedDocuments": Array [ Object { @@ -1025,6 +1062,11 @@ Object { "type": "tsvb-validation-telemetry", }, }, + Object { + "term": Object { + "type": "ui-counter", + }, + }, Object { "bool": Object { "must": Array [ diff --git a/src/core/server/saved_objects/migrations/actions/initialize_action.ts b/src/core/server/saved_objects/migrations/actions/initialize_action.ts index 73502382c9ca0..281e3a0a4f3e0 100644 --- a/src/core/server/saved_objects/migrations/actions/initialize_action.ts +++ b/src/core/server/saved_objects/migrations/actions/initialize_action.ts @@ -29,6 +29,7 @@ export interface InitActionParams { export interface UnsupportedClusterRoutingAllocation { type: 'unsupported_cluster_routing_allocation'; + message: string; } export const checkClusterRoutingAllocationEnabledTask = @@ -53,7 +54,11 @@ export const checkClusterRoutingAllocationEnabledTask = [...clusterRoutingAllocations].every((s: string) => s === 'all'); // if set, only allow 'all' if (!clusterRoutingAllocationEnabled) { - return Either.left({ type: 'unsupported_cluster_routing_allocation' as const }); + return Either.left({ + type: 'unsupported_cluster_routing_allocation' as const, + message: + '[unsupported_cluster_routing_allocation] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue.', + }); } else { return Either.right({}); } diff --git a/src/core/server/saved_objects/migrations/actions/integration_tests/actions.test.ts b/src/core/server/saved_objects/migrations/actions/integration_tests/actions.test.ts index 5e840d87ea1ab..9846e5f48dc21 100644 --- a/src/core/server/saved_objects/migrations/actions/integration_tests/actions.test.ts +++ b/src/core/server/saved_objects/migrations/actions/integration_tests/actions.test.ts @@ -167,6 +167,7 @@ describe('migration actions', () => { Object { "_tag": "Left", "left": Object { + "message": "[unsupported_cluster_routing_allocation] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue.", "type": "unsupported_cluster_routing_allocation", }, } @@ -187,6 +188,7 @@ describe('migration actions', () => { Object { "_tag": "Left", "left": Object { + "message": "[unsupported_cluster_routing_allocation] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue.", "type": "unsupported_cluster_routing_allocation", }, } @@ -207,6 +209,7 @@ describe('migration actions', () => { Object { "_tag": "Left", "left": Object { + "message": "[unsupported_cluster_routing_allocation] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue.", "type": "unsupported_cluster_routing_allocation", }, } @@ -395,14 +398,14 @@ describe('migration actions', () => { timeout: '1s', }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "message": "[index_not_yellow_timeout] Timeout waiting for the status of the [red_index] index to become 'yellow'", - "type": "index_not_yellow_timeout", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "message": "[index_not_yellow_timeout] Timeout waiting for the status of the [red_index] index to become 'yellow'", + "type": "index_not_yellow_timeout", + }, + } + `); }); }); @@ -422,14 +425,14 @@ describe('migration actions', () => { }); expect.assertions(1); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": Object { - "acknowledged": true, - "shardsAcknowledged": true, - }, - } - `); + Object { + "_tag": "Right", + "right": Object { + "acknowledged": true, + "shardsAcknowledged": true, + }, + } + `); }); it('resolves right after waiting for index status to be yellow if clone target already existed', async () => { expect.assertions(2); @@ -488,14 +491,14 @@ describe('migration actions', () => { expect.assertions(1); const task = cloneIndex({ client, source: 'no_such_index', target: 'clone_target_3' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "index": "no_such_index", - "type": "index_not_found_exception", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "index": "no_such_index", + "type": "index_not_found_exception", + }, + } + `); }); it('resolves left with a index_not_yellow_timeout if clone target already exists but takes longer than the specified timeout before turning yellow', async () => { // Create a red index @@ -524,14 +527,14 @@ describe('migration actions', () => { })(); await expect(cloneIndexPromise).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "message": "[index_not_yellow_timeout] Timeout waiting for the status of the [clone_red_index] index to become 'yellow'", - "type": "index_not_yellow_timeout", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "message": "[index_not_yellow_timeout] Timeout waiting for the status of the [clone_red_index] index to become 'yellow'", + "type": "index_not_yellow_timeout", + }, + } + `); // Now that we know timeouts work, make the index yellow again and call cloneIndex a second time to verify that it completes @@ -552,14 +555,14 @@ describe('migration actions', () => { })(); await expect(cloneIndexPromise2).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": Object { - "acknowledged": true, - "shardsAcknowledged": true, - }, - } - `); + Object { + "_tag": "Right", + "right": Object { + "acknowledged": true, + "shardsAcknowledged": true, + }, + } + `); }); }); @@ -577,11 +580,11 @@ describe('migration actions', () => { })()) as Either.Right; const task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": "reindex_succeeded", - } - `); + Object { + "_tag": "Right", + "right": "reindex_succeeded", + } + `); const results = ( (await searchForOutdatedDocuments(client, { @@ -617,11 +620,11 @@ describe('migration actions', () => { })()) as Either.Right; const task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": "reindex_succeeded", - } - `); + Object { + "_tag": "Right", + "right": "reindex_succeeded", + } + `); const results = ( (await searchForOutdatedDocuments(client, { @@ -650,11 +653,11 @@ describe('migration actions', () => { })()) as Either.Right; const task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": "reindex_succeeded", - } - `); + Object { + "_tag": "Right", + "right": "reindex_succeeded", + } + `); const results = ( (await searchForOutdatedDocuments(client, { batchSize: 1000, @@ -685,11 +688,11 @@ describe('migration actions', () => { })()) as Either.Right; let task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": "reindex_succeeded", - } - `); + Object { + "_tag": "Right", + "right": "reindex_succeeded", + } + `); // reindex without a script res = (await reindex({ @@ -702,11 +705,11 @@ describe('migration actions', () => { })()) as Either.Right; task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": "reindex_succeeded", - } - `); + Object { + "_tag": "Right", + "right": "reindex_succeeded", + } + `); // Assert that documents weren't overridden by the second, unscripted reindex const results = ( @@ -761,11 +764,11 @@ describe('migration actions', () => { })()) as Either.Right; const task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": "reindex_succeeded", - } - `); + Object { + "_tag": "Right", + "right": "reindex_succeeded", + } + `); // Assert that existing documents weren't overridden, but that missing // documents were added by the reindex const results = ( @@ -818,13 +821,13 @@ describe('migration actions', () => { const task = waitForReindexTask({ client, taskId: reindexTaskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "type": "incompatible_mapping_exception", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "type": "incompatible_mapping_exception", + }, + } + `); }); it('resolves left incompatible_mapping_exception if all reindex failures are due to a mapper_parsing_exception', async () => { expect.assertions(1); @@ -857,13 +860,13 @@ describe('migration actions', () => { const task = waitForReindexTask({ client, taskId: reindexTaskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "type": "incompatible_mapping_exception", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "type": "incompatible_mapping_exception", + }, + } + `); }); it('resolves left index_not_found_exception if source index does not exist', async () => { expect.assertions(1); @@ -879,14 +882,14 @@ describe('migration actions', () => { })()) as Either.Right; const task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "index": "no_such_index", - "type": "index_not_found_exception", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "index": "no_such_index", + "type": "index_not_found_exception", + }, + } + `); }); it('resolves left target_index_had_write_block if all failures are due to a write block', async () => { expect.assertions(1); @@ -902,13 +905,13 @@ describe('migration actions', () => { const task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "type": "target_index_had_write_block", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "type": "target_index_had_write_block", + }, + } + `); }); it('resolves left if requireAlias=true and the target is not an alias', async () => { expect.assertions(1); @@ -924,14 +927,14 @@ describe('migration actions', () => { const task = waitForReindexTask({ client, taskId: res.right.taskId, timeout: '10s' }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "index": "existing_index_with_write_block", - "type": "index_not_found_exception", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "index": "existing_index_with_write_block", + "type": "index_not_found_exception", + }, + } + `); }); it('resolves left wait_for_task_completion_timeout when the task does not finish within the timeout', async () => { @@ -983,11 +986,11 @@ describe('migration actions', () => { targetIndex: 'reindex_target_7', }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": "verify_reindex_succeeded", - } - `); + Object { + "_tag": "Right", + "right": "verify_reindex_succeeded", + } + `); }); it('resolves left if source and target indices have different amount of documents', async () => { expect.assertions(1); @@ -997,13 +1000,13 @@ describe('migration actions', () => { targetIndex: 'existing_index_2', }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "type": "verify_reindex_failed", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "type": "verify_reindex_failed", + }, + } + `); }); it('rejects if source or target index does not exist', async () => { expect.assertions(2); @@ -1630,11 +1633,11 @@ describe('migration actions', () => { }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Right", - "right": "bulk_index_succeeded", - } - `); + Object { + "_tag": "Right", + "right": "bulk_index_succeeded", + } + `); }); it('resolves right even if there were some version_conflict_engine_exception', async () => { const existingDocs = ( @@ -1675,13 +1678,13 @@ describe('migration actions', () => { refresh: 'wait_for', })() ).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "type": "target_index_had_write_block", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "type": "target_index_had_write_block", + }, + } + `); }); it('resolves left request_entity_too_large_exception when the payload is too large', async () => { @@ -1697,13 +1700,13 @@ describe('migration actions', () => { transformedDocs: newDocs, }); await expect(task()).resolves.toMatchInlineSnapshot(` - Object { - "_tag": "Left", - "left": Object { - "type": "request_entity_too_large_exception", - }, - } - `); + Object { + "_tag": "Left", + "left": Object { + "type": "request_entity_too_large_exception", + }, + } + `); }); }); }); diff --git a/src/core/server/saved_objects/migrations/core/unused_types.ts b/src/core/server/saved_objects/migrations/core/unused_types.ts index fd4b8a09600d7..076bdb489cf49 100644 --- a/src/core/server/saved_objects/migrations/core/unused_types.ts +++ b/src/core/server/saved_objects/migrations/core/unused_types.ts @@ -33,6 +33,8 @@ export const REMOVED_TYPES: string[] = [ 'siem-detection-engine-rule-status', // Was removed in 7.16 'timelion-sheet', + // Removed in 8.3 https://github.com/elastic/kibana/issues/127745 + 'ui-counter', ].sort(); // When migrating from the outdated index we use a read query which excludes diff --git a/src/core/server/saved_objects/migrations/initial_state.test.ts b/src/core/server/saved_objects/migrations/initial_state.test.ts index 0fff4ddb06895..2ad3dc38e6d65 100644 --- a/src/core/server/saved_objects/migrations/initial_state.test.ts +++ b/src/core/server/saved_objects/migrations/initial_state.test.ts @@ -116,6 +116,10 @@ describe('createInitialState', () => { migrationDocLinks: { resolveMigrationFailures: 'https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html', + repeatedTimeoutRequests: + 'https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail', + routingAllocationDisabled: + 'https://www.elastic.co/guide/en/kibana/test-branch/resolve-migrations-failures.html#routing-allocation-disabled', }, }); }); diff --git a/src/core/server/saved_objects/migrations/integration_tests/cluster_routing_allocation_disabled.test.ts b/src/core/server/saved_objects/migrations/integration_tests/cluster_routing_allocation_disabled.test.ts index ea70478d6ce7b..37b278fe9ccf0 100644 --- a/src/core/server/saved_objects/migrations/integration_tests/cluster_routing_allocation_disabled.test.ts +++ b/src/core/server/saved_objects/migrations/integration_tests/cluster_routing_allocation_disabled.test.ts @@ -114,7 +114,7 @@ describe('unsupported_cluster_routing_allocation', () => { await root.setup(); await expect(root.start()).rejects.toThrowError( - /Unable to complete saved object migrations for the \[\.kibana.*\] index: The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue\. To proceed, please remove the cluster routing allocation settings with PUT \/_cluster\/settings {"transient": {"cluster\.routing\.allocation\.enable": null}, "persistent": {"cluster\.routing\.allocation\.enable": null}}/ + /Unable to complete saved object migrations for the \[\.kibana\] index: \[unsupported_cluster_routing_allocation\] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue\. To proceed, please remove the cluster routing allocation settings with PUT \/_cluster\/settings {\"transient\": {\"cluster\.routing\.allocation\.enable\": null}, \"persistent\": {\"cluster\.routing\.allocation\.enable\": null}}\. Refer to https:\/\/www.elastic.co\/guide\/en\/kibana\/master\/resolve-migrations-failures.html#routing-allocation-disabled for more information on how to resolve the issue\./ ); await retryAsync( @@ -126,7 +126,7 @@ describe('unsupported_cluster_routing_allocation', () => { .map((str) => JSON5.parse(str)) as LogRecord[]; expect( records.find((rec) => - /^Unable to complete saved object migrations for the \[\.kibana.*\] index: The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue\./.test( + /^Unable to complete saved object migrations for the \[\.kibana.*\] index: \[unsupported_cluster_routing_allocation\] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue\./.test( rec.message ) ) @@ -149,7 +149,7 @@ describe('unsupported_cluster_routing_allocation', () => { await root.setup(); await expect(root.start()).rejects.toThrowError( - /Unable to complete saved object migrations for the \[\.kibana.*\] index: The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue\. To proceed, please remove the cluster routing allocation settings with PUT \/_cluster\/settings {"transient": {"cluster\.routing\.allocation\.enable": null}, "persistent": {"cluster\.routing\.allocation\.enable": null}}/ + /Unable to complete saved object migrations for the \[\.kibana\] index: \[unsupported_cluster_routing_allocation\] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue\. To proceed, please remove the cluster routing allocation settings with PUT \/_cluster\/settings {\"transient\": {\"cluster\.routing\.allocation\.enable\": null}, \"persistent\": {\"cluster\.routing\.allocation\.enable\": null}}\. Refer to https:\/\/www.elastic.co\/guide\/en\/kibana\/master\/resolve-migrations-failures.html#routing-allocation-disabled for more information on how to resolve the issue\./ ); }); }); diff --git a/src/core/server/saved_objects/migrations/model/extract_errors.test.ts b/src/core/server/saved_objects/migrations/model/extract_errors.test.ts index a028c40ca6597..e434a5001a6ae 100644 --- a/src/core/server/saved_objects/migrations/model/extract_errors.test.ts +++ b/src/core/server/saved_objects/migrations/model/extract_errors.test.ts @@ -6,7 +6,11 @@ * Side Public License, v 1. */ -import { extractUnknownDocFailureReason } from './extract_errors'; +import { + extractUnknownDocFailureReason, + fatalReasonClusterRoutingAllocationUnsupported, + fatalReasonDocumentExceedsMaxBatchSizeBytes, +} from './extract_errors'; describe('extractUnknownDocFailureReason', () => { it('generates the correct error message', () => { @@ -37,3 +41,32 @@ describe('extractUnknownDocFailureReason', () => { `); }); }); + +describe('fatalReasonDocumentExceedsMaxBatchSizeBytes', () => { + it('generate the correct error message', () => { + expect( + fatalReasonDocumentExceedsMaxBatchSizeBytes({ + _id: 'abc', + docSizeBytes: 106954752, + maxBatchSizeBytes: 104857600, + }) + ).toMatchInlineSnapshot( + `"The document with _id \\"abc\\" is 106954752 bytes which exceeds the configured maximum batch size of 104857600 bytes. To proceed, please increase the 'migrations.maxBatchSizeBytes' Kibana configuration option and ensure that the Elasticsearch 'http.max_content_length' configuration option is set to an equal or larger value."` + ); + }); +}); + +describe('fatalReasonClusterRoutingAllocationUnsupported', () => { + it('generates the correct error message', () => { + const errorMessages = fatalReasonClusterRoutingAllocationUnsupported({ + errorMessage: '[some-error] message', + docSectionLink: 'linkToDocsSection', + }); + expect(errorMessages.fatalReason).toMatchInlineSnapshot( + `"[some-error] message To proceed, please remove the cluster routing allocation settings with PUT /_cluster/settings {\\"transient\\": {\\"cluster.routing.allocation.enable\\": null}, \\"persistent\\": {\\"cluster.routing.allocation.enable\\": null}}. Refer to linkToDocsSection for more information on how to resolve the issue."` + ); + expect(errorMessages.logsErrorMessage).toMatchInlineSnapshot( + `"[some-error] message Ensure that the persistent and transient Elasticsearch configuration option 'cluster.routing.allocation.enable' is not set or set it to a value of 'all'. Refer to linkToDocsSection for more information on how to resolve the issue."` + ); + }); +}); diff --git a/src/core/server/saved_objects/migrations/model/extract_errors.ts b/src/core/server/saved_objects/migrations/model/extract_errors.ts index 95d10603caa80..f41009ab2127c 100644 --- a/src/core/server/saved_objects/migrations/model/extract_errors.ts +++ b/src/core/server/saved_objects/migrations/model/extract_errors.ts @@ -51,3 +51,32 @@ export function extractUnknownDocFailureReason( `'` ); } + +/** + * Constructs migration failure message string for doc exceeds max batch size in bytes + */ +export const fatalReasonDocumentExceedsMaxBatchSizeBytes = ({ + _id, + docSizeBytes, + maxBatchSizeBytes, +}: { + _id: string; + docSizeBytes: number; + maxBatchSizeBytes: number; +}) => + `The document with _id "${_id}" is ${docSizeBytes} bytes which exceeds the configured maximum batch size of ${maxBatchSizeBytes} bytes. To proceed, please increase the 'migrations.maxBatchSizeBytes' Kibana configuration option and ensure that the Elasticsearch 'http.max_content_length' configuration option is set to an equal or larger value.`; + +/** + * Constructs migration failure message and logs message strings when an unsupported cluster routing allocation is configured. + * The full errorMessage is "[unsupported_cluster_routing_allocation] The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue." + */ +export const fatalReasonClusterRoutingAllocationUnsupported = ({ + errorMessage, + docSectionLink, +}: { + errorMessage: string; + docSectionLink: string; +}) => ({ + fatalReason: `${errorMessage} To proceed, please remove the cluster routing allocation settings with PUT /_cluster/settings {"transient": {"cluster.routing.allocation.enable": null}, "persistent": {"cluster.routing.allocation.enable": null}}. Refer to ${docSectionLink} for more information on how to resolve the issue.`, + logsErrorMessage: `${errorMessage} Ensure that the persistent and transient Elasticsearch configuration option 'cluster.routing.allocation.enable' is not set or set it to a value of 'all'. Refer to ${docSectionLink} for more information on how to resolve the issue.`, +}); diff --git a/src/core/server/saved_objects/migrations/model/model.test.ts b/src/core/server/saved_objects/migrations/model/model.test.ts index b80e2bceae846..e44995ac8d30e 100644 --- a/src/core/server/saved_objects/migrations/model/model.test.ts +++ b/src/core/server/saved_objects/migrations/model/model.test.ts @@ -96,6 +96,8 @@ describe('migrations v2 model', () => { excludeFromUpgradeFilterHooks: {}, migrationDocLinks: { resolveMigrationFailures: 'resolveMigrationFailures', + repeatedTimeoutRequests: 'repeatedTimeoutRequests', + routingAllocationDisabled: 'routingAllocationDisabled', }, }; @@ -283,12 +285,13 @@ describe('migrations v2 model', () => { test('INIT -> FATAL when cluster routing allocation is not enabled', () => { const res: ResponseType<'INIT'> = Either.left({ type: 'unsupported_cluster_routing_allocation', + message: '[unsupported_cluster_routing_allocation]', }); const newState = model(initState, res) as FatalState; expect(newState.controlState).toEqual('FATAL'); expect(newState.reason).toMatchInlineSnapshot( - `"The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue. To proceed, please remove the cluster routing allocation settings with PUT /_cluster/settings {\\"transient\\": {\\"cluster.routing.allocation.enable\\": null}, \\"persistent\\": {\\"cluster.routing.allocation.enable\\": null}}"` + `"[unsupported_cluster_routing_allocation] To proceed, please remove the cluster routing allocation settings with PUT /_cluster/settings {\\"transient\\": {\\"cluster.routing.allocation.enable\\": null}, \\"persistent\\": {\\"cluster.routing.allocation.enable\\": null}}. Refer to routingAllocationDisabled for more information on how to resolve the issue."` ); }); test("INIT -> FATAL when .kibana points to newer version's index", () => { diff --git a/src/core/server/saved_objects/migrations/model/model.ts b/src/core/server/saved_objects/migrations/model/model.ts index e711f62bcd8d6..cff23f0eeda65 100644 --- a/src/core/server/saved_objects/migrations/model/model.ts +++ b/src/core/server/saved_objects/migrations/model/model.ts @@ -21,7 +21,12 @@ import { setProgressTotal, } from './progress'; import { delayRetryState, resetRetryState } from './retry_state'; -import { extractTransformFailuresReason, extractUnknownDocFailureReason } from './extract_errors'; +import { + extractTransformFailuresReason, + extractUnknownDocFailureReason, + fatalReasonDocumentExceedsMaxBatchSizeBytes, + fatalReasonClusterRoutingAllocationUnsupported, +} from './extract_errors'; import type { ExcludeRetryableEsError } from './types'; import { getAliases, @@ -33,17 +38,7 @@ import { } from './helpers'; import { createBatches } from './create_batches'; -const FATAL_REASON_REQUEST_ENTITY_TOO_LARGE = `While indexing a batch of saved objects, Elasticsearch returned a 413 Request Entity Too Large exception. Ensure that the Kibana configuration option 'migrations.maxBatchSizeBytes' is set to a value that is lower than or equal to the Elasticsearch 'http.max_content_length' configuration option.`; -const fatalReasonDocumentExceedsMaxBatchSizeBytes = ({ - _id, - docSizeBytes, - maxBatchSizeBytes, -}: { - _id: string; - docSizeBytes: number; - maxBatchSizeBytes: number; -}) => - `The document with _id "${_id}" is ${docSizeBytes} bytes which exceeds the configured maximum batch size of ${maxBatchSizeBytes} bytes. To proceed, please increase the 'migrations.maxBatchSizeBytes' Kibana configuration option and ensure that the Elasticsearch 'http.max_content_length' configuration option is set to an equal or larger value.`; +export const FATAL_REASON_REQUEST_ENTITY_TOO_LARGE = `While indexing a batch of saved objects, Elasticsearch returned a 413 Request Entity Too Large exception. Ensure that the Kibana configuration option 'migrations.maxBatchSizeBytes' is set to a value that is lower than or equal to the Elasticsearch 'http.max_content_length' configuration option.`; export const model = (currentState: State, resW: ResponseType): State => { // The action response `resW` is weakly typed, the type includes all action @@ -73,15 +68,19 @@ export const model = (currentState: State, resW: ResponseType): if (Either.isLeft(res)) { const left = res.left; if (isLeftTypeof(left, 'unsupported_cluster_routing_allocation')) { + const initErrorMessages = fatalReasonClusterRoutingAllocationUnsupported({ + errorMessage: left.message, + docSectionLink: stateP.migrationDocLinks.routingAllocationDisabled, + }); return { ...stateP, controlState: 'FATAL', - reason: `The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue. To proceed, please remove the cluster routing allocation settings with PUT /_cluster/settings {"transient": {"cluster.routing.allocation.enable": null}, "persistent": {"cluster.routing.allocation.enable": null}}`, + reason: initErrorMessages.fatalReason, logs: [ ...stateP.logs, { level: 'error', - message: `The elasticsearch cluster has cluster routing allocation incorrectly set for migrations to continue. Ensure that the persistent and transient Elasticsearch configuration option 'cluster.routing.allocation.enable' is not set or set it to a value of 'all'.`, + message: initErrorMessages.logsErrorMessage, }, ], }; @@ -244,7 +243,7 @@ export const model = (currentState: State, resW: ResponseType): // we get a response. // If the cluster hit the low watermark for disk usage the LEGACY_CREATE_REINDEX_TARGET action will // continue to timeout and eventually lead to a failed migration. - const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.resolveMigrationFailures} for information on how to resolve the issue.`; + const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.repeatedTimeoutRequests} for information on how to resolve the issue.`; return delayRetryState(stateP, retryErrorMessage, stateP.retryAttempts); } else { return throwBadResponse(stateP, left); @@ -366,7 +365,7 @@ export const model = (currentState: State, resW: ResponseType): // we get a response. // In the event of retries running out, we link to the docs to help with diagnosing // the problem. - const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.resolveMigrationFailures} for information on how to resolve the issue.`; + const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.repeatedTimeoutRequests} for information on how to resolve the issue.`; return delayRetryState(stateP, retryErrorMessage, stateP.retryAttempts); } else { return throwBadResponse(stateP, left); @@ -461,7 +460,7 @@ export const model = (currentState: State, resW: ResponseType): // // If there is a problem CREATE_REINDEX_TEMP action will // continue to timeout and eventually lead to a failed migration. - const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.resolveMigrationFailures} for information on how to resolve the issue.`; + const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.repeatedTimeoutRequests} for information on how to resolve the issue.`; return delayRetryState(stateP, retryErrorMessage, stateP.retryAttempts); } else { return throwBadResponse(stateP, left); @@ -696,7 +695,7 @@ export const model = (currentState: State, resW: ResponseType): // `_cluster/allocation/explain?index=${targetIndex}` API. // Unless the root cause is identified and addressed, the request will // continue to timeout and eventually lead to a failed migration. - const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.resolveMigrationFailures} for information on how to resolve the issue.`; + const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.repeatedTimeoutRequests} for information on how to resolve the issue.`; return delayRetryState(stateP, retryErrorMessage, stateP.retryAttempts); } else { throwBadResponse(stateP, left); @@ -951,7 +950,7 @@ export const model = (currentState: State, resW: ResponseType): // If the cluster hit the low watermark for disk usage the action will continue to timeout. // Unless the disk space is addressed, the LEGACY_CREATE_REINDEX_TARGET action will // continue to timeout and eventually lead to a failed migration. - const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.resolveMigrationFailures} for information on how to resolve the issue.`; + const retryErrorMessage = `${left.message} Refer to ${stateP.migrationDocLinks.repeatedTimeoutRequests} for information on how to resolve the issue.`; return delayRetryState(stateP, retryErrorMessage, stateP.retryAttempts); } else { return throwBadResponse(stateP, left); diff --git a/src/core/server/saved_objects/migrations/state.ts b/src/core/server/saved_objects/migrations/state.ts index 6630b5ee57808..dee6839d6b902 100644 --- a/src/core/server/saved_objects/migrations/state.ts +++ b/src/core/server/saved_objects/migrations/state.ts @@ -8,6 +8,7 @@ import * as Option from 'fp-ts/lib/Option'; import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { DocLinks } from '@kbn/doc-links'; import { ControlState } from './state_action_machine'; import { AliasAction } from './actions'; import { IndexMapping } from '../mappings'; @@ -125,7 +126,7 @@ export interface BaseState extends ControlState { /** * DocLinks for savedObjects. to reference online documentation */ - readonly migrationDocLinks: Record; + readonly migrationDocLinks: DocLinks['kibanaUpgradeSavedObjects']; } export interface InitState extends BaseState { diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index 2228c8fee8794..4ff42f95b571a 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -77,12 +77,12 @@ export { AnalyticsClient } // Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver // // @public -export type AnalyticsServicePreboot = AnalyticsClient; +export type AnalyticsServicePreboot = Omit; // Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver // // @public -export type AnalyticsServiceSetup = AnalyticsClient; +export type AnalyticsServiceSetup = Omit; // Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver // @@ -2541,7 +2541,7 @@ export class SavedObjectsImporter { typeRegistry: ISavedObjectTypeRegistry; importSizeLimit: number; }); - import({ readStream, createNewCopies, namespace, overwrite, }: SavedObjectsImportOptions): Promise; + import({ readStream, createNewCopies, namespace, overwrite, refresh, }: SavedObjectsImportOptions): Promise; resolveImportErrors({ readStream, createNewCopies, namespace, retries, }: SavedObjectsResolveImportErrorsOptions): Promise; } @@ -2604,6 +2604,7 @@ export interface SavedObjectsImportOptions { namespace?: string; overwrite: boolean; readStream: Readable; + refresh?: boolean | 'wait_for'; } // @public diff --git a/src/core/server/server.ts b/src/core/server/server.ts index c73e98f4bb6c4..bc5048de45cba 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -358,6 +358,7 @@ export class Server { public async stop() { this.log.debug('stopping server'); + this.analytics.stop(); await this.http.stop(); // HTTP server has to stop before savedObjects and ES clients are closed to be able to gracefully attempt to resolve any pending requests await this.plugins.stop(); await this.savedObjects.stop(); diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.test.tsx b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.test.tsx index 1281fb17bd990..648df546b2992 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.test.tsx +++ b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.test.tsx @@ -12,7 +12,8 @@ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { fieldFormatsServiceMock } from '@kbn/field-formats-plugin/public/mocks'; import type { Datatable } from '@kbn/expressions-plugin/public'; -import { shallow, mount } from 'enzyme'; +import { shallow } from 'enzyme'; +import { mountWithIntl } from '@kbn/test-jest-helpers'; import { findTestSubject } from '@elastic/eui/lib/test'; import { act } from 'react-dom/test-utils'; import PartitionVisComponent, { PartitionVisComponentProps } from './partition_vis_component'; @@ -143,7 +144,7 @@ describe('PartitionVisComponent', function () { }); it('renders the legend toggle component', async () => { - const component = mount(); + const component = mountWithIntl(); await actWithTimeout(async () => { await component.update(); }); @@ -154,7 +155,7 @@ describe('PartitionVisComponent', function () { }); it('hides the legend if the legend toggle is clicked', async () => { - const component = mount(); + const component = mountWithIntl(); await actWithTimeout(async () => { await component.update(); }); @@ -233,7 +234,7 @@ describe('PartitionVisComponent', function () { ], } as unknown as Datatable; const newProps = { ...wrapperProps, visData: newVisData }; - const component = mount(); + const component = mountWithIntl(); expect(findTestSubject(component, 'partitionVisEmptyValues').text()).toEqual( 'No results found' ); @@ -264,7 +265,7 @@ describe('PartitionVisComponent', function () { ], } as unknown as Datatable; const newProps = { ...wrapperProps, visData: newVisData }; - const component = mount(); + const component = mountWithIntl(); expect(findTestSubject(component, 'partitionVisNegativeValues').text()).toEqual( "Pie chart can't render with negative values." ); diff --git a/src/plugins/chart_expressions/expression_xy/common/__mocks__/index.ts b/src/plugins/chart_expressions/expression_xy/common/__mocks__/index.ts index f225846687e14..3a4a1fdb813fc 100644 --- a/src/plugins/chart_expressions/expression_xy/common/__mocks__/index.ts +++ b/src/plugins/chart_expressions/expression_xy/common/__mocks__/index.ts @@ -10,7 +10,7 @@ import { Position } from '@elastic/charts'; import type { PaletteOutput } from '@kbn/coloring'; import { Datatable, DatatableRow } from '@kbn/expressions-plugin'; import { LayerTypes } from '../constants'; -import { DataLayerConfigResult, LensMultiTable, XYArgs } from '../types'; +import { DataLayerConfig, XYProps } from '../types'; export const mockPaletteOutput: PaletteOutput = { type: 'palette', @@ -46,9 +46,9 @@ export const createSampleDatatableWithRows = (rows: DatatableRow[]): Datatable = rows, }); -export const sampleLayer: DataLayerConfigResult = { - type: 'dataLayer', +export const sampleLayer: DataLayerConfig = { layerId: 'first', + type: 'dataLayer', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'c', @@ -59,9 +59,12 @@ export const sampleLayer: DataLayerConfigResult = { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: createSampleDatatableWithRows([]), }; -export const createArgsWithLayers = (layers: DataLayerConfigResult[] = [sampleLayer]): XYArgs => ({ +export const createArgsWithLayers = ( + layers: DataLayerConfig | DataLayerConfig[] = sampleLayer +): XYProps => ({ xTitle: '', yTitle: '', yRightTitle: '', @@ -104,25 +107,17 @@ export const createArgsWithLayers = (layers: DataLayerConfigResult[] = [sampleLa mode: 'full', type: 'axisExtentConfig', }, - layers, + layers: Array.isArray(layers) ? layers : [layers], }); export function sampleArgs() { - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: createSampleDatatableWithRows([ - { a: 1, b: 2, c: 'I', d: 'Foo' }, - { a: 1, b: 5, c: 'J', d: 'Bar' }, - ]), - }, - dateRange: { - fromDate: new Date('2019-01-02T05:00:00.000Z'), - toDate: new Date('2019-01-03T05:00:00.000Z'), - }, - }; - - const args: XYArgs = createArgsWithLayers(); + const data = createSampleDatatableWithRows([ + { a: 1, b: 2, c: 'I', d: 'Foo' }, + { a: 1, b: 5, c: 'J', d: 'Bar' }, + ]); - return { data, args }; + return { + data, + args: createArgsWithLayers({ ...sampleLayer, table: data }), + }; } diff --git a/src/plugins/chart_expressions/expression_xy/common/constants.ts b/src/plugins/chart_expressions/expression_xy/common/constants.ts index bf1e43b205843..931ece6ef8a78 100644 --- a/src/plugins/chart_expressions/expression_xy/common/constants.ts +++ b/src/plugins/chart_expressions/expression_xy/common/constants.ts @@ -7,16 +7,21 @@ */ export const XY_VIS = 'xyVis'; +export const LAYERED_XY_VIS = 'layeredXyVis'; export const Y_CONFIG = 'yConfig'; +export const EXTENDED_Y_CONFIG = 'extendedYConfig'; export const MULTITABLE = 'lens_multitable'; export const DATA_LAYER = 'dataLayer'; +export const EXTENDED_DATA_LAYER = 'extendedDataLayer'; export const LEGEND_CONFIG = 'legendConfig'; export const XY_VIS_RENDERER = 'xyVis'; export const GRID_LINES_CONFIG = 'gridlinesConfig'; export const ANNOTATION_LAYER = 'annotationLayer'; +export const EXTENDED_ANNOTATION_LAYER = 'extendedAnnotationLayer'; export const TICK_LABELS_CONFIG = 'tickLabelsConfig'; export const AXIS_EXTENT_CONFIG = 'axisExtentConfig'; export const REFERENCE_LINE_LAYER = 'referenceLineLayer'; +export const EXTENDED_REFERENCE_LINE_LAYER = 'extendedReferenceLineLayer'; export const LABELS_ORIENTATION_CONFIG = 'labelsOrientationConfig'; export const AXIS_TITLES_VISIBILITY_CONFIG = 'axisTitlesVisibilityConfig'; @@ -106,6 +111,23 @@ export const XYCurveTypes = { export const ValueLabelModes = { HIDE: 'hide', - INSIDE: 'inside', - OUTSIDE: 'outside', + SHOW: 'show', +} as const; + +export const AvailableReferenceLineIcons = { + EMPTY: 'empty', + ASTERISK: 'asterisk', + ALERT: 'alert', + BELL: 'bell', + BOLT: 'bolt', + BUG: 'bug', + CIRCLE: 'circle', + EDITOR_COMMENT: 'editorComment', + FLAG: 'flag', + HEART: 'heart', + MAP_MARKER: 'mapMarker', + PIN_FILLED: 'pinFilled', + STAR_EMPTY: 'starEmpty', + TAG: 'tag', + TRIANGLE: 'triangle', } as const; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/annotation_layer_config.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/annotation_layer.ts similarity index 64% rename from src/plugins/chart_expressions/expression_xy/common/expression_functions/annotation_layer_config.ts rename to src/plugins/chart_expressions/expression_xy/common/expression_functions/annotation_layer.ts index 9ec3a43e1d710..6174b9d40e452 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/annotation_layer_config.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/annotation_layer.ts @@ -6,13 +6,14 @@ * Side Public License, v 1. */ -import type { ExpressionFunctionDefinition } from '@kbn/expressions-plugin/common'; +import type { Datatable, ExpressionFunctionDefinition } from '@kbn/expressions-plugin/common'; import { LayerTypes, ANNOTATION_LAYER } from '../constants'; import { AnnotationLayerArgs, AnnotationLayerConfigResult } from '../types'; +import { strings } from '../i18n'; -export function annotationLayerConfigFunction(): ExpressionFunctionDefinition< +export function annotationLayerFunction(): ExpressionFunctionDefinition< typeof ANNOTATION_LAYER, - null, + Datatable, AnnotationLayerArgs, AnnotationLayerConfigResult > { @@ -20,21 +21,17 @@ export function annotationLayerConfigFunction(): ExpressionFunctionDefinition< name: ANNOTATION_LAYER, aliases: [], type: ANNOTATION_LAYER, - inputTypes: ['null'], - help: 'Annotation layer in lens', + inputTypes: ['datatable'], + help: strings.getAnnotationLayerFnHelp(), args: { - layerId: { - types: ['string'], - help: '', - }, hide: { types: ['boolean'], default: false, - help: 'Show details', + help: strings.getAnnotationLayerHideHelp(), }, annotations: { - types: ['manual_event_annotation'], - help: '', + types: ['manual_point_event_annotation', 'manual_range_event_annotation'], + help: strings.getAnnotationLayerAnnotationsHelp(), multi: true, }, }, @@ -42,6 +39,7 @@ export function annotationLayerConfigFunction(): ExpressionFunctionDefinition< return { type: ANNOTATION_LAYER, ...args, + annotations: args.annotations ?? [], layerType: LayerTypes.ANNOTATIONS, }; }, diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/axis_extent_config.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/axis_extent_config.ts index e65550c7aeeef..c1a4070225a64 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/axis_extent_config.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/axis_extent_config.ts @@ -11,6 +11,13 @@ import type { ExpressionFunctionDefinition } from '@kbn/expressions-plugin/commo import { AxisExtentConfig, AxisExtentConfigResult } from '../types'; import { AxisExtentModes, AXIS_EXTENT_CONFIG } from '../constants'; +const errors = { + upperBoundLowerOrEqualToLowerBoundError: () => + i18n.translate('expressionXY.reusable.function.axisExtentConfig.errors.emptyUpperBound', { + defaultMessage: 'Upper bound should be greater than lower bound, if custom mode is enabled.', + }), +}; + export const axisExtentConfigFunction: ExpressionFunctionDefinition< typeof AXIS_EXTENT_CONFIG, null, @@ -27,10 +34,12 @@ export const axisExtentConfigFunction: ExpressionFunctionDefinition< args: { mode: { types: ['string'], - options: [...Object.values(AxisExtentModes)], help: i18n.translate('expressionXY.axisExtentConfig.extentMode.help', { defaultMessage: 'The extent mode', }), + options: [...Object.values(AxisExtentModes)], + strict: true, + default: AxisExtentModes.FULL, }, lowerBound: { types: ['number'], @@ -46,6 +55,16 @@ export const axisExtentConfigFunction: ExpressionFunctionDefinition< }, }, fn(input, args) { + if (args.mode === AxisExtentModes.CUSTOM) { + if ( + args.lowerBound !== undefined && + args.upperBound !== undefined && + args.lowerBound >= args.upperBound + ) { + throw new Error(errors.upperBoundLowerOrEqualToLowerBoundError()); + } + } + return { type: AXIS_EXTENT_CONFIG, ...args, diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_data_layer_args.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_data_layer_args.ts new file mode 100644 index 0000000000000..49446310a894b --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_data_layer_args.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 { SeriesTypes, XScaleTypes, YScaleTypes, Y_CONFIG } from '../constants'; +import { strings } from '../i18n'; +import { DataLayerFn, ExtendedDataLayerFn } from '../types'; + +type CommonDataLayerFn = DataLayerFn | ExtendedDataLayerFn; + +export const commonDataLayerArgs: CommonDataLayerFn['args'] = { + hide: { + types: ['boolean'], + default: false, + help: strings.getHideHelp(), + }, + xAccessor: { + types: ['string'], + help: strings.getXAccessorHelp(), + }, + seriesType: { + types: ['string'], + options: [...Object.values(SeriesTypes)], + help: strings.getSeriesTypeHelp(), + required: true, + strict: true, + }, + xScaleType: { + options: [...Object.values(XScaleTypes)], + help: strings.getXScaleTypeHelp(), + default: XScaleTypes.ORDINAL, + strict: true, + }, + isHistogram: { + types: ['boolean'], + default: false, + help: strings.getIsHistogramHelp(), + }, + yScaleType: { + options: [...Object.values(YScaleTypes)], + help: strings.getYScaleTypeHelp(), + default: YScaleTypes.LINEAR, + strict: true, + }, + splitAccessor: { + types: ['string'], + help: strings.getSplitAccessorHelp(), + }, + accessors: { + types: ['string'], + help: strings.getAccessorsHelp(), + multi: true, + }, + yConfig: { + types: [Y_CONFIG], + help: strings.getYConfigHelp(), + multi: true, + }, + columnToLabel: { + types: ['string'], + help: strings.getColumnToLabelHelp(), + }, + palette: { + types: ['palette', 'system_palette'], + help: strings.getPaletteHelp(), + default: '{palette}', + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_reference_line_layer_args.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_reference_line_layer_args.ts new file mode 100644 index 0000000000000..f338e08a88940 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_reference_line_layer_args.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { EXTENDED_Y_CONFIG } from '../constants'; +import { strings } from '../i18n'; +import { ReferenceLineLayerFn, ExtendedReferenceLineLayerFn } from '../types'; + +type CommonReferenceLineLayerFn = ReferenceLineLayerFn | ExtendedReferenceLineLayerFn; + +export const commonReferenceLineLayerArgs: CommonReferenceLineLayerFn['args'] = { + accessors: { + types: ['string'], + help: strings.getRLAccessorsHelp(), + multi: true, + }, + yConfig: { + types: [EXTENDED_Y_CONFIG], + help: strings.getRLYConfigHelp(), + multi: true, + }, + columnToLabel: { + types: ['string'], + help: strings.getColumnToLabelHelp(), + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_xy_args.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_xy_args.ts new file mode 100644 index 0000000000000..f80d814571076 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_xy_args.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 { + AXIS_EXTENT_CONFIG, + AXIS_TITLES_VISIBILITY_CONFIG, + EndValues, + FittingFunctions, + GRID_LINES_CONFIG, + LABELS_ORIENTATION_CONFIG, + LEGEND_CONFIG, + TICK_LABELS_CONFIG, + ValueLabelModes, + XYCurveTypes, +} from '../constants'; +import { strings } from '../i18n'; +import { LayeredXyVisFn, XyVisFn } from '../types'; + +type CommonXYFn = XyVisFn | LayeredXyVisFn; + +export const commonXYArgs: CommonXYFn['args'] = { + xTitle: { + types: ['string'], + help: strings.getXTitleHelp(), + }, + yTitle: { + types: ['string'], + help: strings.getYTitleHelp(), + }, + yRightTitle: { + types: ['string'], + help: strings.getYRightTitleHelp(), + }, + yLeftExtent: { + types: [AXIS_EXTENT_CONFIG], + help: strings.getYLeftExtentHelp(), + default: `{${AXIS_EXTENT_CONFIG}}`, + }, + yRightExtent: { + types: [AXIS_EXTENT_CONFIG], + help: strings.getYRightExtentHelp(), + default: `{${AXIS_EXTENT_CONFIG}}`, + }, + legend: { + types: [LEGEND_CONFIG], + help: strings.getLegendHelp(), + default: `{${LEGEND_CONFIG}}`, + }, + fittingFunction: { + types: ['string'], + options: [...Object.values(FittingFunctions)], + help: strings.getFittingFunctionHelp(), + strict: true, + }, + endValue: { + types: ['string'], + options: [...Object.values(EndValues)], + help: strings.getEndValueHelp(), + strict: true, + }, + emphasizeFitting: { + types: ['boolean'], + default: false, + help: '', + }, + valueLabels: { + types: ['string'], + options: [...Object.values(ValueLabelModes)], + help: strings.getValueLabelsHelp(), + strict: true, + default: ValueLabelModes.HIDE, + }, + tickLabelsVisibilitySettings: { + types: [TICK_LABELS_CONFIG], + help: strings.getTickLabelsVisibilitySettingsHelp(), + }, + labelsOrientation: { + types: [LABELS_ORIENTATION_CONFIG], + help: strings.getLabelsOrientationHelp(), + }, + gridlinesVisibilitySettings: { + types: [GRID_LINES_CONFIG], + help: strings.getGridlinesVisibilitySettingsHelp(), + }, + axisTitlesVisibilitySettings: { + types: [AXIS_TITLES_VISIBILITY_CONFIG], + help: strings.getAxisTitlesVisibilitySettingsHelp(), + }, + curveType: { + types: ['string'], + options: [...Object.values(XYCurveTypes)], + help: strings.getCurveTypeHelp(), + strict: true, + }, + fillOpacity: { + types: ['number'], + help: strings.getFillOpacityHelp(), + }, + hideEndzones: { + types: ['boolean'], + default: false, + help: strings.getHideEndzonesHelp(), + }, + valuesInLegend: { + types: ['boolean'], + default: false, + help: strings.getValuesInLegendHelp(), + }, + ariaLabel: { + types: ['string'], + help: strings.getAriaLabelHelp(), + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_y_config_args.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_y_config_args.ts new file mode 100644 index 0000000000000..76ac6ba2a1a97 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/common_y_config_args.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { YAxisModes } from '../constants'; +import { strings } from '../i18n'; +import { YConfigFn, ExtendedYConfigFn } from '../types'; + +type CommonYConfigFn = YConfigFn | ExtendedYConfigFn; + +export const commonYConfigArgs: CommonYConfigFn['args'] = { + forAccessor: { + types: ['string'], + help: strings.getForAccessorHelp(), + }, + axisMode: { + types: ['string'], + options: [...Object.values(YAxisModes)], + help: strings.getAxisModeHelp(), + strict: true, + }, + color: { + types: ['string'], + help: strings.getColorHelp(), + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer_config.test.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer.test.ts similarity index 70% rename from src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer_config.test.ts rename to src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer.test.ts index 7f8bf30d956ff..518690d47bfcb 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer_config.test.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer.test.ts @@ -7,15 +7,15 @@ */ import { DataLayerArgs } from '../types'; -import { dataLayerConfigFunction } from '.'; import { createMockExecutionContext } from '@kbn/expressions-plugin/common/mocks'; -import { mockPaletteOutput } from '../__mocks__'; +import { mockPaletteOutput, sampleArgs } from '../__mocks__'; import { LayerTypes } from '../constants'; +import { dataLayerFunction } from './data_layer'; describe('dataLayerConfig', () => { test('produces the correct arguments', () => { + const { data } = sampleArgs(); const args: DataLayerArgs = { - layerId: 'first', seriesType: 'line', xAccessor: 'c', accessors: ['a', 'b'], @@ -26,8 +26,13 @@ describe('dataLayerConfig', () => { palette: mockPaletteOutput, }; - const result = dataLayerConfigFunction.fn(null, args, createMockExecutionContext()); + const result = dataLayerFunction.fn(data, args, createMockExecutionContext()); - expect(result).toEqual({ type: 'dataLayer', layerType: LayerTypes.DATA, ...args }); + expect(result).toEqual({ + type: 'dataLayer', + layerType: LayerTypes.DATA, + ...args, + table: data, + }); }); }); diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer.ts new file mode 100644 index 0000000000000..f36a0ea4c101f --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { DataLayerFn } from '../types'; +import { DATA_LAYER, LayerTypes } from '../constants'; +import { strings } from '../i18n'; +import { commonDataLayerArgs } from './common_data_layer_args'; + +export const dataLayerFunction: DataLayerFn = { + name: DATA_LAYER, + aliases: [], + type: DATA_LAYER, + help: strings.getDataLayerFnHelp(), + inputTypes: ['datatable'], + args: { ...commonDataLayerArgs }, + fn(table, args) { + return { + type: DATA_LAYER, + ...args, + accessors: args.accessors ?? [], + layerType: LayerTypes.DATA, + table, + }; + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer_config.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer_config.ts deleted file mode 100644 index d09b8481a6842..0000000000000 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/data_layer_config.ts +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not 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 } from '@kbn/expressions-plugin/common'; -import { DataLayerArgs, DataLayerConfigResult } from '../types'; -import { - DATA_LAYER, - LayerTypes, - SeriesTypes, - XScaleTypes, - YScaleTypes, - Y_CONFIG, -} from '../constants'; - -export const dataLayerConfigFunction: ExpressionFunctionDefinition< - typeof DATA_LAYER, - null, - DataLayerArgs, - DataLayerConfigResult -> = { - name: DATA_LAYER, - aliases: [], - type: DATA_LAYER, - help: i18n.translate('expressionXY.dataLayer.help', { - defaultMessage: `Configure a layer in the xy chart`, - }), - inputTypes: ['null'], - args: { - hide: { - types: ['boolean'], - default: false, - help: i18n.translate('expressionXY.dataLayer.hide.help', { - defaultMessage: 'Show / hide axis', - }), - }, - layerId: { - types: ['string'], - help: i18n.translate('expressionXY.dataLayer.layerId.help', { - defaultMessage: 'Layer ID', - }), - }, - xAccessor: { - types: ['string'], - help: i18n.translate('expressionXY.dataLayer.xAccessor.help', { - defaultMessage: 'X-axis', - }), - }, - seriesType: { - types: ['string'], - options: [...Object.values(SeriesTypes)], - help: i18n.translate('expressionXY.dataLayer.seriesType.help', { - defaultMessage: 'The type of chart to display.', - }), - }, - xScaleType: { - options: [...Object.values(XScaleTypes)], - help: i18n.translate('expressionXY.dataLayer.xScaleType.help', { - defaultMessage: 'The scale type of the x axis', - }), - default: XScaleTypes.ORDINAL, - }, - isHistogram: { - types: ['boolean'], - default: false, - help: i18n.translate('expressionXY.dataLayer.isHistogram.help', { - defaultMessage: 'Whether to layout the chart as a histogram', - }), - }, - yScaleType: { - options: [...Object.values(YScaleTypes)], - help: i18n.translate('expressionXY.dataLayer.yScaleType.help', { - defaultMessage: 'The scale type of the y axes', - }), - default: YScaleTypes.LINEAR, - }, - splitAccessor: { - types: ['string'], - help: i18n.translate('expressionXY.dataLayer.splitAccessor.help', { - defaultMessage: 'The column to split by', - }), - }, - accessors: { - types: ['string'], - help: i18n.translate('expressionXY.dataLayer.accessors.help', { - defaultMessage: 'The columns to display on the y axis.', - }), - multi: true, - }, - yConfig: { - types: [Y_CONFIG], - help: i18n.translate('expressionXY.dataLayer.yConfig.help', { - defaultMessage: 'Additional configuration for y axes', - }), - multi: true, - }, - columnToLabel: { - types: ['string'], - help: i18n.translate('expressionXY.dataLayer.columnToLabel.help', { - defaultMessage: 'JSON key-value pairs of column ID to label', - }), - }, - palette: { - types: ['palette', 'system_palette'], - help: i18n.translate('expressionXY.dataLayer.palette.help', { - defaultMessage: 'Palette', - }), - default: '{palette}', - }, - }, - fn(input, args) { - return { - type: DATA_LAYER, - ...args, - layerType: LayerTypes.DATA, - }; - }, -}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_annotation_layer.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_annotation_layer.ts new file mode 100644 index 0000000000000..539c11854355c --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_annotation_layer.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 type { Datatable, ExpressionFunctionDefinition } from '@kbn/expressions-plugin/common'; +import { LayerTypes, EXTENDED_ANNOTATION_LAYER } from '../constants'; +import { ExtendedAnnotationLayerConfigResult, ExtendedAnnotationLayerArgs } from '../types'; +import { strings } from '../i18n'; + +export function extendedAnnotationLayerFunction(): ExpressionFunctionDefinition< + typeof EXTENDED_ANNOTATION_LAYER, + Datatable, + ExtendedAnnotationLayerArgs, + ExtendedAnnotationLayerConfigResult +> { + return { + name: EXTENDED_ANNOTATION_LAYER, + aliases: [], + type: EXTENDED_ANNOTATION_LAYER, + inputTypes: ['datatable'], + help: strings.getAnnotationLayerFnHelp(), + args: { + hide: { + types: ['boolean'], + default: false, + help: strings.getAnnotationLayerHideHelp(), + }, + annotations: { + types: ['manual_point_event_annotation', 'manual_range_event_annotation'], + help: strings.getAnnotationLayerAnnotationsHelp(), + multi: true, + }, + layerId: { + types: ['string'], + help: strings.getLayerIdHelp(), + }, + }, + fn: (input, args) => { + return { + type: EXTENDED_ANNOTATION_LAYER, + ...args, + annotations: args.annotations ?? [], + layerType: LayerTypes.ANNOTATIONS, + }; + }, + }; +} diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_data_layer.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_data_layer.ts new file mode 100644 index 0000000000000..84c1213fc069d --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_data_layer.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 { ExtendedDataLayerFn } from '../types'; +import { EXTENDED_DATA_LAYER, LayerTypes } from '../constants'; +import { strings } from '../i18n'; +import { commonDataLayerArgs } from './common_data_layer_args'; + +export const extendedDataLayerFunction: ExtendedDataLayerFn = { + name: EXTENDED_DATA_LAYER, + aliases: [], + type: EXTENDED_DATA_LAYER, + help: strings.getDataLayerFnHelp(), + inputTypes: ['datatable'], + args: { + ...commonDataLayerArgs, + table: { + types: ['datatable'], + help: strings.getTableHelp(), + }, + layerId: { + types: ['string'], + help: strings.getLayerIdHelp(), + }, + }, + fn(input, args) { + return { + type: EXTENDED_DATA_LAYER, + ...args, + accessors: args.accessors ?? [], + layerType: LayerTypes.DATA, + table: args.table ?? input, + }; + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_reference_line_layer.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_reference_line_layer.ts new file mode 100644 index 0000000000000..4f75838bea114 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_reference_line_layer.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 { LayerTypes, EXTENDED_REFERENCE_LINE_LAYER } from '../constants'; +import { ExtendedReferenceLineLayerFn } from '../types'; +import { strings } from '../i18n'; +import { commonReferenceLineLayerArgs } from './common_reference_line_layer_args'; + +export const extendedReferenceLineLayerFunction: ExtendedReferenceLineLayerFn = { + name: EXTENDED_REFERENCE_LINE_LAYER, + aliases: [], + type: EXTENDED_REFERENCE_LINE_LAYER, + help: strings.getRLHelp(), + inputTypes: ['datatable'], + args: { + ...commonReferenceLineLayerArgs, + table: { + types: ['datatable'], + help: strings.getTableHelp(), + }, + layerId: { + types: ['string'], + help: strings.getLayerIdHelp(), + }, + }, + fn(input, args) { + return { + type: EXTENDED_REFERENCE_LINE_LAYER, + ...args, + accessors: args.accessors ?? [], + layerType: LayerTypes.REFERENCELINE, + table: args.table ?? input, + }; + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_y_axis_config.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_y_axis_config.ts new file mode 100644 index 0000000000000..606cdd84ac710 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/extended_y_axis_config.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 { i18n } from '@kbn/i18n'; +import { + AvailableReferenceLineIcons, + EXTENDED_Y_CONFIG, + FillStyles, + IconPositions, + LineStyles, +} from '../constants'; +import { strings } from '../i18n'; +import { ExtendedYConfigFn } from '../types'; +import { commonYConfigArgs } from './common_y_config_args'; + +export const extendedYAxisConfigFunction: ExtendedYConfigFn = { + name: EXTENDED_Y_CONFIG, + aliases: [], + type: EXTENDED_Y_CONFIG, + help: strings.getYConfigFnHelp(), + inputTypes: ['null'], + args: { + ...commonYConfigArgs, + lineStyle: { + types: ['string'], + options: [...Object.values(LineStyles)], + help: i18n.translate('expressionXY.yConfig.lineStyle.help', { + defaultMessage: 'The style of the reference line', + }), + strict: true, + }, + lineWidth: { + types: ['number'], + help: i18n.translate('expressionXY.yConfig.lineWidth.help', { + defaultMessage: 'The width of the reference line', + }), + }, + icon: { + types: ['string'], + help: i18n.translate('expressionXY.yConfig.icon.help', { + defaultMessage: 'An optional icon used for reference lines', + }), + options: [...Object.values(AvailableReferenceLineIcons)], + strict: true, + }, + iconPosition: { + types: ['string'], + options: [...Object.values(IconPositions)], + help: i18n.translate('expressionXY.yConfig.iconPosition.help', { + defaultMessage: 'The placement of the icon for the reference line', + }), + strict: true, + }, + textVisibility: { + types: ['boolean'], + help: i18n.translate('expressionXY.yConfig.textVisibility.help', { + defaultMessage: 'Visibility of the label on the reference line', + }), + }, + fill: { + types: ['string'], + options: [...Object.values(FillStyles)], + help: i18n.translate('expressionXY.yConfig.fill.help', { + defaultMessage: 'Fill', + }), + strict: true, + }, + }, + fn(input, args) { + return { + type: EXTENDED_Y_CONFIG, + ...args, + }; + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/index.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/index.ts index 5c7e013a91332..ab1d570a07351 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/index.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/index.ts @@ -7,13 +7,18 @@ */ export * from './xy_vis'; +export * from './layered_xy_vis'; export * from './legend_config'; -export * from './annotation_layer_config'; +export * from './annotation_layer'; +export * from './extended_annotation_layer'; export * from './y_axis_config'; -export * from './data_layer_config'; +export * from './extended_y_axis_config'; +export * from './data_layer'; +export * from './extended_data_layer'; export * from './grid_lines_config'; export * from './axis_extent_config'; export * from './tick_labels_config'; export * from './labels_orientation_config'; -export * from './reference_line_layer_config'; +export * from './reference_line_layer'; +export * from './extended_reference_line_layer'; export * from './axis_titles_visibility_config'; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/layered_xy_vis.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/layered_xy_vis.ts new file mode 100644 index 0000000000000..6b926e1ceff05 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/layered_xy_vis.ts @@ -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 { i18n } from '@kbn/i18n'; +import { LayeredXyVisFn } from '../types'; +import { + EXTENDED_DATA_LAYER, + EXTENDED_REFERENCE_LINE_LAYER, + LAYERED_XY_VIS, + EXTENDED_ANNOTATION_LAYER, +} from '../constants'; +import { commonXYArgs } from './common_xy_args'; +import { strings } from '../i18n'; + +export const layeredXyVisFunction: LayeredXyVisFn = { + name: LAYERED_XY_VIS, + type: 'render', + inputTypes: ['datatable'], + help: strings.getXYHelp(), + args: { + ...commonXYArgs, + layers: { + types: [EXTENDED_DATA_LAYER, EXTENDED_REFERENCE_LINE_LAYER, EXTENDED_ANNOTATION_LAYER], + help: i18n.translate('expressionXY.layeredXyVis.layers.help', { + defaultMessage: 'Layers of visual series', + }), + multi: true, + }, + }, + async fn(data, args, handlers) { + const { layeredXyVisFn } = await import('./layered_xy_vis_fn'); + return await layeredXyVisFn(data, args, handlers); + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/layered_xy_vis_fn.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/layered_xy_vis_fn.ts new file mode 100644 index 0000000000000..4b7de0eba3166 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/layered_xy_vis_fn.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 { XY_VIS_RENDERER } from '../constants'; +import { appendLayerIds } from '../helpers'; +import { LayeredXyVisFn } from '../types'; +import { logDatatables } from '../utils'; + +export const layeredXyVisFn: LayeredXyVisFn['fn'] = async (data, args, handlers) => { + const layers = appendLayerIds(args.layers ?? [], 'layers'); + + logDatatables(layers, handlers); + + return { + type: 'render', + as: XY_VIS_RENDERER, + value: { + args: { + ...args, + layers, + ariaLabel: + args.ariaLabel ?? + (handlers.variables?.embeddableTitle as string) ?? + handlers.getExecutionContext?.()?.description, + }, + }, + }; +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config.test.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config.test.ts index 9d58903e93c62..48e6d1c956acb 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config.test.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config.test.ts @@ -12,9 +12,9 @@ import { LegendConfig } from '../types'; import { legendConfigFunction } from './legend_config'; describe('legendConfigFunction', () => { - test('produces the correct arguments', () => { + test('produces the correct arguments', async () => { const args: LegendConfig = { isVisible: true, position: Position.Left }; - const result = legendConfigFunction.fn(null, args, createMockExecutionContext()); + const result = await legendConfigFunction.fn(null, args, createMockExecutionContext()); expect(result).toEqual({ type: 'legendConfig', ...args }); }); diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config.ts index 65f8a725518a3..2b383f1899d44 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config.ts @@ -8,16 +8,10 @@ import { HorizontalAlignment, Position, VerticalAlignment } from '@elastic/charts'; import { i18n } from '@kbn/i18n'; -import type { ExpressionFunctionDefinition } from '@kbn/expressions-plugin/common'; import { LEGEND_CONFIG } from '../constants'; -import { LegendConfig, LegendConfigResult } from '../types'; +import { LegendConfigFn } from '../types'; -export const legendConfigFunction: ExpressionFunctionDefinition< - typeof LEGEND_CONFIG, - null, - LegendConfig, - LegendConfigResult -> = { +export const legendConfigFunction: LegendConfigFn = { name: LEGEND_CONFIG, aliases: [], type: LEGEND_CONFIG, @@ -31,6 +25,7 @@ export const legendConfigFunction: ExpressionFunctionDefinition< help: i18n.translate('expressionXY.legendConfig.isVisible.help', { defaultMessage: 'Specifies whether or not the legend is visible.', }), + default: true, }, position: { types: ['string'], @@ -38,6 +33,7 @@ export const legendConfigFunction: ExpressionFunctionDefinition< help: i18n.translate('expressionXY.legendConfig.position.help', { defaultMessage: 'Specifies the legend position.', }), + strict: true, }, showSingleSeries: { types: ['boolean'], @@ -58,6 +54,7 @@ export const legendConfigFunction: ExpressionFunctionDefinition< defaultMessage: 'Specifies the horizontal alignment of the legend when it is displayed inside chart.', }), + strict: true, }, verticalAlignment: { types: ['string'], @@ -66,6 +63,7 @@ export const legendConfigFunction: ExpressionFunctionDefinition< defaultMessage: 'Specifies the vertical alignment of the legend when it is displayed inside chart.', }), + strict: true, }, floatingColumns: { types: ['number'], @@ -93,10 +91,8 @@ export const legendConfigFunction: ExpressionFunctionDefinition< }), }, }, - fn(input, args) { - return { - type: LEGEND_CONFIG, - ...args, - }; + async fn(input, args, handlers) { + const { legendConfigFn } = await import('./legend_config_fn'); + return await legendConfigFn(input, args, handlers); }, }; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config_fn.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config_fn.ts new file mode 100644 index 0000000000000..35df125ae230f --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/legend_config_fn.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { LEGEND_CONFIG } from '../constants'; +import { LegendConfigFn } from '../types'; + +const errors = { + positionUsageWithIsInsideError: () => + i18n.translate( + 'expressionXY.reusable.function.legendConfig.errors.positionUsageWithIsInsideError', + { + defaultMessage: + '`position` argument is not applied if `isInside = true`. Please, use `horizontalAlignment` and `verticalAlignment` arguments instead.', + } + ), + alignmentUsageWithFalsyIsInsideError: () => + i18n.translate( + 'expressionXY.reusable.function.legendConfig.errors.alignmentUsageWithFalsyIsInsideError', + { + defaultMessage: + '`horizontalAlignment` and `verticalAlignment` arguments are not applied if `isInside = false`. Please, use the `position` argument instead.', + } + ), + floatingColumnsWithFalsyIsInsideError: () => + i18n.translate( + 'expressionXY.reusable.function.legendConfig.errors.floatingColumnsWithFalsyIsInsideError', + { + defaultMessage: '`floatingColumns` arguments are not applied if `isInside = false`.', + } + ), + legendSizeWithFalsyIsInsideError: () => + i18n.translate( + 'expressionXY.reusable.function.legendConfig.errors.legendSizeWithFalsyIsInsideError', + { + defaultMessage: '`legendSize` argument is not applied if `isInside = false`.', + } + ), +}; + +export const legendConfigFn: LegendConfigFn['fn'] = async (data, args) => { + if (args.isInside) { + if (args.position) { + throw new Error(errors.positionUsageWithIsInsideError()); + } + + if (args.legendSize !== undefined) { + throw new Error(errors.legendSizeWithFalsyIsInsideError()); + } + } + + if (!args.isInside) { + if (args.verticalAlignment || args.horizontalAlignment) { + throw new Error(errors.alignmentUsageWithFalsyIsInsideError()); + } + + if (args.floatingColumns !== undefined) { + throw new Error(errors.floatingColumnsWithFalsyIsInsideError()); + } + } + + return { type: LEGEND_CONFIG, ...args }; +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/reference_line_layer.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/reference_line_layer.ts new file mode 100644 index 0000000000000..9c6e27c958530 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/reference_line_layer.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { LayerTypes, REFERENCE_LINE_LAYER } from '../constants'; +import { ReferenceLineLayerFn } from '../types'; +import { strings } from '../i18n'; +import { commonReferenceLineLayerArgs } from './common_reference_line_layer_args'; + +export const referenceLineLayerFunction: ReferenceLineLayerFn = { + name: REFERENCE_LINE_LAYER, + aliases: [], + type: REFERENCE_LINE_LAYER, + help: strings.getRLHelp(), + inputTypes: ['datatable'], + args: { ...commonReferenceLineLayerArgs }, + fn(table, args) { + return { + type: REFERENCE_LINE_LAYER, + ...args, + accessors: args.accessors ?? [], + layerType: LayerTypes.REFERENCELINE, + table, + }; + }, +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/reference_line_layer_config.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/reference_line_layer_config.ts deleted file mode 100644 index 46f6e7671c0ab..0000000000000 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/reference_line_layer_config.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 type { ExpressionFunctionDefinition } from '@kbn/expressions-plugin/common'; -import { LayerTypes, REFERENCE_LINE_LAYER, Y_CONFIG } from '../constants'; -import { ReferenceLineLayerArgs, ReferenceLineLayerConfigResult } from '../types'; - -export const referenceLineLayerConfigFunction: ExpressionFunctionDefinition< - typeof REFERENCE_LINE_LAYER, - null, - ReferenceLineLayerArgs, - ReferenceLineLayerConfigResult -> = { - name: REFERENCE_LINE_LAYER, - aliases: [], - type: REFERENCE_LINE_LAYER, - help: i18n.translate('expressionXY.referenceLineLayer.help', { - defaultMessage: `Configure a reference line in the xy chart`, - }), - inputTypes: ['null'], - args: { - layerId: { - types: ['string'], - help: i18n.translate('expressionXY.referenceLineLayer.layerId.help', { - defaultMessage: `Layer ID`, - }), - }, - accessors: { - types: ['string'], - help: i18n.translate('expressionXY.referenceLineLayer.accessors.help', { - defaultMessage: 'The columns to display on the y axis.', - }), - multi: true, - }, - yConfig: { - types: [Y_CONFIG], - help: i18n.translate('expressionXY.referenceLineLayer.yConfig.help', { - defaultMessage: 'Additional configuration for y axes', - }), - multi: true, - }, - columnToLabel: { - types: ['string'], - help: i18n.translate('expressionXY.referenceLineLayer.columnToLabel.help', { - defaultMessage: 'JSON key-value pairs of column ID to label', - }), - }, - }, - fn(input, args) { - return { - type: REFERENCE_LINE_LAYER, - ...args, - layerType: LayerTypes.REFERENCELINE, - }; - }, -}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/validate.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/validate.ts new file mode 100644 index 0000000000000..55d7cb12382c0 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/validate.ts @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not 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 { AxisExtentModes, ValueLabelModes } from '../constants'; +import { + AxisExtentConfigResult, + DataLayerConfigResult, + ValueLabelMode, + CommonXYDataLayerConfig, +} from '../types'; + +const errors = { + extendBoundsAreInvalidError: () => + i18n.translate('expressionXY.reusable.function.xyVis.errors.extendBoundsAreInvalidError', { + defaultMessage: + 'For area and bar modes, and custom extent mode, the lower bound should be less or greater than 0 and the upper bound - be greater or equal than 0', + }), + notUsedFillOpacityError: () => + i18n.translate('expressionXY.reusable.function.xyVis.errors.notUsedFillOpacityError', { + defaultMessage: '`fillOpacity` argument is applicable only for area charts.', + }), + valueLabelsForNotBarsOrHistogramBarsChartsError: () => + i18n.translate( + 'expressionXY.reusable.function.xyVis.errors.valueLabelsForNotBarsOrHistogramBarsChartsError', + { + defaultMessage: + '`valueLabels` argument is applicable only for bar charts, which are not histograms.', + } + ), + dataBoundsForNotLineChartError: () => + i18n.translate('expressionXY.reusable.function.xyVis.errors.dataBoundsForNotLineChartError', { + defaultMessage: 'Only line charts can be fit to the data bounds', + }), +}; + +export const hasBarLayer = (layers: Array) => + layers.filter(({ seriesType }) => seriesType.includes('bar')).length > 0; + +export const hasAreaLayer = (layers: Array) => + layers.filter(({ seriesType }) => seriesType.includes('area')).length > 0; + +export const hasHistogramBarLayer = ( + layers: Array +) => + layers.filter(({ seriesType, isHistogram }) => seriesType.includes('bar') && isHistogram).length > + 0; + +export const isValidExtentWithCustomMode = (extent: AxisExtentConfigResult) => { + const isValidLowerBound = + extent.lowerBound === undefined || (extent.lowerBound !== undefined && extent.lowerBound <= 0); + const isValidUpperBound = + extent.upperBound === undefined || (extent.upperBound !== undefined && extent.upperBound >= 0); + + return isValidLowerBound && isValidUpperBound; +}; + +export const validateExtentForDataBounds = ( + extent: AxisExtentConfigResult, + layers: Array +) => { + const lineSeries = layers.filter(({ seriesType }) => seriesType.includes('line')); + if (!lineSeries.length && extent.mode === AxisExtentModes.DATA_BOUNDS) { + throw new Error(errors.dataBoundsForNotLineChartError()); + } +}; + +export const validateExtent = ( + extent: AxisExtentConfigResult, + hasBarOrArea: boolean, + dataLayers: Array +) => { + if ( + extent.mode === AxisExtentModes.CUSTOM && + hasBarOrArea && + !isValidExtentWithCustomMode(extent) + ) { + throw new Error(errors.extendBoundsAreInvalidError()); + } + + validateExtentForDataBounds(extent, dataLayers); +}; + +export const validateFillOpacity = (fillOpacity: number | undefined, hasArea: boolean) => { + if (fillOpacity !== undefined && !hasArea) { + throw new Error(errors.notUsedFillOpacityError()); + } +}; + +export const validateValueLabels = ( + valueLabels: ValueLabelMode, + hasBar: boolean, + hasNotHistogramBars: boolean +) => { + if ((!hasBar || !hasNotHistogramBars) && valueLabels !== ValueLabelModes.HIDE) { + throw new Error(errors.valueLabelsForNotBarsOrHistogramBarsChartsError()); + } +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis.test.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis.test.ts index 27e68f0a49891..688efbe122f3e 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis.test.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis.test.ts @@ -8,14 +8,23 @@ import { xyVisFunction } from '.'; import { createMockExecutionContext } from '@kbn/expressions-plugin/common/mocks'; -import { sampleArgs } from '../__mocks__'; +import { sampleArgs, sampleLayer } from '../__mocks__'; import { XY_VIS } from '../constants'; describe('xyVis', () => { - test('it renders with the specified data and args', () => { + test('it renders with the specified data and args', async () => { const { data, args } = sampleArgs(); - const result = xyVisFunction.fn(data, args, createMockExecutionContext()); + const { layers, ...rest } = args; + const result = await xyVisFunction.fn( + data, + { ...rest, dataLayers: [sampleLayer], referenceLineLayers: [], annotationLayers: [] }, + createMockExecutionContext() + ); - expect(result).toEqual({ type: 'render', as: XY_VIS, value: { data, args } }); + expect(result).toEqual({ + type: 'render', + as: XY_VIS, + value: { args: { ...rest, layers: [sampleLayer] } }, + }); }); }); diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis.ts index 227b7553d6414..2e97cb00b3e55 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis.ts @@ -6,243 +6,36 @@ * Side Public License, v 1. */ -import { i18n } from '@kbn/i18n'; -import type { ExpressionFunctionDefinition } from '@kbn/expressions-plugin'; -import { prepareLogTable } from '@kbn/visualizations-plugin/common/utils'; -import { LensMultiTable, XYArgs, XYRender } from '../types'; -import { - XY_VIS, - DATA_LAYER, - MULTITABLE, - XYCurveTypes, - LEGEND_CONFIG, - ValueLabelModes, - FittingFunctions, - GRID_LINES_CONFIG, - XY_VIS_RENDERER, - AXIS_EXTENT_CONFIG, - TICK_LABELS_CONFIG, - REFERENCE_LINE_LAYER, - LABELS_ORIENTATION_CONFIG, - AXIS_TITLES_VISIBILITY_CONFIG, - EndValues, - ANNOTATION_LAYER, - LayerTypes, -} from '../constants'; +import { XyVisFn } from '../types'; +import { XY_VIS, DATA_LAYER, REFERENCE_LINE_LAYER, ANNOTATION_LAYER } from '../constants'; +import { strings } from '../i18n'; +import { commonXYArgs } from './common_xy_args'; -const strings = { - getMetricHelp: () => - i18n.translate('expressionXY.xyVis.logDatatable.metric', { - defaultMessage: 'Vertical axis', - }), - getXAxisHelp: () => - i18n.translate('expressionXY.xyVis.logDatatable.x', { - defaultMessage: 'Horizontal axis', - }), - getBreakdownHelp: () => - i18n.translate('expressionXY.xyVis.logDatatable.breakDown', { - defaultMessage: 'Break down by', - }), - getReferenceLineHelp: () => - i18n.translate('expressionXY.xyVis.logDatatable.breakDown', { - defaultMessage: 'Break down by', - }), -}; - -export const xyVisFunction: ExpressionFunctionDefinition< - typeof XY_VIS, - LensMultiTable, - XYArgs, - XYRender -> = { +export const xyVisFunction: XyVisFn = { name: XY_VIS, type: 'render', - inputTypes: [MULTITABLE], - help: i18n.translate('expressionXY.xyVis.help', { - defaultMessage: 'An X/Y chart', - }), + inputTypes: ['datatable'], + help: strings.getXYHelp(), args: { - title: { - types: ['string'], - help: 'The chart title.', - }, - description: { - types: ['string'], - help: '', - }, - xTitle: { - types: ['string'], - help: i18n.translate('expressionXY.xyVis.xTitle.help', { - defaultMessage: 'X axis title', - }), - }, - yTitle: { - types: ['string'], - help: i18n.translate('expressionXY.xyVis.yLeftTitle.help', { - defaultMessage: 'Y left axis title', - }), - }, - yRightTitle: { - types: ['string'], - help: i18n.translate('expressionXY.xyVis.yRightTitle.help', { - defaultMessage: 'Y right axis title', - }), - }, - yLeftExtent: { - types: [AXIS_EXTENT_CONFIG], - help: i18n.translate('expressionXY.xyVis.yLeftExtent.help', { - defaultMessage: 'Y left axis extents', - }), - }, - yRightExtent: { - types: [AXIS_EXTENT_CONFIG], - help: i18n.translate('expressionXY.xyVis.yRightExtent.help', { - defaultMessage: 'Y right axis extents', - }), - }, - legend: { - types: [LEGEND_CONFIG], - help: i18n.translate('expressionXY.xyVis.legend.help', { - defaultMessage: 'Configure the chart legend.', - }), - }, - fittingFunction: { - types: ['string'], - options: [...Object.values(FittingFunctions)], - help: i18n.translate('expressionXY.xyVis.fittingFunction.help', { - defaultMessage: 'Define how missing values are treated', - }), - }, - endValue: { - types: ['string'], - options: [...Object.values(EndValues)], - help: i18n.translate('expressionXY.xyVis.endValue.help', { - defaultMessage: 'End value', - }), - }, - emphasizeFitting: { - types: ['boolean'], - default: false, - help: '', - }, - valueLabels: { - types: ['string'], - options: [...Object.values(ValueLabelModes)], - help: i18n.translate('expressionXY.xyVis.valueLabels.help', { - defaultMessage: 'Value labels mode', - }), - }, - tickLabelsVisibilitySettings: { - types: [TICK_LABELS_CONFIG], - help: i18n.translate('expressionXY.xyVis.tickLabelsVisibilitySettings.help', { - defaultMessage: 'Show x and y axes tick labels', - }), - }, - labelsOrientation: { - types: [LABELS_ORIENTATION_CONFIG], - help: i18n.translate('expressionXY.xyVis.labelsOrientation.help', { - defaultMessage: 'Defines the rotation of the axis labels', - }), - }, - gridlinesVisibilitySettings: { - types: [GRID_LINES_CONFIG], - help: i18n.translate('expressionXY.xyVis.gridlinesVisibilitySettings.help', { - defaultMessage: 'Show x and y axes gridlines', - }), - }, - axisTitlesVisibilitySettings: { - types: [AXIS_TITLES_VISIBILITY_CONFIG], - help: i18n.translate('expressionXY.xyVis.axisTitlesVisibilitySettings.help', { - defaultMessage: 'Show x and y axes titles', - }), - }, - layers: { - types: [DATA_LAYER, REFERENCE_LINE_LAYER, ANNOTATION_LAYER], - help: i18n.translate('expressionXY.xyVis.layers.help', { - defaultMessage: 'Layers of visual series', - }), + ...commonXYArgs, + dataLayers: { + types: [DATA_LAYER], + help: strings.getDataLayerHelp(), multi: true, }, - curveType: { - types: ['string'], - options: [...Object.values(XYCurveTypes)], - help: i18n.translate('expressionXY.xyVis.curveType.help', { - defaultMessage: 'Define how curve type is rendered for a line chart', - }), - }, - fillOpacity: { - types: ['number'], - help: i18n.translate('expressionXY.xyVis.fillOpacity.help', { - defaultMessage: 'Define the area chart fill opacity', - }), - }, - hideEndzones: { - types: ['boolean'], - default: false, - help: i18n.translate('expressionXY.xyVis.hideEndzones.help', { - defaultMessage: 'Hide endzone markers for partial data', - }), - }, - valuesInLegend: { - types: ['boolean'], - default: false, - help: i18n.translate('expressionXY.xyVis.valuesInLegend.help', { - defaultMessage: 'Show values in legend', - }), + referenceLineLayers: { + types: [REFERENCE_LINE_LAYER], + help: strings.getReferenceLineLayerHelp(), + multi: true, }, - ariaLabel: { - types: ['string'], - help: i18n.translate('expressionXY.xyVis.ariaLabel.help', { - defaultMessage: 'Specifies the aria label of the xy chart', - }), - required: false, + annotationLayers: { + types: [ANNOTATION_LAYER], + help: strings.getAnnotationLayerHelp(), + multi: true, }, }, - fn(data, args, handlers) { - if (handlers?.inspectorAdapters?.tables) { - args.layers.forEach((layer) => { - if (layer.layerType === LayerTypes.ANNOTATIONS) { - return; - } - - let xAccessor; - let splitAccessor; - if (layer.layerType === LayerTypes.DATA) { - xAccessor = layer.xAccessor; - splitAccessor = layer.splitAccessor; - } - - const { layerId, accessors, layerType } = layer; - const logTable = prepareLogTable( - data.tables[layerId], - [ - [ - accessors ? accessors : undefined, - layerType === 'data' ? strings.getMetricHelp() : strings.getReferenceLineHelp(), - ], - [xAccessor ? [xAccessor] : undefined, strings.getXAxisHelp()], - [splitAccessor ? [splitAccessor] : undefined, strings.getBreakdownHelp()], - ], - true - ); - - handlers.inspectorAdapters.tables.logDatatable(layerId, logTable); - }); - } - - return { - type: 'render', - as: XY_VIS_RENDERER, - value: { - data, - args: { - ...args, - ariaLabel: - args.ariaLabel ?? - (handlers.variables?.embeddableTitle as string) ?? - handlers.getExecutionContext?.()?.description, - }, - }, - }; + async fn(data, args, handlers) { + const { xyVisFn } = await import('./xy_vis_fn'); + return await xyVisFn(data, args, handlers); }, }; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis_fn.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis_fn.ts new file mode 100644 index 0000000000000..1bd75e1296c6c --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/xy_vis_fn.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Dimension, prepareLogTable } from '@kbn/visualizations-plugin/common/utils'; +import { LayerTypes, XY_VIS_RENDERER } from '../constants'; +import { appendLayerIds } from '../helpers'; +import { XYLayerConfig, XyVisFn } from '../types'; +import { getLayerDimensions } from '../utils'; +import { + hasAreaLayer, + hasBarLayer, + hasHistogramBarLayer, + validateExtent, + validateFillOpacity, + validateValueLabels, +} from './validate'; + +export const xyVisFn: XyVisFn['fn'] = async (data, args, handlers) => { + const { dataLayers = [], referenceLineLayers = [], annotationLayers = [], ...restArgs } = args; + const layers: XYLayerConfig[] = [ + ...appendLayerIds(dataLayers, 'dataLayers'), + ...appendLayerIds(referenceLineLayers, 'referenceLineLayers'), + ...appendLayerIds(annotationLayers, 'annotationLayers'), + ]; + + if (handlers.inspectorAdapters.tables) { + const layerDimensions = layers.reduce((dimensions, layer) => { + if (layer.layerType === LayerTypes.ANNOTATIONS) { + return dimensions; + } + + return [...dimensions, ...getLayerDimensions(layer)]; + }, []); + + const logTable = prepareLogTable(data, layerDimensions, true); + handlers.inspectorAdapters.tables.logDatatable('default', logTable); + } + + const hasBar = hasBarLayer(dataLayers); + const hasArea = hasAreaLayer(dataLayers); + + validateExtent(args.yLeftExtent, hasBar || hasArea, dataLayers); + validateExtent(args.yRightExtent, hasBar || hasArea, dataLayers); + validateFillOpacity(args.fillOpacity, hasArea); + + const hasNotHistogramBars = !hasHistogramBarLayer(dataLayers); + + validateValueLabels(args.valueLabels, hasBar, hasNotHistogramBars); + + return { + type: 'render', + as: XY_VIS_RENDERER, + value: { + args: { + ...restArgs, + layers, + ariaLabel: + args.ariaLabel ?? + (handlers.variables?.embeddableTitle as string) ?? + handlers.getExecutionContext?.()?.description, + }, + }, + }; +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/expression_functions/y_axis_config.ts b/src/plugins/chart_expressions/expression_xy/common/expression_functions/y_axis_config.ts index 943c6910952a0..882a3231148f5 100644 --- a/src/plugins/chart_expressions/expression_xy/common/expression_functions/y_axis_config.ts +++ b/src/plugins/chart_expressions/expression_xy/common/expression_functions/y_axis_config.ts @@ -6,84 +6,18 @@ * Side Public License, v 1. */ -import { i18n } from '@kbn/i18n'; -import type { ExpressionFunctionDefinition } from '@kbn/expressions-plugin/common'; -import { FillStyles, IconPositions, LineStyles, YAxisModes, Y_CONFIG } from '../constants'; -import { YConfig, YConfigResult } from '../types'; +import { Y_CONFIG } from '../constants'; +import { YConfigFn } from '../types'; +import { strings } from '../i18n'; +import { commonYConfigArgs } from './common_y_config_args'; -export const yAxisConfigFunction: ExpressionFunctionDefinition< - typeof Y_CONFIG, - null, - YConfig, - YConfigResult -> = { +export const yAxisConfigFunction: YConfigFn = { name: Y_CONFIG, aliases: [], type: Y_CONFIG, - help: i18n.translate('expressionXY.yConfig.help', { - defaultMessage: `Configure the behavior of a xy chart's y axis metric`, - }), + help: strings.getYConfigFnHelp(), inputTypes: ['null'], - args: { - forAccessor: { - types: ['string'], - help: i18n.translate('expressionXY.yConfig.forAccessor.help', { - defaultMessage: 'The accessor this configuration is for', - }), - }, - axisMode: { - types: ['string'], - options: [...Object.values(YAxisModes)], - help: i18n.translate('expressionXY.yConfig.axisMode.help', { - defaultMessage: 'The axis mode of the metric', - }), - }, - color: { - types: ['string'], - help: i18n.translate('expressionXY.yConfig.color.help', { - defaultMessage: 'The color of the series', - }), - }, - lineStyle: { - types: ['string'], - options: [...Object.values(LineStyles)], - help: i18n.translate('expressionXY.yConfig.lineStyle.help', { - defaultMessage: 'The style of the reference line', - }), - }, - lineWidth: { - types: ['number'], - help: i18n.translate('expressionXY.yConfig.lineWidth.help', { - defaultMessage: 'The width of the reference line', - }), - }, - icon: { - types: ['string'], - help: i18n.translate('expressionXY.yConfig.icon.help', { - defaultMessage: 'An optional icon used for reference lines', - }), - }, - iconPosition: { - types: ['string'], - options: [...Object.values(IconPositions)], - help: i18n.translate('expressionXY.yConfig.iconPosition.help', { - defaultMessage: 'The placement of the icon for the reference line', - }), - }, - textVisibility: { - types: ['boolean'], - help: i18n.translate('expressionXY.yConfig.textVisibility.help', { - defaultMessage: 'Visibility of the label on the reference line', - }), - }, - fill: { - types: ['string'], - options: [...Object.values(FillStyles)], - help: i18n.translate('expressionXY.yConfig.fill.help', { - defaultMessage: 'Fill', - }), - }, - }, + args: { ...commonYConfigArgs }, fn(input, args) { return { type: Y_CONFIG, diff --git a/src/plugins/kibana_usage_collection/server/collectors/ui_counters/rollups/index.ts b/src/plugins/chart_expressions/expression_xy/common/helpers/index.ts similarity index 84% rename from src/plugins/kibana_usage_collection/server/collectors/ui_counters/rollups/index.ts rename to src/plugins/chart_expressions/expression_xy/common/helpers/index.ts index c4ce88e1a851a..55c4136e0c00d 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/ui_counters/rollups/index.ts +++ b/src/plugins/chart_expressions/expression_xy/common/helpers/index.ts @@ -6,4 +6,4 @@ * Side Public License, v 1. */ -export { registerUiCountersRollups } from './register_rollups'; +export { appendLayerIds } from './layers'; diff --git a/src/plugins/chart_expressions/expression_xy/common/helpers/layers.test.ts b/src/plugins/chart_expressions/expression_xy/common/helpers/layers.test.ts new file mode 100644 index 0000000000000..ac44ef18fc505 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/helpers/layers.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 { generateLayerId, appendLayerIds } from './layers'; + +describe('#generateLayerId', () => { + it('should return the combination of keyword and index', () => { + const key = 'some-key'; + const index = 10; + const id = generateLayerId(key, index); + expect(id).toBe(`${key}-${index}`); + }); +}); + +describe('#appendLayerIds', () => { + it('should add layerId to each layer', () => { + const layers = [{ name: 'someName' }, { name: 'someName2' }, { name: 'someName3' }]; + const keyword = 'keyword'; + const expectedLayerIds = [ + { ...layers[0], layerId: `${keyword}-0` }, + { ...layers[1], layerId: `${keyword}-1` }, + { ...layers[2], layerId: `${keyword}-2` }, + ]; + + const layersWithIds = appendLayerIds(layers, keyword); + expect(layersWithIds).toStrictEqual(expectedLayerIds); + }); + + it('should filter out undefined layers', () => { + const layers = [undefined, undefined, undefined]; + const result = appendLayerIds(layers, 'some-key'); + expect(result).toStrictEqual([]); + + const layers2 = [{ name: 'someName' }, undefined, { name: 'someName3' }]; + const keyword = 'keyword'; + const expectedLayerIds = [ + { ...layers2[0], layerId: `${keyword}-0` }, + { ...layers2[2], layerId: `${keyword}-1` }, + ]; + + const layersWithIds = appendLayerIds(layers2, keyword); + expect(layersWithIds).toStrictEqual(expectedLayerIds); + }); +}); diff --git a/src/plugins/chart_expressions/expression_xy/common/helpers/layers.ts b/src/plugins/chart_expressions/expression_xy/common/helpers/layers.ts new file mode 100644 index 0000000000000..d62ea264acb1a --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/helpers/layers.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { WithLayerId } from '../types'; + +function isWithLayerId(layer: T): layer is T & WithLayerId { + return (layer as T & WithLayerId).layerId ? true : false; +} + +export const generateLayerId = (keyword: string, index: number) => `${keyword}-${index}`; + +export function appendLayerIds( + layers: Array, + keyword: string +): Array { + return layers + .filter((l): l is T => l !== undefined) + .map((l, index) => ({ + ...l, + layerId: isWithLayerId(l) ? l.layerId : generateLayerId(keyword, index), + })); +} diff --git a/src/plugins/chart_expressions/expression_xy/common/i18n/index.tsx b/src/plugins/chart_expressions/expression_xy/common/i18n/index.tsx new file mode 100644 index 0000000000000..225f9de0d6a7c --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/i18n/index.tsx @@ -0,0 +1,212 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not 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 strings = { + getXYHelp: () => + i18n.translate('expressionXY.xyVis.help', { + defaultMessage: 'An X/Y chart', + }), + getMetricHelp: () => + i18n.translate('expressionXY.xyVis.logDatatable.metric', { + defaultMessage: 'Vertical axis', + }), + getXAxisHelp: () => + i18n.translate('expressionXY.xyVis.logDatatable.x', { + defaultMessage: 'Horizontal axis', + }), + getBreakdownHelp: () => + i18n.translate('expressionXY.xyVis.logDatatable.breakDown', { + defaultMessage: 'Break down by', + }), + getReferenceLineHelp: () => + i18n.translate('expressionXY.xyVis.logDatatable.breakDown', { + defaultMessage: 'Break down by', + }), + getXTitleHelp: () => + i18n.translate('expressionXY.xyVis.xTitle.help', { + defaultMessage: 'X axis title', + }), + getYTitleHelp: () => + i18n.translate('expressionXY.xyVis.yLeftTitle.help', { + defaultMessage: 'Y left axis title', + }), + getYRightTitleHelp: () => + i18n.translate('expressionXY.xyVis.yRightTitle.help', { + defaultMessage: 'Y right axis title', + }), + getYLeftExtentHelp: () => + i18n.translate('expressionXY.xyVis.yLeftExtent.help', { + defaultMessage: 'Y left axis extents', + }), + getYRightExtentHelp: () => + i18n.translate('expressionXY.xyVis.yRightExtent.help', { + defaultMessage: 'Y right axis extents', + }), + getLegendHelp: () => + i18n.translate('expressionXY.xyVis.legend.help', { + defaultMessage: 'Configure the chart legend.', + }), + getFittingFunctionHelp: () => + i18n.translate('expressionXY.xyVis.fittingFunction.help', { + defaultMessage: 'Define how missing values are treated', + }), + getEndValueHelp: () => + i18n.translate('expressionXY.xyVis.endValue.help', { + defaultMessage: 'End value', + }), + getValueLabelsHelp: () => + i18n.translate('expressionXY.xyVis.valueLabels.help', { + defaultMessage: 'Value labels mode', + }), + getTickLabelsVisibilitySettingsHelp: () => + i18n.translate('expressionXY.xyVis.tickLabelsVisibilitySettings.help', { + defaultMessage: 'Show x and y axes tick labels', + }), + getLabelsOrientationHelp: () => + i18n.translate('expressionXY.xyVis.labelsOrientation.help', { + defaultMessage: 'Defines the rotation of the axis labels', + }), + getGridlinesVisibilitySettingsHelp: () => + i18n.translate('expressionXY.xyVis.gridlinesVisibilitySettings.help', { + defaultMessage: 'Show x and y axes gridlines', + }), + getAxisTitlesVisibilitySettingsHelp: () => + i18n.translate('expressionXY.xyVis.axisTitlesVisibilitySettings.help', { + defaultMessage: 'Show x and y axes titles', + }), + getDataLayerHelp: () => + i18n.translate('expressionXY.xyVis.dataLayer.help', { + defaultMessage: 'Data layer of visual series', + }), + getReferenceLineLayerHelp: () => + i18n.translate('expressionXY.xyVis.referenceLineLayer.help', { + defaultMessage: 'Reference line layer', + }), + getAnnotationLayerHelp: () => + i18n.translate('expressionXY.xyVis.annotationLayer.help', { + defaultMessage: 'Annotation layer', + }), + getCurveTypeHelp: () => + i18n.translate('expressionXY.xyVis.curveType.help', { + defaultMessage: 'Define how curve type is rendered for a line chart', + }), + getFillOpacityHelp: () => + i18n.translate('expressionXY.xyVis.fillOpacity.help', { + defaultMessage: 'Define the area chart fill opacity', + }), + getHideEndzonesHelp: () => + i18n.translate('expressionXY.xyVis.hideEndzones.help', { + defaultMessage: 'Hide endzone markers for partial data', + }), + getValuesInLegendHelp: () => + i18n.translate('expressionXY.xyVis.valuesInLegend.help', { + defaultMessage: 'Show values in legend', + }), + getAriaLabelHelp: () => + i18n.translate('expressionXY.xyVis.ariaLabel.help', { + defaultMessage: 'Specifies the aria label of the xy chart', + }), + getDataLayerFnHelp: () => + i18n.translate('expressionXY.dataLayer.help', { + defaultMessage: `Configure a layer in the xy chart`, + }), + getHideHelp: () => + i18n.translate('expressionXY.dataLayer.hide.help', { + defaultMessage: 'Show / hide axis', + }), + getXAccessorHelp: () => + i18n.translate('expressionXY.dataLayer.xAccessor.help', { + defaultMessage: 'X-axis', + }), + getSeriesTypeHelp: () => + i18n.translate('expressionXY.dataLayer.seriesType.help', { + defaultMessage: 'The type of chart to display.', + }), + getXScaleTypeHelp: () => + i18n.translate('expressionXY.dataLayer.xScaleType.help', { + defaultMessage: 'The scale type of the x axis', + }), + getIsHistogramHelp: () => + i18n.translate('expressionXY.dataLayer.isHistogram.help', { + defaultMessage: 'Whether to layout the chart as a histogram', + }), + getYScaleTypeHelp: () => + i18n.translate('expressionXY.dataLayer.yScaleType.help', { + defaultMessage: 'The scale type of the y axes', + }), + getSplitAccessorHelp: () => + i18n.translate('expressionXY.dataLayer.splitAccessor.help', { + defaultMessage: 'The column to split by', + }), + getAccessorsHelp: () => + i18n.translate('expressionXY.dataLayer.accessors.help', { + defaultMessage: 'The columns to display on the y axis.', + }), + getYConfigHelp: () => + i18n.translate('expressionXY.dataLayer.yConfig.help', { + defaultMessage: 'Additional configuration for y axes', + }), + getColumnToLabelHelp: () => + i18n.translate('expressionXY.layer.columnToLabel.help', { + defaultMessage: 'JSON key-value pairs of column ID to label', + }), + getPaletteHelp: () => + i18n.translate('expressionXY.dataLayer.palette.help', { + defaultMessage: 'Palette', + }), + getTableHelp: () => + i18n.translate('expressionXY.layers.table.help', { + defaultMessage: 'Table', + }), + getLayerIdHelp: () => + i18n.translate('expressionXY.layers.layerId.help', { + defaultMessage: 'Layer ID', + }), + getRLAccessorsHelp: () => + i18n.translate('expressionXY.referenceLineLayer.accessors.help', { + defaultMessage: 'The columns to display on the y axis.', + }), + getRLYConfigHelp: () => + i18n.translate('expressionXY.referenceLineLayer.yConfig.help', { + defaultMessage: 'Additional configuration for y axes', + }), + getRLHelp: () => + i18n.translate('expressionXY.referenceLineLayer.help', { + defaultMessage: `Configure a reference line in the xy chart`, + }), + getYConfigFnHelp: () => + i18n.translate('expressionXY.yConfig.help', { + defaultMessage: `Configure the behavior of a xy chart's y axis metric`, + }), + getForAccessorHelp: () => + i18n.translate('expressionXY.yConfig.forAccessor.help', { + defaultMessage: 'The accessor this configuration is for', + }), + getAxisModeHelp: () => + i18n.translate('expressionXY.yConfig.axisMode.help', { + defaultMessage: 'The axis mode of the metric', + }), + getColorHelp: () => + i18n.translate('expressionXY.yConfig.color.help', { + defaultMessage: 'The color of the series', + }), + getAnnotationLayerFnHelp: () => + i18n.translate('expressionXY.annotationLayer.help', { + defaultMessage: `Configure an annotation layer in the xy chart`, + }), + getAnnotationLayerHideHelp: () => + i18n.translate('expressionXY.annotationLayer.hide.help', { + defaultMessage: 'Show / hide details', + }), + getAnnotationLayerAnnotationsHelp: () => + i18n.translate('expressionXY.annotationLayer.annotations.help', { + defaultMessage: 'Annotations', + }), +}; diff --git a/src/plugins/chart_expressions/expression_xy/common/index.ts b/src/plugins/chart_expressions/expression_xy/common/index.ts index 68f9f946baeb0..4bee4a3e7f2b6 100755 --- a/src/plugins/chart_expressions/expression_xy/common/index.ts +++ b/src/plugins/chart_expressions/expression_xy/common/index.ts @@ -9,20 +9,6 @@ export const PLUGIN_ID = 'expressionXy'; export const PLUGIN_NAME = 'expressionXy'; -export { - xyVisFunction, - yAxisConfigFunction, - legendConfigFunction, - gridlinesConfigFunction, - dataLayerConfigFunction, - axisExtentConfigFunction, - tickLabelsConfigFunction, - annotationLayerConfigFunction, - labelsOrientationConfigFunction, - referenceLineLayerConfigFunction, - axisTitlesVisibilityConfigFunction, -} from './expression_functions'; - export type { XYArgs, YConfig, @@ -42,25 +28,37 @@ export type { XYChartProps, LegendConfig, IconPosition, - YConfigResult, DataLayerArgs, LensMultiTable, ValueLabelMode, AxisExtentMode, + DataLayerConfig, FittingFunction, + ExtendedYConfig, AxisExtentConfig, + CollectiveConfig, LegendConfigResult, AxesSettingsConfig, + CommonXYLayerConfig, AnnotationLayerArgs, - XYLayerConfigResult, + ExtendedYConfigResult, GridlinesConfigResult, DataLayerConfigResult, TickLabelsConfigResult, AxisExtentConfigResult, ReferenceLineLayerArgs, + CommonXYDataLayerConfig, LabelsOrientationConfig, - AnnotationLayerConfigResult, + ReferenceLineLayerConfig, + AvailableReferenceLineIcon, + XYExtendedLayerConfigResult, + CommonXYAnnotationLayerConfig, + ExtendedDataLayerConfigResult, LabelsOrientationConfigResult, + CommonXYDataLayerConfigResult, ReferenceLineLayerConfigResult, + CommonXYReferenceLineLayerConfig, AxisTitlesVisibilityConfigResult, + ExtendedReferenceLineLayerConfigResult, + CommonXYReferenceLineLayerConfigResult, } from './types'; diff --git a/src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts b/src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts index a1984c78fe0ac..b3c7bca93ca29 100644 --- a/src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts +++ b/src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts @@ -9,7 +9,7 @@ import { HorizontalAlignment, Position, VerticalAlignment } from '@elastic/charts'; import { $Values } from '@kbn/utility-types'; import type { PaletteOutput } from '@kbn/coloring'; -import { Datatable } from '@kbn/expressions-plugin'; +import { Datatable, ExpressionFunctionDefinition } from '@kbn/expressions-plugin'; import { EventAnnotationOutput } from '@kbn/event-annotation-plugin/common'; import { AxisExtentModes, @@ -34,9 +34,17 @@ import { LEGEND_CONFIG, DATA_LAYER, AXIS_EXTENT_CONFIG, + EXTENDED_DATA_LAYER, + EXTENDED_REFERENCE_LINE_LAYER, ANNOTATION_LAYER, EndValues, + EXTENDED_Y_CONFIG, + AvailableReferenceLineIcons, + XY_VIS, + LAYERED_XY_VIS, + EXTENDED_ANNOTATION_LAYER, } from '../constants'; +import { XYRender } from './expression_renderers'; export type EndValue = $Values; export type LayerType = $Values; @@ -51,6 +59,7 @@ export type IconPosition = $Values; export type ValueLabelMode = $Values; export type AxisExtentMode = $Values; export type FittingFunction = $Values; +export type AvailableReferenceLineIcon = $Values; export interface AxesSettingsConfig { x: boolean; @@ -69,11 +78,8 @@ export interface AxisConfig { hide?: boolean; } -export interface YConfig { - forAccessor: string; - axisMode?: YAxisMode; - color?: string; - icon?: string; +export interface ExtendedYConfig extends YConfig { + icon?: AvailableReferenceLineIcon; lineWidth?: number; lineStyle?: LineStyle; fill?: FillStyle; @@ -81,12 +87,32 @@ export interface YConfig { textVisibility?: boolean; } +export interface YConfig { + forAccessor: string; + axisMode?: YAxisMode; + color?: string; +} + +export interface DataLayerArgs { + accessors: string[]; + seriesType: SeriesType; + xAccessor?: string; + hide?: boolean; + splitAccessor?: string; + columnToLabel?: string; // Actually a JSON key-value pair + yScaleType: YScaleType; + xScaleType: XScaleType; + isHistogram: boolean; + palette: PaletteOutput; + yConfig?: YConfigResult[]; +} + export interface ValidLayer extends DataLayerConfigResult { xAccessor: NonNullable; } -export interface DataLayerArgs { - layerId: string; +export interface ExtendedDataLayerArgs { + layerId?: string; accessors: string[]; seriesType: SeriesType; xAccessor?: string; @@ -96,9 +122,9 @@ export interface DataLayerArgs { yScaleType: YScaleType; xScaleType: XScaleType; isHistogram: boolean; - // palette will always be set on the expression palette: PaletteOutput; yConfig?: YConfigResult[]; + table?: Datatable; } export interface LegendConfig { @@ -121,11 +147,11 @@ export interface LegendConfig { /** * Horizontal Alignment of the legend when it is set inside chart */ - horizontalAlignment?: HorizontalAlignment; + horizontalAlignment?: typeof HorizontalAlignment.Right | typeof HorizontalAlignment.Left; /** * Vertical Alignment of the legend when it is set inside chart */ - verticalAlignment?: VerticalAlignment; + verticalAlignment?: typeof VerticalAlignment.Top | typeof VerticalAlignment.Bottom; /** * Number of columns when legend is set inside chart */ @@ -155,16 +181,62 @@ export interface LabelsOrientationConfig { // Arguments to XY chart expression, with computed properties export interface XYArgs { - title?: string; - description?: string; xTitle: string; yTitle: string; yRightTitle: string; yLeftExtent: AxisExtentConfigResult; yRightExtent: AxisExtentConfigResult; legend: LegendConfigResult; + endValue?: EndValue; + emphasizeFitting?: boolean; valueLabels: ValueLabelMode; - layers: XYLayerConfigResult[]; + dataLayers: DataLayerConfigResult[]; + referenceLineLayers: ReferenceLineLayerConfigResult[]; + annotationLayers: AnnotationLayerConfigResult[]; + fittingFunction?: FittingFunction; + axisTitlesVisibilitySettings?: AxisTitlesVisibilityConfigResult; + tickLabelsVisibilitySettings?: TickLabelsConfigResult; + gridlinesVisibilitySettings?: GridlinesConfigResult; + labelsOrientation?: LabelsOrientationConfigResult; + curveType?: XYCurveType; + fillOpacity?: number; + hideEndzones?: boolean; + valuesInLegend?: boolean; + ariaLabel?: string; +} + +export interface LayeredXYArgs { + xTitle: string; + yTitle: string; + yRightTitle: string; + yLeftExtent: AxisExtentConfigResult; + yRightExtent: AxisExtentConfigResult; + legend: LegendConfigResult; + endValue?: EndValue; + emphasizeFitting?: boolean; + valueLabels: ValueLabelMode; + layers?: XYExtendedLayerConfigResult[]; + fittingFunction?: FittingFunction; + axisTitlesVisibilitySettings?: AxisTitlesVisibilityConfigResult; + tickLabelsVisibilitySettings?: TickLabelsConfigResult; + gridlinesVisibilitySettings?: GridlinesConfigResult; + labelsOrientation?: LabelsOrientationConfigResult; + curveType?: XYCurveType; + fillOpacity?: number; + hideEndzones?: boolean; + valuesInLegend?: boolean; + ariaLabel?: string; +} + +export interface XYProps { + xTitle: string; + yTitle: string; + yRightTitle: string; + yLeftExtent: AxisExtentConfigResult; + yRightExtent: AxisExtentConfigResult; + legend: LegendConfigResult; + valueLabels: ValueLabelMode; + layers: CommonXYLayerConfig[]; endValue?: EndValue; emphasizeFitting?: boolean; fittingFunction?: FittingFunction; @@ -181,28 +253,48 @@ export interface XYArgs { export interface AnnotationLayerArgs { annotations: EventAnnotationOutput[]; - layerId: string; hide?: boolean; } +export type ExtendedAnnotationLayerArgs = AnnotationLayerArgs & { + layerId?: string; +}; + export type AnnotationLayerConfigResult = AnnotationLayerArgs & { type: typeof ANNOTATION_LAYER; layerType: typeof LayerTypes.ANNOTATIONS; }; +export type ExtendedAnnotationLayerConfigResult = ExtendedAnnotationLayerArgs & { + type: typeof EXTENDED_ANNOTATION_LAYER; + layerType: typeof LayerTypes.ANNOTATIONS; +}; + export interface ReferenceLineLayerArgs { - layerId: string; accessors: string[]; columnToLabel?: string; - yConfig?: YConfigResult[]; + yConfig?: ExtendedYConfigResult[]; +} + +export interface ExtendedReferenceLineLayerArgs { + layerId?: string; + accessors: string[]; + columnToLabel?: string; + yConfig?: ExtendedYConfigResult[]; + table?: Datatable; } export type XYLayerArgs = DataLayerArgs | ReferenceLineLayerArgs | AnnotationLayerArgs; +export type XYLayerConfig = DataLayerConfig | ReferenceLineLayerConfig | AnnotationLayerConfig; +export type XYExtendedLayerConfig = + | ExtendedDataLayerConfig + | ExtendedReferenceLineLayerConfig + | ExtendedAnnotationLayerConfig; -export type XYLayerConfigResult = - | DataLayerConfigResult - | ReferenceLineLayerConfigResult - | AnnotationLayerConfigResult; +export type XYExtendedLayerConfigResult = + | ExtendedDataLayerConfigResult + | ExtendedReferenceLineLayerConfigResult + | ExtendedAnnotationLayerConfigResult; export interface LensMultiTable { type: typeof MULTITABLE; @@ -216,14 +308,43 @@ export interface LensMultiTable { export type ReferenceLineLayerConfigResult = ReferenceLineLayerArgs & { type: typeof REFERENCE_LINE_LAYER; layerType: typeof LayerTypes.REFERENCELINE; + table: Datatable; }; -export type DataLayerConfigResult = DataLayerArgs & { +export type ExtendedReferenceLineLayerConfigResult = ExtendedReferenceLineLayerArgs & { + type: typeof EXTENDED_REFERENCE_LINE_LAYER; + layerType: typeof LayerTypes.REFERENCELINE; + table: Datatable; +}; + +export type DataLayerConfigResult = Omit & { type: typeof DATA_LAYER; layerType: typeof LayerTypes.DATA; + palette: PaletteOutput; + table: Datatable; +}; + +export interface WithLayerId { + layerId: string; +} + +export type DataLayerConfig = DataLayerConfigResult & WithLayerId; +export type ReferenceLineLayerConfig = ReferenceLineLayerConfigResult & WithLayerId; +export type AnnotationLayerConfig = AnnotationLayerConfigResult & WithLayerId; + +export type ExtendedDataLayerConfig = ExtendedDataLayerConfigResult & WithLayerId; +export type ExtendedReferenceLineLayerConfig = ExtendedReferenceLineLayerConfigResult & WithLayerId; +export type ExtendedAnnotationLayerConfig = ExtendedAnnotationLayerConfigResult & WithLayerId; + +export type ExtendedDataLayerConfigResult = Omit & { + type: typeof EXTENDED_DATA_LAYER; + layerType: typeof LayerTypes.DATA; + palette: PaletteOutput; + table: Datatable; }; export type YConfigResult = YConfig & { type: typeof Y_CONFIG }; +export type ExtendedYConfigResult = ExtendedYConfig & { type: typeof EXTENDED_Y_CONFIG }; export type AxisTitlesVisibilityConfigResult = AxesSettingsConfig & { type: typeof AXIS_TITLES_VISIBILITY_CONFIG; @@ -237,3 +358,70 @@ export type LegendConfigResult = LegendConfig & { type: typeof LEGEND_CONFIG }; export type AxisExtentConfigResult = AxisExtentConfig & { type: typeof AXIS_EXTENT_CONFIG }; export type GridlinesConfigResult = AxesSettingsConfig & { type: typeof GRID_LINES_CONFIG }; export type TickLabelsConfigResult = AxesSettingsConfig & { type: typeof TICK_LABELS_CONFIG }; + +export type CommonXYLayerConfig = XYLayerConfig | XYExtendedLayerConfig; +export type CommonXYDataLayerConfigResult = DataLayerConfigResult | ExtendedDataLayerConfigResult; +export type CommonXYReferenceLineLayerConfigResult = + | ReferenceLineLayerConfigResult + | ExtendedReferenceLineLayerConfigResult; + +export type CommonXYDataLayerConfig = DataLayerConfig | ExtendedDataLayerConfig; +export type CommonXYReferenceLineLayerConfig = + | ReferenceLineLayerConfig + | ExtendedReferenceLineLayerConfig; + +export type CommonXYAnnotationLayerConfig = AnnotationLayerConfig | ExtendedAnnotationLayerConfig; + +export type XyVisFn = ExpressionFunctionDefinition< + typeof XY_VIS, + Datatable, + XYArgs, + Promise +>; +export type LayeredXyVisFn = ExpressionFunctionDefinition< + typeof LAYERED_XY_VIS, + Datatable, + LayeredXYArgs, + Promise +>; + +export type DataLayerFn = ExpressionFunctionDefinition< + typeof DATA_LAYER, + Datatable, + DataLayerArgs, + DataLayerConfigResult +>; +export type ExtendedDataLayerFn = ExpressionFunctionDefinition< + typeof EXTENDED_DATA_LAYER, + Datatable, + ExtendedDataLayerArgs, + ExtendedDataLayerConfigResult +>; + +export type ReferenceLineLayerFn = ExpressionFunctionDefinition< + typeof REFERENCE_LINE_LAYER, + Datatable, + ReferenceLineLayerArgs, + ReferenceLineLayerConfigResult +>; +export type ExtendedReferenceLineLayerFn = ExpressionFunctionDefinition< + typeof EXTENDED_REFERENCE_LINE_LAYER, + Datatable, + ExtendedReferenceLineLayerArgs, + ExtendedReferenceLineLayerConfigResult +>; + +export type YConfigFn = ExpressionFunctionDefinition; +export type ExtendedYConfigFn = ExpressionFunctionDefinition< + typeof EXTENDED_Y_CONFIG, + null, + ExtendedYConfig, + ExtendedYConfigResult +>; + +export type LegendConfigFn = ExpressionFunctionDefinition< + typeof LEGEND_CONFIG, + null, + LegendConfig, + Promise +>; diff --git a/src/plugins/chart_expressions/expression_xy/common/types/expression_renderers.ts b/src/plugins/chart_expressions/expression_xy/common/types/expression_renderers.ts index 1acb98903d06b..b03ea975b0143 100644 --- a/src/plugins/chart_expressions/expression_xy/common/types/expression_renderers.ts +++ b/src/plugins/chart_expressions/expression_xy/common/types/expression_renderers.ts @@ -6,12 +6,16 @@ * Side Public License, v 1. */ +import { AnnotationTooltipFormatter } from '@elastic/charts'; +import { + AvailableAnnotationIcon, + ManualPointEventAnnotationArgs, +} from '@kbn/event-annotation-plugin/common'; import { XY_VIS_RENDERER } from '../constants'; -import { LensMultiTable, XYArgs } from './expression_functions'; +import { XYProps } from './expression_functions'; export interface XYChartProps { - data: LensMultiTable; - args: XYArgs; + args: XYProps; } export interface XYRender { @@ -19,3 +23,10 @@ export interface XYRender { as: typeof XY_VIS_RENDERER; value: XYChartProps; } + +export interface CollectiveConfig extends Omit { + roundedTimestamp: number; + axisMode: 'bottom'; + icon?: AvailableAnnotationIcon | string; + customTooltipDetails?: AnnotationTooltipFormatter | undefined; +} diff --git a/src/plugins/chart_expressions/expression_xy/common/utils/index.tsx b/src/plugins/chart_expressions/expression_xy/common/utils/index.tsx new file mode 100644 index 0000000000000..ba40d5768f50c --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/utils/index.tsx @@ -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 { logDatatables, getLayerDimensions } from './log_datatables'; diff --git a/src/plugins/chart_expressions/expression_xy/common/utils/log_datatables.ts b/src/plugins/chart_expressions/expression_xy/common/utils/log_datatables.ts new file mode 100644 index 0000000000000..79a3cbd2eef19 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/common/utils/log_datatables.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ExecutionContext } from '@kbn/expressions-plugin'; +import { Dimension, prepareLogTable } from '@kbn/visualizations-plugin/common/utils'; +import { LayerTypes } from '../constants'; +import { strings } from '../i18n'; +import { + CommonXYDataLayerConfig, + CommonXYLayerConfig, + CommonXYReferenceLineLayerConfig, +} from '../types'; + +export const logDatatables = (layers: CommonXYLayerConfig[], handlers: ExecutionContext) => { + if (!handlers?.inspectorAdapters?.tables) { + return; + } + + handlers.inspectorAdapters.tables.reset(); + handlers.inspectorAdapters.tables.allowCsvExport = true; + + layers.forEach((layer) => { + if (layer.layerType === LayerTypes.ANNOTATIONS) { + return; + } + const logTable = prepareLogTable(layer.table, getLayerDimensions(layer), true); + handlers.inspectorAdapters.tables.logDatatable(layer.layerId, logTable); + }); +}; + +export const getLayerDimensions = ( + layer: CommonXYDataLayerConfig | CommonXYReferenceLineLayerConfig +): Dimension[] => { + let xAccessor; + let splitAccessor; + if (layer.layerType === LayerTypes.DATA) { + xAccessor = layer.xAccessor; + splitAccessor = layer.splitAccessor; + } + + const { accessors, layerType } = layer; + return [ + [ + accessors ? accessors : undefined, + layerType === LayerTypes.DATA ? strings.getMetricHelp() : strings.getReferenceLineHelp(), + ], + [xAccessor ? [xAccessor] : undefined, strings.getXAxisHelp()], + [splitAccessor ? [splitAccessor] : undefined, strings.getBreakdownHelp()], + ]; +}; diff --git a/src/plugins/chart_expressions/expression_xy/public/__mocks__/index.tsx b/src/plugins/chart_expressions/expression_xy/public/__mocks__/index.tsx index 60b9f6a5788b4..194bfc2bf5c9d 100644 --- a/src/plugins/chart_expressions/expression_xy/public/__mocks__/index.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/__mocks__/index.tsx @@ -6,9 +6,11 @@ * Side Public License, v 1. */ +import { Datatable } from '@kbn/expressions-plugin/common'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; -import { DataLayerConfigResult, LensMultiTable, XYArgs } from '../../common'; +import { LensMultiTable } from '../../common'; import { LayerTypes } from '../../common/constants'; +import { DataLayerConfig, XYProps } from '../../common/types'; import { mockPaletteOutput, sampleArgs } from '../../common/__mocks__'; const chartSetupContract = chartPluginMock.createSetupContract(); @@ -166,9 +168,9 @@ export const dateHistogramData: LensMultiTable = { }, }; -export const dateHistogramLayer: DataLayerConfigResult = { +export const dateHistogramLayer: DataLayerConfig = { + layerId: 'dateHistogramLayer', type: 'dataLayer', - layerId: 'timeLayer', layerType: LayerTypes.DATA, hide: false, xAccessor: 'xAccessorId', @@ -179,46 +181,37 @@ export const dateHistogramLayer: DataLayerConfigResult = { seriesType: 'bar_stacked', accessors: ['yAccessorId'], palette: mockPaletteOutput, + table: dateHistogramData.tables.timeLayer, }; export function sampleArgsWithReferenceLine(value: number = 150) { - const { data, args } = sampleArgs(); + const { args: sArgs } = sampleArgs(); + const data: Datatable = { + type: 'datatable', + columns: [ + { + id: 'referenceLine-a', + meta: { params: { id: 'number' }, type: 'number' }, + name: 'Static value', + }, + ], + rows: [{ 'referenceLine-a': value }], + }; - return { - data: { - ...data, - tables: { - ...data.tables, - referenceLine: { - type: 'datatable', - columns: [ - { - id: 'referenceLine-a', - meta: { params: { id: 'number' }, type: 'number' }, - name: 'Static value', - }, - ], - rows: [{ 'referenceLine-a': value }], - }, + const args: XYProps = { + ...sArgs, + layers: [ + ...sArgs.layers, + { + layerId: 'referenceLine-a', + type: 'referenceLineLayer', + layerType: LayerTypes.REFERENCELINE, + accessors: ['referenceLine-a'], + yConfig: [{ axisMode: 'left', forAccessor: 'referenceLine-a', type: 'extendedYConfig' }], + table: data, }, - } as LensMultiTable, - args: { - ...args, - layers: [ - ...args.layers, - { - layerType: LayerTypes.REFERENCELINE, - accessors: ['referenceLine-a'], - layerId: 'referenceLine', - seriesType: 'line', - xScaleType: 'linear', - yScaleType: 'linear', - palette: mockPaletteOutput, - isHistogram: false, - hide: true, - yConfig: [{ axisMode: 'left', forAccessor: 'referenceLine-a', type: 'yConfig' }], - }, - ], - } as XYArgs, + ], }; + + return { data, args }; } diff --git a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap index f534db5a6c4e9..3b11ee812da6f 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap +++ b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`XYChart component annotations should render basic annotation 1`] = ` +exports[`XYChart component annotations should render basic line annotation 1`] = ` `; -exports[`XYChart component annotations should render grouped annotations preserving the shared styles 1`] = ` +exports[`XYChart component annotations should render basic range annotation 1`] = ` +Array [ + , + , +] +`; + +exports[`XYChart component annotations should render grouped line annotations preserving the shared styles 1`] = ` `; -exports[`XYChart component annotations should render grouped annotations with default styles 1`] = ` +exports[`XYChart component annotations should render grouped line annotations with default styles 1`] = ` `; -exports[`XYChart component annotations should render simplified annotation when hide is true 1`] = ` +exports[`XYChart component annotations should render simplified annotations when hide is true 1`] = ` - } - markerBody={ - - } markerPosition="top" style={ Object { @@ -213,6 +236,50 @@ exports[`XYChart component annotations should render simplified annotation when /> `; +exports[`XYChart component annotations should render simplified annotations when hide is true 2`] = ` +Array [ + , + , +] +`; + exports[`XYChart component it renders area 1`] = ` - - `; @@ -457,6 +830,14 @@ exports[`XYChart component it renders bar 1`] = ` ariaUseDefaultSummary={true} baseTheme={Object {}} debugState={false} + externalPointerEvents={ + Object { + "tooltip": Object { + "placement": "right", + "visible": false, + }, + } + } legendAction={ Object { "$$typeof": Symbol(react.memo), @@ -558,139 +939,425 @@ exports[`XYChart component it renders bar 1`] = ` darkMode={false} histogramMode={false} /> - - `; @@ -704,6 +1371,14 @@ exports[`XYChart component it renders horizontal bar 1`] = ` ariaUseDefaultSummary={true} baseTheme={Object {}} debugState={false} + externalPointerEvents={ + Object { + "tooltip": Object { + "placement": "right", + "visible": false, + }, + } + } legendAction={ Object { "$$typeof": Symbol(react.memo), @@ -805,139 +1480,425 @@ exports[`XYChart component it renders horizontal bar 1`] = ` darkMode={false} histogramMode={false} /> - - `; @@ -951,6 +1912,14 @@ exports[`XYChart component it renders line 1`] = ` ariaUseDefaultSummary={true} baseTheme={Object {}} debugState={false} + externalPointerEvents={ + Object { + "tooltip": Object { + "placement": "right", + "visible": false, + }, + } + } legendAction={ Object { "$$typeof": Symbol(react.memo), @@ -1052,127 +2021,425 @@ exports[`XYChart component it renders line 1`] = ` darkMode={false} histogramMode={false} /> - - `; @@ -1186,6 +2453,14 @@ exports[`XYChart component it renders stacked area 1`] = ` ariaUseDefaultSummary={true} baseTheme={Object {}} debugState={false} + externalPointerEvents={ + Object { + "tooltip": Object { + "placement": "right", + "visible": false, + }, + } + } legendAction={ Object { "$$typeof": Symbol(react.memo), @@ -1287,135 +2562,425 @@ exports[`XYChart component it renders stacked area 1`] = ` darkMode={false} histogramMode={false} /> - - `; @@ -1429,6 +2994,14 @@ exports[`XYChart component it renders stacked bar 1`] = ` ariaUseDefaultSummary={true} baseTheme={Object {}} debugState={false} + externalPointerEvents={ + Object { + "tooltip": Object { + "placement": "right", + "visible": false, + }, + } + } legendAction={ Object { "$$typeof": Symbol(react.memo), @@ -1530,147 +3103,425 @@ exports[`XYChart component it renders stacked bar 1`] = ` darkMode={false} histogramMode={false} /> - - `; @@ -1684,6 +3535,14 @@ exports[`XYChart component it renders stacked horizontal bar 1`] = ` ariaUseDefaultSummary={true} baseTheme={Object {}} debugState={false} + externalPointerEvents={ + Object { + "tooltip": Object { + "placement": "right", + "visible": false, + }, + } + } legendAction={ Object { "$$typeof": Symbol(react.memo), @@ -1785,147 +3644,425 @@ exports[`XYChart component it renders stacked horizontal bar 1`] = ` darkMode={false} histogramMode={false} /> - - `; diff --git a/src/plugins/chart_expressions/expression_xy/public/components/annotations.scss b/src/plugins/chart_expressions/expression_xy/public/components/annotations.scss index 88881ae718925..e1e58252b5de7 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/annotations.scss +++ b/src/plugins/chart_expressions/expression_xy/public/components/annotations.scss @@ -16,3 +16,7 @@ transform: rotate(45deg); transform-origin: center; } + +.xyAnnotationTooltipDetail { + padding: $euiSizeXS ($euiSizeXS * 2); +} \ No newline at end of file diff --git a/src/plugins/chart_expressions/expression_xy/public/components/annotations.tsx b/src/plugins/chart_expressions/expression_xy/public/components/annotations.tsx index 976bec6678fe5..fa2c081f08700 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/annotations.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/annotations.tsx @@ -16,13 +16,25 @@ import { AnnotationTooltipFormatter, LineAnnotation, Position, + RectAnnotation, } from '@elastic/charts'; import moment from 'moment'; -import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import type { EventAnnotationArgs } from '@kbn/event-annotation-plugin/common'; +import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import type { + ManualPointEventAnnotationArgs, + ManualRangeEventAnnotationOutput, +} from '@kbn/event-annotation-plugin/common'; import type { FieldFormat } from '@kbn/field-formats-plugin/common'; -import { defaultAnnotationColor } from '@kbn/event-annotation-plugin/public'; -import type { AnnotationLayerArgs, AnnotationLayerConfigResult } from '../../common/types'; +import { + defaultAnnotationColor, + defaultAnnotationRangeColor, +} from '@kbn/event-annotation-plugin/public'; +import type { + AnnotationLayerArgs, + CommonXYAnnotationLayerConfig, + CollectiveConfig, +} from '../../common'; + import { AnnotationIcon, hasIcon, Marker, MarkerBody } from '../helpers'; import { mapVerticalToHorizontalPlacement, LINES_MARKER_SIZE } from '../helpers'; @@ -34,19 +46,15 @@ const getRoundedTimestamp = (timestamp: number, firstTimestamp?: number, minInte }; export interface AnnotationsProps { - groupedAnnotations: CollectiveConfig[]; + groupedLineAnnotations: CollectiveConfig[]; + rangeAnnotations: ManualRangeEventAnnotationOutput[]; formatter?: FieldFormat; isHorizontal: boolean; paddingMap: Partial>; hide?: boolean; minInterval?: number; isBarChart?: boolean; -} - -interface CollectiveConfig extends EventAnnotationArgs { - roundedTimestamp: number; - axisMode: 'bottom'; - customTooltipDetails?: AnnotationTooltipFormatter | undefined; + outsideDimension: number; } const groupVisibleConfigsByInterval = ( @@ -55,9 +63,11 @@ const groupVisibleConfigsByInterval = ( firstTimestamp?: number ) => { return layers - .flatMap(({ annotations }) => annotations.filter((a) => !a.isHidden)) + .flatMap(({ annotations }) => + annotations.filter((a) => !a.isHidden && a.type === 'manual_point_event_annotation') + ) .sort((a, b) => moment(a.time).valueOf() - moment(b.time).valueOf()) - .reduce>((acc, current) => { + .reduce>((acc, current) => { const roundedTimestamp = getRoundedTimestamp( moment(current.time).valueOf(), firstTimestamp, @@ -72,7 +82,7 @@ const groupVisibleConfigsByInterval = ( const createCustomTooltipDetails = ( - config: EventAnnotationArgs[], + config: ManualPointEventAnnotationArgs[], formatter?: FieldFormat ): AnnotationTooltipFormatter | undefined => () => { @@ -95,8 +105,8 @@ const createCustomTooltipDetails = ); }; -function getCommonProperty( - configArr: EventAnnotationArgs[], +function getCommonProperty( + configArr: ManualPointEventAnnotationArgs[], propertyName: K, fallbackValue: T ) { @@ -107,9 +117,9 @@ function getCommonProperty( return fallbackValue; } -const getCommonStyles = (configArr: EventAnnotationArgs[]) => { +const getCommonStyles = (configArr: ManualPointEventAnnotationArgs[]) => { return { - color: getCommonProperty( + color: getCommonProperty( configArr, 'color', defaultAnnotationColor @@ -120,8 +130,22 @@ const getCommonStyles = (configArr: EventAnnotationArgs[]) => { }; }; +export const getRangeAnnotations = (layers: CommonXYAnnotationLayerConfig[]) => { + return layers + .flatMap(({ annotations }) => + annotations.filter( + (a): a is ManualRangeEventAnnotationOutput => + a.type === 'manual_range_event_annotation' && !a.isHidden + ) + ) + .sort((a, b) => moment(a.time).valueOf() - moment(b.time).valueOf()); +}; + +export const OUTSIDE_RECT_ANNOTATION_WIDTH = 8; +export const OUTSIDE_RECT_ANNOTATION_WIDTH_SUGGESTION = 2; + export const getAnnotationsGroupedByInterval = ( - layers: AnnotationLayerConfigResult[], + layers: CommonXYAnnotationLayerConfig[], minInterval?: number, firstTimestamp?: number, formatter?: FieldFormat @@ -147,18 +171,23 @@ export const getAnnotationsGroupedByInterval = ( }); }; +// todo: remove when closed https://github.com/elastic/elastic-charts/issues/1647 +RectAnnotation.displayName = 'RectAnnotation'; + export const Annotations = ({ - groupedAnnotations, + groupedLineAnnotations, + rangeAnnotations, formatter, isHorizontal, paddingMap, hide, minInterval, isBarChart, + outsideDimension, }: AnnotationsProps) => { return ( <> - {groupedAnnotations.map((annotation) => { + {groupedLineAnnotations.map((annotation) => { const markerPositionVertical = Position.Top; const markerPosition = isHorizontal ? mapVerticalToHorizontalPlacement(markerPositionVertical) @@ -229,6 +258,40 @@ export const Annotations = ({ /> ); })} + {rangeAnnotations.map(({ label, time, color, endTime, outside }) => { + const id = snakeCase(label); + + return ( + ( +
+ +

+ {formatter + ? `${formatter.convert(time)} — ${formatter?.convert(endTime)}` + : `${moment(time).toISOString()} — ${moment(endTime).toISOString()}`} +

+
+
{label}
+
+ )} + dataValues={[ + { + coordinates: { + x0: moment(time).valueOf(), + x1: moment(endTime).valueOf(), + }, + details: label, + }, + ]} + style={{ fill: color || defaultAnnotationRangeColor, opacity: 1 }} + outside={Boolean(outside)} + outsideDimension={outsideDimension} + /> + ); + })} ); }; diff --git a/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx b/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx new file mode 100644 index 0000000000000..1166d41a9e402 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/public/components/data_layers.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { + AreaSeries, + BarSeries, + CurveType, + LabelOverflowConstraint, + LineSeries, +} from '@elastic/charts'; +import React, { FC } from 'react'; +import { PaletteRegistry } from '@kbn/coloring'; +import { FormatFactory } from '@kbn/field-formats-plugin/common'; +import { + CommonXYDataLayerConfig, + EndValue, + FittingFunction, + ValueLabelMode, + XYCurveType, +} from '../../common'; +import { SeriesTypes, ValueLabelModes } from '../../common/constants'; +import { + getColorAssignments, + getFitOptions, + GroupsConfiguration, + getSeriesProps, + DatatablesWithFormatInfo, +} from '../helpers'; + +interface Props { + layers: CommonXYDataLayerConfig[]; + formatFactory: FormatFactory; + chartHasMoreThanOneBarSeries?: boolean; + yAxesConfiguration: GroupsConfiguration; + curveType?: XYCurveType; + fittingFunction?: FittingFunction; + endValue?: EndValue | undefined; + paletteService: PaletteRegistry; + formattedDatatables: DatatablesWithFormatInfo; + syncColors?: boolean; + timeZone?: string; + emphasizeFitting?: boolean; + fillOpacity?: number; + shouldShowValueLabels?: boolean; + valueLabels: ValueLabelMode; +} + +export const DataLayers: FC = ({ + layers, + endValue, + timeZone, + curveType, + syncColors, + valueLabels, + fillOpacity, + formatFactory, + paletteService, + fittingFunction, + emphasizeFitting, + yAxesConfiguration, + shouldShowValueLabels, + formattedDatatables, + chartHasMoreThanOneBarSeries, +}) => { + const colorAssignments = getColorAssignments(layers, formatFactory); + return ( + <> + {layers.flatMap((layer) => + layer.accessors.map((accessor, accessorIndex) => { + const { seriesType, columnToLabel, layerId } = layer; + const columnToLabelMap: Record = columnToLabel + ? JSON.parse(columnToLabel) + : {}; + + // what if row values are not primitive? That is the case of, for instance, Ranges + // remaps them to their serialized version with the formatHint metadata + // In order to do it we need to make a copy of the table as the raw one is required for more features (filters, etc...) later on + const formattedDatatableInfo = formattedDatatables[layerId]; + + const isPercentage = seriesType.includes('percentage'); + + const yAxis = yAxesConfiguration.find((axisConfiguration) => + axisConfiguration.series.find((currentSeries) => currentSeries.accessor === accessor) + ); + + const seriesProps = getSeriesProps({ + layer, + accessor, + chartHasMoreThanOneBarSeries, + colorAssignments, + formatFactory, + columnToLabelMap, + paletteService, + formattedDatatableInfo, + syncColors, + yAxis, + timeZone, + emphasizeFitting, + fillOpacity, + }); + + const index = `${layer.layerId}-${accessorIndex}`; + + const curve = curveType ? CurveType[curveType] : undefined; + + switch (seriesType) { + case SeriesTypes.LINE: + return ( + + ); + case SeriesTypes.BAR: + case SeriesTypes.BAR_STACKED: + case SeriesTypes.BAR_PERCENTAGE_STACKED: + case SeriesTypes.BAR_HORIZONTAL: + case SeriesTypes.BAR_HORIZONTAL_STACKED: + case SeriesTypes.BAR_HORIZONTAL_PERCENTAGE_STACKED: + const valueLabelsSettings = { + displayValueSettings: { + // This format double fixes two issues in elastic-chart + // * when rotating the chart, the formatter is not correctly picked + // * in some scenarios value labels are not strings, and this breaks the elastic-chart lib + valueFormatter: (d: unknown) => yAxis?.formatter?.convert(d) || '', + showValueLabel: shouldShowValueLabels && valueLabels !== ValueLabelModes.HIDE, + isValueContainedInElement: false, + isAlternatingValueLabel: false, + overflowConstraints: [ + LabelOverflowConstraint.ChartEdges, + LabelOverflowConstraint.BarGeometry, + ], + }, + }; + return ; + case SeriesTypes.AREA_STACKED: + case SeriesTypes.AREA_PERCENTAGE_STACKED: + return ( + + ); + case SeriesTypes.AREA: + return ( + + ); + } + }) + )} + + ); +}; diff --git a/src/plugins/chart_expressions/expression_xy/public/components/legend_action.test.tsx b/src/plugins/chart_expressions/expression_xy/public/components/legend_action.test.tsx index 0f1cdebc5bf59..7c60a6a3a5769 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/legend_action.test.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/legend_action.test.tsx @@ -11,27 +11,12 @@ import { LegendActionProps, SeriesIdentifier } from '@elastic/charts'; import { EuiPopover } from '@elastic/eui'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import { ComponentType, ReactWrapper } from 'enzyme'; -import type { LensMultiTable } from '../../common'; +import type { DataLayerConfig, LensMultiTable } from '../../common'; import { LayerTypes } from '../../common/constants'; -import type { DataLayerArgs } from '../../common'; import { getLegendAction } from './legend_action'; import { LegendActionPopover } from './legend_action_popover'; import { mockPaletteOutput } from '../../common/__mocks__'; -const sampleLayer = { - layerId: 'first', - layerType: LayerTypes.DATA, - seriesType: 'line', - xAccessor: 'c', - accessors: ['a', 'b'], - splitAccessor: 'splitAccessorId', - columnToLabel: '{"a": "Label A", "b": "Label B", "d": "Label D"}', - xScaleType: 'ordinal', - yScaleType: 'linear', - isHistogram: false, - palette: mockPaletteOutput, -} as DataLayerArgs; - const tables = { first: { type: 'datatable', @@ -168,11 +153,26 @@ const tables = { }, } as LensMultiTable['tables']; +const sampleLayer: DataLayerConfig = { + layerId: 'first', + type: 'dataLayer', + layerType: LayerTypes.DATA, + seriesType: 'line', + xAccessor: 'c', + accessors: ['a', 'b'], + splitAccessor: 'splitAccessorId', + columnToLabel: '{"a": "Label A", "b": "Label B", "d": "Label D"}', + xScaleType: 'ordinal', + yScaleType: 'linear', + isHistogram: false, + palette: mockPaletteOutput, + table: tables.first, +}; + describe('getLegendAction', function () { let wrapperProps: LegendActionProps; const Component: ComponentType = getLegendAction( [sampleLayer], - tables, jest.fn(), jest.fn(), {} diff --git a/src/plugins/chart_expressions/expression_xy/public/components/legend_action.tsx b/src/plugins/chart_expressions/expression_xy/public/components/legend_action.tsx index 9bbdec3635fa8..da1939f223649 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/legend_action.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/legend_action.tsx @@ -9,23 +9,28 @@ import React from 'react'; import type { LegendAction, XYChartSeriesIdentifier } from '@elastic/charts'; import type { FilterEvent } from '../types'; -import type { LensMultiTable, DataLayerArgs } from '../../common'; +import type { CommonXYDataLayerConfig } from '../../common'; import type { FormatFactory } from '../types'; import { LegendActionPopover } from './legend_action_popover'; +import { DatatablesWithFormatInfo } from '../helpers'; export const getLegendAction = ( - filteredLayers: DataLayerArgs[], - tables: LensMultiTable['tables'], + dataLayers: CommonXYDataLayerConfig[], onFilter: (data: FilterEvent['data']) => void, formatFactory: FormatFactory, - layersAlreadyFormatted: Record + formattedDatatables: DatatablesWithFormatInfo ): LegendAction => React.memo(({ series: [xySeries] }) => { const series = xySeries as XYChartSeriesIdentifier; - const layer = filteredLayers.find((l) => + const layerIndex = dataLayers.findIndex((l) => series.seriesKeys.some((key: string | number) => l.accessors.includes(key.toString())) ); + if (layerIndex === -1) { + return null; + } + + const layer = dataLayers[layerIndex]; if (!layer || !layer.splitAccessor) { return null; } @@ -33,12 +38,12 @@ export const getLegendAction = ( const splitLabel = series.seriesKeys[0] as string; const accessor = layer.splitAccessor; - const table = tables[layer.layerId]; + const { table } = layer; const splitColumn = table.columns.find(({ id }) => id === layer.splitAccessor); const formatter = formatFactory(splitColumn && splitColumn.meta?.params); const rowIndex = table.rows.findIndex((row) => { - if (layersAlreadyFormatted[accessor]) { + if (formattedDatatables[layer.layerId]?.formattedColumns[accessor]) { // stringify the value to compare with the chart value return formatter.convert(row[accessor]) === splitLabel; } @@ -63,7 +68,7 @@ export const getLegendAction = ( return ( = { @@ -23,34 +28,28 @@ const row: Record = { yAccessorRightSecondId: 10, }; -const histogramData: LensMultiTable = { - type: 'lens_multitable', - tables: { - firstLayer: { - type: 'datatable', - rows: [row], - columns: Object.keys(row).map((id) => ({ - id, - name: `Static value: ${row[id]}`, - meta: { - type: 'number', - params: { id: 'number' }, - }, - })), +const data: Datatable = { + type: 'datatable', + rows: [row], + columns: Object.keys(row).map((id) => ({ + id, + name: `Static value: ${row[id]}`, + meta: { + type: 'number', + params: { id: 'number' }, }, - }, - dateRange: { - fromDate: new Date('2020-04-01T16:14:16.246Z'), - toDate: new Date('2020-04-01T17:15:41.263Z'), - }, + })), }; -function createLayers(yConfigs: ReferenceLineLayerArgs['yConfig']): ReferenceLineLayerArgs[] { +function createLayers(yConfigs: ReferenceLineLayerArgs['yConfig']): ReferenceLineLayerConfig[] { return [ { - layerId: 'firstLayer', + layerId: 'first', accessors: (yConfigs || []).map(({ forAccessor }) => forAccessor), yConfig: yConfigs, + type: 'referenceLineLayer', + layerType: LayerTypes.REFERENCELINE, + table: data, }, ]; } @@ -64,7 +63,7 @@ interface XCoords { x1: number | undefined; } -function getAxisFromId(layerPrefix: string): YConfig['axisMode'] { +function getAxisFromId(layerPrefix: string): ExtendedYConfig['axisMode'] { return /left/i.test(layerPrefix) ? 'left' : /right/i.test(layerPrefix) ? 'right' : 'bottom'; } @@ -95,21 +94,20 @@ describe('ReferenceLineAnnotations', () => { ['yAccessorLeft', 'below'], ['yAccessorRight', 'above'], ['yAccessorRight', 'below'], - ] as Array<[string, YConfig['fill']]>)( + ] as Array<[string, ExtendedYConfig['fill']]>)( 'should render a RectAnnotation for a reference line with fill set: %s %s', (layerPrefix, fill) => { const axisMode = getAxisFromId(layerPrefix); const wrapper = shallow( @@ -135,19 +133,18 @@ describe('ReferenceLineAnnotations', () => { it.each([ ['xAccessor', 'above'], ['xAccessor', 'below'], - ] as Array<[string, YConfig['fill']]>)( + ] as Array<[string, ExtendedYConfig['fill']]>)( 'should render a RectAnnotation for a reference line with fill set: %s %s', (layerPrefix, fill) => { const wrapper = shallow( { ['yAccessorLeft', 'below', { y0: undefined, y1: 5 }, { y0: 5, y1: 10 }], ['yAccessorRight', 'above', { y0: 5, y1: 10 }, { y0: 10, y1: undefined }], ['yAccessorRight', 'below', { y0: undefined, y1: 5 }, { y0: 5, y1: 10 }], - ] as Array<[string, YConfig['fill'], YCoords, YCoords]>)( + ] as Array<[string, ExtendedYConfig['fill'], YCoords, YCoords]>)( 'should avoid overlap between two reference lines with fill in the same direction: 2 x %s %s', (layerPrefix, fill, coordsA, coordsB) => { const axisMode = getAxisFromId(layerPrefix); const wrapper = shallow( { it.each([ ['xAccessor', 'above', { x0: 1, x1: 2 }, { x0: 2, x1: undefined }], ['xAccessor', 'below', { x0: undefined, x1: 1 }, { x0: 1, x1: 2 }], - ] as Array<[string, YConfig['fill'], XCoords, XCoords]>)( + ] as Array<[string, ExtendedYConfig['fill'], XCoords, XCoords]>)( 'should avoid overlap between two reference lines with fill in the same direction: 2 x %s %s', (layerPrefix, fill, coordsA, coordsB) => { const wrapper = shallow( { const wrapper = shallow( @@ -326,27 +320,26 @@ describe('ReferenceLineAnnotations', () => { it.each([ ['above', { y0: 5, y1: 10 }, { y0: 10, y1: undefined }], ['below', { y0: undefined, y1: 5 }, { y0: 5, y1: 10 }], - ] as Array<[YConfig['fill'], YCoords, YCoords]>)( + ] as Array<[ExtendedYConfig['fill'], YCoords, YCoords]>)( 'should be robust and works also for different axes when on same direction: 1x Left + 1x Right both %s', (fill, coordsA, coordsB) => { const wrapper = shallow( diff --git a/src/plugins/chart_expressions/expression_xy/public/components/reference_lines.tsx b/src/plugins/chart_expressions/expression_xy/public/components/reference_lines.tsx index 6146cc379227d..d17dbf2a70ad1 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/reference_lines.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/reference_lines.tsx @@ -13,8 +13,7 @@ import { groupBy } from 'lodash'; import { RectAnnotation, AnnotationDomainType, LineAnnotation, Position } from '@elastic/charts'; import { euiLightVars } from '@kbn/ui-theme'; import type { FieldFormat } from '@kbn/field-formats-plugin/common'; -import type { IconPosition, ReferenceLineLayerArgs, YAxisMode } from '../../common/types'; -import type { LensMultiTable } from '../../common/types'; +import type { CommonXYReferenceLineLayerConfig, IconPosition, YAxisMode } from '../../common/types'; import { LINES_MARKER_SIZE, mapVerticalToHorizontalPlacement, @@ -89,8 +88,7 @@ export function getBaseIconPlacement( } export interface ReferenceLineAnnotationsProps { - layers: ReferenceLineLayerArgs[]; - data: LensMultiTable; + layers: CommonXYReferenceLineLayerConfig[]; formatters: Record<'left' | 'right' | 'bottom', FieldFormat | undefined>; axesMap: Record<'left' | 'right', boolean>; isHorizontal: boolean; @@ -99,7 +97,6 @@ export interface ReferenceLineAnnotationsProps { export const ReferenceLineAnnotations = ({ layers, - data, formatters, axesMap, isHorizontal, @@ -111,11 +108,10 @@ export const ReferenceLineAnnotations = ({ if (!layer.yConfig) { return []; } - const { columnToLabel, yConfig: yConfigs, layerId } = layer; + const { columnToLabel, yConfig: yConfigs, table } = layer; const columnToLabelMap: Record = columnToLabel ? JSON.parse(columnToLabel) : {}; - const table = data.tables[layerId]; const row = table.rows[0]; @@ -194,8 +190,8 @@ export const ReferenceLineAnnotations = ({ annotations.push( ({ dataValue: row[yConfig.forAccessor], header: columnToLabelMap[yConfig.forAccessor], @@ -225,8 +221,8 @@ export const ReferenceLineAnnotations = ({ annotations.push( { const nextValue = shouldCheckNextReferenceLine ? row[groupedByDirection[yConfig.fill!][indexFromSameType + 1].forAccessor] diff --git a/src/plugins/chart_expressions/expression_xy/public/components/x_domain.tsx b/src/plugins/chart_expressions/expression_xy/public/components/x_domain.tsx index 257d299616946..78b6ef91926a8 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/x_domain.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/x_domain.tsx @@ -11,7 +11,7 @@ import React from 'react'; import moment from 'moment'; import { Endzones } from '@kbn/charts-plugin/public'; import { search } from '@kbn/data-plugin/public'; -import type { LensMultiTable, DataLayerArgs } from '../../common'; +import type { CommonXYDataLayerConfig } from '../../common'; export interface XDomain { min?: number; @@ -19,17 +19,16 @@ export interface XDomain { minInterval?: number; } -export const getAppliedTimeRange = (layers: DataLayerArgs[], data: LensMultiTable) => { - return Object.entries(data.tables) - .map(([tableId, table]) => { - const layer = layers.find((l) => l.layerId === tableId); - const xColumn = table.columns.find((col) => col.id === layer?.xAccessor); +export const getAppliedTimeRange = (layers: CommonXYDataLayerConfig[]) => { + return layers + .map(({ xAccessor, table }) => { + const xColumn = table.columns.find((col) => col.id === xAccessor); const timeRange = xColumn && search.aggs.getDateHistogramMetaDataByDatatableColumn(xColumn)?.timeRange; if (timeRange) { return { timeRange, - field: xColumn.meta.field, + field: xColumn?.meta.field, }; } }) @@ -37,13 +36,12 @@ export const getAppliedTimeRange = (layers: DataLayerArgs[], data: LensMultiTabl }; export const getXDomain = ( - layers: DataLayerArgs[], - data: LensMultiTable, + layers: CommonXYDataLayerConfig[], minInterval: number | undefined, isTimeViz: boolean, isHistogram: boolean ) => { - const appliedTimeRange = getAppliedTimeRange(layers, data)?.timeRange; + const appliedTimeRange = getAppliedTimeRange(layers)?.timeRange; const from = appliedTimeRange?.from; const to = appliedTimeRange?.to; const baseDomain = isTimeViz @@ -59,8 +57,8 @@ export const getXDomain = ( if (isHistogram && isFullyQualified(baseDomain)) { const xValues = uniq( layers - .flatMap((layer) => - data.tables[layer.layerId].rows.map((row) => row[layer.xAccessor!].valueOf() as number) + .flatMap(({ table, xAccessor }) => + table.rows.map((row) => row[xAccessor!].valueOf()) ) .sort() ); diff --git a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.test.tsx b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.test.tsx index 6ac39b1c0f941..de67e814d5b78 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.test.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.test.tsx @@ -9,13 +9,6 @@ import React from 'react'; import { mount, shallow } from 'enzyme'; import { mountWithIntl } from '@kbn/test-jest-helpers'; -import { - AnnotationLayerConfigResult, - DataLayerConfigResult, - LensMultiTable, - XYArgs, -} from '../../common'; -import { LayerTypes } from '../../common/constants'; import { AreaSeries, Axis, @@ -27,13 +20,19 @@ import { LineAnnotation, LineSeries, Position, + RectAnnotation, ScaleType, SeriesNameFn, Settings, VerticalAlignment, XYChartSeriesIdentifier, } from '@elastic/charts'; +import { Datatable } from '@kbn/expressions-plugin/common'; import { EmptyPlaceholder } from '@kbn/charts-plugin/public'; +import { eventAnnotationServiceMock } from '@kbn/event-annotation-plugin/public/mocks'; +import { EventAnnotationOutput } from '@kbn/event-annotation-plugin/common'; +import { DataLayerConfig } from '../../common'; +import { LayerTypes } from '../../common/constants'; import { XyEndzones } from './x_domain'; import { chartsActiveCursorService, @@ -51,8 +50,13 @@ import { sampleLayer, } from '../../common/__mocks__'; import { XYChart, XYChartRenderProps } from './xy_chart'; -import { eventAnnotationServiceMock } from '@kbn/event-annotation-plugin/public/mocks'; -import { EventAnnotationOutput } from '@kbn/event-annotation-plugin/common'; +import { + CommonXYAnnotationLayerConfig, + ExtendedDataLayerConfig, + XYProps, +} from '../../common/types'; +import { DataLayers } from './data_layers'; +import { Annotations } from './annotations'; const onClickValue = jest.fn(); const onSelectRange = jest.fn(); @@ -62,45 +66,36 @@ describe('XYChart component', () => { let convertSpy: jest.Mock; let defaultProps: Omit; - const dataWithoutFormats: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: { - type: 'datatable', - columns: [ - { id: 'a', name: 'a', meta: { type: 'number' } }, - { id: 'b', name: 'b', meta: { type: 'number' } }, - { id: 'c', name: 'c', meta: { type: 'string' } }, - { id: 'd', name: 'd', meta: { type: 'string' } }, - ], - rows: [ - { a: 1, b: 2, c: 'I', d: 'Row 1' }, - { a: 1, b: 5, c: 'J', d: 'Row 2' }, - ], - }, - }, + const dataWithoutFormats: Datatable = { + type: 'datatable', + columns: [ + { id: 'a', name: 'a', meta: { type: 'number' } }, + { id: 'b', name: 'b', meta: { type: 'number' } }, + { id: 'c', name: 'c', meta: { type: 'string' } }, + { id: 'd', name: 'd', meta: { type: 'string' } }, + ], + rows: [ + { a: 1, b: 2, c: 'I', d: 'Row 1' }, + { a: 1, b: 5, c: 'J', d: 'Row 2' }, + ], }; - const dataWithFormats: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: { - type: 'datatable', - columns: [ - { id: 'a', name: 'a', meta: { type: 'number' } }, - { id: 'b', name: 'b', meta: { type: 'number' } }, - { id: 'c', name: 'c', meta: { type: 'string' } }, - { id: 'd', name: 'd', meta: { type: 'string', params: { id: 'custom' } } }, - ], - rows: [ - { a: 1, b: 2, c: 'I', d: 'Row 1' }, - { a: 1, b: 5, c: 'J', d: 'Row 2' }, - ], - }, - }, + + const dataWithFormats: Datatable = { + type: 'datatable', + columns: [ + { id: 'a', name: 'a', meta: { type: 'number' } }, + { id: 'b', name: 'b', meta: { type: 'number' } }, + { id: 'c', name: 'c', meta: { type: 'string' } }, + { id: 'd', name: 'd', meta: { type: 'string', params: { id: 'custom' } } }, + ], + rows: [ + { a: 1, b: 2, c: 'I', d: 'Row 1' }, + { a: 1, b: 5, c: 'J', d: 'Row 2' }, + ], }; - const getRenderedComponent = (data: LensMultiTable, args: XYArgs) => { - return shallow(); + const getRenderedComponent = (args: XYProps) => { + return shallow(); }; beforeEach(() => { @@ -119,34 +114,38 @@ describe('XYChart component', () => { onClickValue, onSelectRange, syncColors: false, + syncTooltips: false, useLegacyTimeAxis: false, eventAnnotationService: eventAnnotationServiceMock, }; }); test('it renders line', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); expect(component).toMatchSnapshot(); - expect(component.find(LineSeries)).toHaveLength(2); - expect(component.find(LineSeries).at(0).prop('yAccessors')).toEqual(['a']); - expect(component.find(LineSeries).at(1).prop('yAccessors')).toEqual(['b']); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + expect(lineSeries).toHaveLength(2); + expect(lineSeries.at(0).prop('yAccessors')).toEqual(['a']); + expect(lineSeries.at(1).prop('yAccessors')).toEqual(['b']); }); describe('date range', () => { - const timeSampleLayer: DataLayerConfigResult = { + const { data, args } = sampleArgs(); + + const timeSampleLayer: DataLayerConfig = { + layerId: 'timeLayer', type: 'dataLayer', - layerId: 'first', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'c', @@ -157,56 +156,47 @@ describe('XYChart component', () => { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: { + ...data, + columns: data.columns.map((c) => + c.id !== 'c' + ? c + : { + ...c, + meta: { + type: 'date', + source: 'esaggs', + sourceParams: { + type: 'date_histogram', + params: {}, + appliedTimeRange: { + from: '2019-01-02T05:00:00.000Z', + to: '2019-01-03T05:00:00.000Z', + }, + }, + }, + } + ), + }, }; + const multiLayerArgs = createArgsWithLayers([ timeSampleLayer, - { - ...timeSampleLayer, - layerId: 'second', - seriesType: 'bar', - xScaleType: 'time', - }, + { ...timeSampleLayer, seriesType: 'bar', xScaleType: 'time' }, ]); - test('it uses the full date range', () => { - const { data, args } = sampleArgs(); + test('it uses the full date range', () => { const component = shallow( - c.id !== 'c' - ? c - : { - ...c, - meta: { - type: 'date', - source: 'esaggs', - sourceParams: { - type: 'date_histogram', - params: {}, - appliedTimeRange: { - from: '2019-01-02T05:00:00.000Z', - to: '2019-01-03T05:00:00.000Z', - }, - }, - }, - } - ), - }, - }, - }} args={{ ...args, layers: [ { - ...(args.layers[0] as DataLayerConfigResult), + ...(args.layers[0] as DataLayerConfig), seriesType: 'line', xScaleType: 'time', + table: timeSampleLayer.table, }, ], }} @@ -223,15 +213,21 @@ describe('XYChart component', () => { }); test('it uses passed in minInterval', () => { - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: createSampleDatatableWithRows([{ a: 1, b: 2, c: 'I', d: 'Foo' }]), - second: createSampleDatatableWithRows([]), - }, - }; + const table1 = createSampleDatatableWithRows([{ a: 1, b: 2, c: 'I', d: 'Foo' }]); + const table2 = createSampleDatatableWithRows([]); - const component = shallow(); + const component = shallow( + + ); // real auto interval is 30mins = 1800000 expect(component.find(Settings).prop('xDomain')).toMatchInlineSnapshot(` @@ -244,9 +240,9 @@ describe('XYChart component', () => { }); describe('axis time', () => { - const defaultTimeLayer: DataLayerConfigResult = { + const defaultTimeLayer: DataLayerConfig = { + layerId: 'defaultTimeLayer', type: 'dataLayer', - layerId: 'first', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'c', @@ -257,21 +253,28 @@ describe('XYChart component', () => { yScaleType: 'linear', isHistogram: true, palette: mockPaletteOutput, + table: data, }; - test('it should disable the new time axis for a line time layer when isHistogram is set to false', () => { - const { data } = sampleArgs(); + const newData = { + ...data, + dateRange: { + fromDate: new Date('2019-01-02T05:00:00.000Z'), + toDate: new Date('2019-01-03T05:00:00.000Z'), + }, + }; + + test('it should disable the new time axis for a line time layer when isHistogram is set to false', () => { const instance = shallow( ({ + ...layer, + table: newData, + })), }} - args={multiLayerArgs} /> ); @@ -280,20 +283,18 @@ describe('XYChart component', () => { expect(axisStyle).toBe(0); }); test('it should enable the new time axis for a line time layer when isHistogram is set to true', () => { - const { data } = sampleArgs(); const timeLayerArgs = createArgsWithLayers([defaultTimeLayer]); const instance = shallow( ({ + ...layer, + table: newData, + })), }} - args={timeLayerArgs} /> ); @@ -302,8 +303,7 @@ describe('XYChart component', () => { expect(axisStyle).toBe(3); }); test('it should disable the new time axis for a vertical bar with break down dimension', () => { - const { data } = sampleArgs(); - const timeLayer: DataLayerConfigResult = { + const timeLayer: DataLayerConfig = { ...defaultTimeLayer, seriesType: 'bar', }; @@ -312,14 +312,13 @@ describe('XYChart component', () => { const instance = shallow( ({ + ...layer, + table: newData, + })), }} - args={timeLayerArgs} /> ); @@ -329,8 +328,7 @@ describe('XYChart component', () => { }); test('it should enable the new time axis for a stacked vertical bar with break down dimension', () => { - const { data } = sampleArgs(); - const timeLayer: DataLayerConfigResult = { + const timeLayer: DataLayerConfig = { ...defaultTimeLayer, seriesType: 'bar_stacked', }; @@ -339,14 +337,13 @@ describe('XYChart component', () => { const instance = shallow( ({ + ...layer, + table: newData, + })), }} - args={timeLayerArgs} /> ); @@ -356,65 +353,53 @@ describe('XYChart component', () => { }); }); describe('endzones', () => { - const { args } = sampleArgs(); const table = createSampleDatatableWithRows([ { a: 1, b: 2, c: new Date('2021-04-22').valueOf(), d: 'Foo' }, { a: 1, b: 2, c: new Date('2021-04-23').valueOf(), d: 'Foo' }, { a: 1, b: 2, c: new Date('2021-04-24').valueOf(), d: 'Foo' }, ]); - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: { - ...table, - columns: table.columns.map((c) => - c.id !== 'c' - ? c - : { - ...c, - meta: { - type: 'date', - source: 'esaggs', - sourceParams: { - type: 'date_histogram', - params: {}, - appliedTimeRange: { - from: '2021-04-22T12:00:00.000Z', - to: '2021-04-24T12:00:00.000Z', - }, - }, + const newData = { + ...table, + type: 'datatable', + + columns: table.columns.map((c) => + c.id !== 'c' + ? c + : { + ...c, + meta: { + type: 'date', + source: 'esaggs', + sourceParams: { + type: 'date_histogram', + params: {}, + appliedTimeRange: { + from: '2021-04-22T12:00:00.000Z', + to: '2021-04-24T12:00:00.000Z', }, - } - ), - }, - }, - dateRange: { - // first and last bucket are partial - fromDate: new Date('2021-04-22T12:00:00.000Z'), - toDate: new Date('2021-04-24T12:00:00.000Z'), - }, + }, + }, + } + ), }; - const timeArgs: XYArgs = { + const timeArgs: XYProps = { ...args, layers: [ { - ...(args.layers[0] as DataLayerConfigResult), + ...args.layers[0], + type: 'dataLayer', seriesType: 'line', xScaleType: 'time', isHistogram: true, splitAccessor: undefined, - }, + table: newData, + } as DataLayerConfig, ], }; test('it extends interval if data is exceeding it', () => { const component = shallow( - + ); expect(component.find(Settings).prop('xDomain')).toEqual({ @@ -426,14 +411,17 @@ describe('XYChart component', () => { }); }); + const defaultTimeArgs = { + ...timeArgs, + layers: timeArgs.layers.map((layer) => ({ + ...layer, + table: data, + })), + }; + test('it renders endzone component bridging gap between domain and extended domain', () => { const component = shallow( - + ); expect(component.find(XyEndzones).dive().find('Endzones').props()).toEqual( @@ -448,12 +436,7 @@ describe('XYChart component', () => { test('should pass enabled histogram mode and min interval to endzones component', () => { const component = shallow( - + ); expect(component.find(XyEndzones).dive().find('Endzones').props()).toEqual( @@ -469,12 +452,11 @@ describe('XYChart component', () => { { ); @@ -508,13 +489,12 @@ describe('XYChart component', () => { }); describe('y axis extents', () => { - test('it passes custom y axis extents to elastic-charts axis spec', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); + test('it passes custom y axis extents to elastic-charts axis spec', () => { const component = shallow( { }); test('it passes fit to bounds y axis extents to elastic-charts axis spec', () => { - const { data, args } = sampleArgs(); - const component = shallow( { }); test('it does not allow fit for area chart', () => { - const { data, args } = sampleArgs(); - const component = shallow( { }, layers: [ { - ...(args.layers[0] as DataLayerConfigResult), + ...(args.layers[0] as DataLayerConfig), seriesType: 'area', }, ], @@ -589,12 +563,9 @@ describe('XYChart component', () => { }); test('it does not allow positive lower bound for bar', () => { - const { data, args } = sampleArgs(); - const component = shallow( { }, layers: [ { - ...(args.layers[0] as DataLayerConfigResult), + ...(args.layers[0] as DataLayerConfig), seriesType: 'bar', }, ], @@ -621,36 +592,29 @@ describe('XYChart component', () => { }); test('it does include referenceLine values when in full extent mode', () => { - const { data, args } = sampleArgsWithReferenceLine(); + const { args: refArgs } = sampleArgsWithReferenceLine(); - const component = shallow(); + const component = shallow(); expect(component.find(Axis).find('[id="left"]').prop('domain')).toEqual({ fit: false, min: NaN, max: NaN, - includeDataFromIds: ['referenceLine-referenceLine-a-rect'], + includeDataFromIds: ['referenceLine-a-referenceLine-a-rect'], }); }); }); test('it has xDomain undefined if the x is not a time scale or a histogram', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( { }); test('it uses min interval if interval is passed in and visualization is histogram', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( { }); test('disabled legend extra by default', () => { - const { data, args } = sampleArgs(); - const component = shallow(); + const { args } = sampleArgs(); + const component = shallow(); expect(component.find(Settings).at(0).prop('showLegendExtra')).toEqual(false); }); test('ignores legend extra for ordinal chart', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( - + ); expect(component.find(Settings).at(0).prop('showLegendExtra')).toEqual(false); }); @@ -709,7 +672,6 @@ describe('XYChart component', () => { const component = shallow( { }); test('it renders bar', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); expect(component).toMatchSnapshot(); - expect(component.find(BarSeries)).toHaveLength(2); - expect(component.find(BarSeries).at(0).prop('yAccessors')).toEqual(['a']); - expect(component.find(BarSeries).at(1).prop('yAccessors')).toEqual(['b']); + + const barSeries = component.find(DataLayers).dive().find(BarSeries); + expect(barSeries).toHaveLength(2); + expect(barSeries.at(0).prop('yAccessors')).toEqual(['a']); + expect(barSeries.at(1).prop('yAccessors')).toEqual(['b']); }); test('it renders area', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); expect(component).toMatchSnapshot(); - expect(component.find(AreaSeries)).toHaveLength(2); - expect(component.find(AreaSeries).at(0).prop('yAccessors')).toEqual(['a']); - expect(component.find(AreaSeries).at(1).prop('yAccessors')).toEqual(['b']); + + const areaSeries = component.find(DataLayers).dive().find(AreaSeries); + expect(areaSeries).toHaveLength(2); + expect(areaSeries.at(0).prop('yAccessors')).toEqual(['a']); + expect(areaSeries.at(1).prop('yAccessors')).toEqual(['b']); }); test('it renders horizontal bar', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); expect(component).toMatchSnapshot(); - expect(component.find(BarSeries)).toHaveLength(2); - expect(component.find(BarSeries).at(0).prop('yAccessors')).toEqual(['a']); - expect(component.find(BarSeries).at(1).prop('yAccessors')).toEqual(['b']); + + const barSeries = component.find(DataLayers).dive().find(BarSeries); + expect(barSeries).toHaveLength(2); + expect(barSeries.at(0).prop('yAccessors')).toEqual(['a']); + expect(barSeries.at(1).prop('yAccessors')).toEqual(['b']); expect(component.find(Settings).prop('rotation')).toEqual(90); }); test('it renders regular bar empty placeholder for no results', () => { const { data, args } = sampleArgs(); - - // send empty data to the chart - data.tables.first.rows = []; - - const component = shallow(); + const component = shallow( + ({ ...layer, table: { ...data, rows: [] } })), + }} + /> + ); expect(component.find(BarSeries)).toHaveLength(0); expect(component.find(EmptyPlaceholder).prop('icon')).toBeDefined(); @@ -793,7 +762,6 @@ describe('XYChart component', () => { const wrapper = mountWithIntl( { test('onBrushEnd returns correct context data for number histogram data', () => { const { args } = sampleArgs(); - const numberLayer: DataLayerConfigResult = { - type: 'dataLayer', + const numberHistogramData: Datatable = { + type: 'datatable', + rows: [ + { + xAccessorId: 5, + yAccessorId: 1, + }, + { + xAccessorId: 7, + yAccessorId: 1, + }, + { + xAccessorId: 8, + yAccessorId: 1, + }, + { + xAccessorId: 10, + yAccessorId: 1, + }, + ], + columns: [ + { + id: 'xAccessorId', + name: 'bytes', + meta: { type: 'number' }, + }, + { + id: 'yAccessorId', + name: 'Count of records', + meta: { type: 'number' }, + }, + ], + }; + + const numberLayer: DataLayerConfig = { layerId: 'numberLayer', + type: 'dataLayer', layerType: LayerTypes.DATA, hide: false, xAccessor: 'xAccessorId', @@ -824,55 +826,12 @@ describe('XYChart component', () => { seriesType: 'bar_stacked', accessors: ['yAccessorId'], palette: mockPaletteOutput, - }; - - const numberHistogramData: LensMultiTable = { - type: 'lens_multitable', - tables: { - numberLayer: { - type: 'datatable', - rows: [ - { - xAccessorId: 5, - yAccessorId: 1, - }, - { - xAccessorId: 7, - yAccessorId: 1, - }, - { - xAccessorId: 8, - yAccessorId: 1, - }, - { - xAccessorId: 10, - yAccessorId: 1, - }, - ], - columns: [ - { - id: 'xAccessorId', - name: 'bytes', - meta: { type: 'number' }, - }, - { - id: 'yAccessorId', - name: 'Count of records', - meta: { type: 'number' }, - }, - ], - }, - }, - dateRange: { - fromDate: new Date('2020-04-01T16:14:16.246Z'), - toDate: new Date('2020-04-01T17:15:41.263Z'), - }, + table: numberHistogramData, }; const wrapper = mountWithIntl( { expect(onSelectRange).toHaveBeenCalledWith({ column: 0, - table: numberHistogramData.tables.numberLayer, + table: numberHistogramData, range: [5, 8], }); }); test('onBrushEnd is not set on non-interactive mode', () => { - const { args, data } = sampleArgs(); + const { args } = sampleArgs(); - const wrapper = mountWithIntl( - - ); + const wrapper = mountWithIntl(); expect(wrapper.find(Settings).first().prop('onBrushEnd')).toBeUndefined(); }); @@ -905,7 +862,6 @@ describe('XYChart component', () => { const wrapper = mountWithIntl( { const wrapper = mountWithIntl( { accessors: ['d'], columnToLabel: '{"a": "Label A", "b": "Label B", "d": "Label D"}', palette: mockPaletteOutput, + table: data, }, ], }} @@ -962,13 +918,13 @@ describe('XYChart component', () => { { column: 1, row: 1, - table: data.tables.first, + table: data, value: 5, }, { column: 1, row: 0, - table: data.tables.first, + table: data, value: 2, }, ], @@ -996,7 +952,6 @@ describe('XYChart component', () => { const wrapper = mountWithIntl( { test('onElementClick returns correct context data for numeric histogram', () => { const { args } = sampleArgs(); - const numberLayer: DataLayerConfigResult = { - type: 'dataLayer', + const numberHistogramData: Datatable = { + type: 'datatable', + rows: [ + { + xAccessorId: 5, + yAccessorId: 1, + }, + { + xAccessorId: 7, + yAccessorId: 1, + }, + { + xAccessorId: 8, + yAccessorId: 1, + }, + { + xAccessorId: 10, + yAccessorId: 1, + }, + ], + columns: [ + { + id: 'xAccessorId', + name: 'bytes', + meta: { type: 'number' }, + }, + { + id: 'yAccessorId', + name: 'Count of records', + meta: { type: 'number' }, + }, + ], + }; + + const numberLayer: DataLayerConfig = { layerId: 'numberLayer', + type: 'dataLayer', layerType: LayerTypes.DATA, hide: false, xAccessor: 'xAccessorId', @@ -1035,50 +1024,9 @@ describe('XYChart component', () => { seriesType: 'bar_stacked', accessors: ['yAccessorId'], palette: mockPaletteOutput, + table: numberHistogramData, }; - const numberHistogramData: LensMultiTable = { - type: 'lens_multitable', - tables: { - numberLayer: { - type: 'datatable', - rows: [ - { - xAccessorId: 5, - yAccessorId: 1, - }, - { - xAccessorId: 7, - yAccessorId: 1, - }, - { - xAccessorId: 8, - yAccessorId: 1, - }, - { - xAccessorId: 10, - yAccessorId: 1, - }, - ], - columns: [ - { - id: 'xAccessorId', - name: 'bytes', - meta: { type: 'number' }, - }, - { - id: 'yAccessorId', - name: 'Count of records', - meta: { type: 'number' }, - }, - ], - }, - }, - dateRange: { - fromDate: new Date('2020-04-01T16:14:16.246Z'), - toDate: new Date('2020-04-01T17:15:41.263Z'), - }, - }; const geometry: GeometryValue = { x: 5, y: 1, @@ -1097,7 +1045,6 @@ describe('XYChart component', () => { const wrapper = mountWithIntl( { { column: 0, row: 0, - table: numberHistogramData.tables.numberLayer, + table: numberHistogramData, value: 5, }, ], @@ -1139,13 +1086,12 @@ describe('XYChart component', () => { const wrapper = mountWithIntl( { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: data, }, ], }} @@ -1170,7 +1117,7 @@ describe('XYChart component', () => { { column: 3, row: 1, - table: data.tables.first, + table: data, value: 'Bar', }, ], @@ -1179,21 +1126,31 @@ describe('XYChart component', () => { test('sets up correct yScaleType equal to binary_linear for bytes formatting', () => { const { args, data } = sampleArgs(); - data.tables.first.columns[0].meta = { - type: 'number', - params: { id: 'bytes', params: { pattern: '0,0.00b' } }, + + const [firstCol, ...rest] = data.columns; + const newData: Datatable = { + ...data, + columns: [ + { + ...firstCol, + meta: { + type: 'number', + params: { id: 'bytes', params: { pattern: '0,0.00b' } }, + }, + }, + ...rest, + ], }; const wrapper = mountWithIntl( { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: newData, }, ], }} @@ -1218,13 +1176,12 @@ describe('XYChart component', () => { const wrapper = mountWithIntl( { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: data, }, ], }} @@ -1244,94 +1202,92 @@ describe('XYChart component', () => { }); test('onElementClick is not triggering event on non-interactive mode', () => { - const { args, data } = sampleArgs(); + const { args } = sampleArgs(); - const wrapper = mountWithIntl( - - ); + const wrapper = mountWithIntl(); expect(wrapper.find(Settings).first().prop('onElementClick')).toBeUndefined(); }); test('legendAction is not triggering event on non-interactive mode', () => { - const { args, data } = sampleArgs(); + const { args } = sampleArgs(); - const wrapper = mountWithIntl( - - ); + const wrapper = mountWithIntl(); expect(wrapper.find(Settings).first().prop('legendAction')).toBeUndefined(); }); test('it renders stacked bar', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); expect(component).toMatchSnapshot(); - expect(component.find(BarSeries)).toHaveLength(2); - expect(component.find(BarSeries).at(0).prop('stackAccessors')).toHaveLength(1); - expect(component.find(BarSeries).at(1).prop('stackAccessors')).toHaveLength(1); + + const barSeries = component.find(DataLayers).dive().find(BarSeries); + expect(barSeries).toHaveLength(2); + expect(barSeries.at(0).prop('stackAccessors')).toHaveLength(1); + expect(barSeries.at(1).prop('stackAccessors')).toHaveLength(1); }); test('it renders stacked area', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); expect(component).toMatchSnapshot(); - expect(component.find(AreaSeries)).toHaveLength(2); - expect(component.find(AreaSeries).at(0).prop('stackAccessors')).toHaveLength(1); - expect(component.find(AreaSeries).at(1).prop('stackAccessors')).toHaveLength(1); + + const areaSeries = component.find(DataLayers).dive().find(AreaSeries); + expect(areaSeries).toHaveLength(2); + expect(areaSeries.at(0).prop('stackAccessors')).toHaveLength(1); + expect(areaSeries.at(1).prop('stackAccessors')).toHaveLength(1); }); test('it renders stacked horizontal bar', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); expect(component).toMatchSnapshot(); - expect(component.find(BarSeries)).toHaveLength(2); - expect(component.find(BarSeries).at(0).prop('stackAccessors')).toHaveLength(1); - expect(component.find(BarSeries).at(1).prop('stackAccessors')).toHaveLength(1); + + const barSeries = component.find(DataLayers).dive().find(BarSeries); + expect(barSeries).toHaveLength(2); + expect(barSeries.at(0).prop('stackAccessors')).toHaveLength(1); + expect(barSeries.at(1).prop('stackAccessors')).toHaveLength(1); expect(component.find(Settings).prop('rotation')).toEqual(90); }); test('it renders stacked bar empty placeholder for no results', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( { /> ); - expect(component.find(BarSeries)).toHaveLength(0); + expect(component.find(DataLayers)).toHaveLength(0); expect(component.find(EmptyPlaceholder).prop('icon')).toBeDefined(); }); test('it passes time zone to the series', () => { - const { data, args } = sampleArgs(); - const component = shallow( - - ); - expect(component.find(LineSeries).at(0).prop('timeZone')).toEqual('CEST'); - expect(component.find(LineSeries).at(1).prop('timeZone')).toEqual('CEST'); + const { args } = sampleArgs(); + const component = shallow(); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + expect(lineSeries.at(0).prop('timeZone')).toEqual('CEST'); + expect(lineSeries.at(1).prop('timeZone')).toEqual('CEST'); }); test('it applies histogram mode to the series for single series', () => { - const { data, args } = sampleArgs(); - const firstLayer: DataLayerConfigResult = { + const { args } = sampleArgs(); + const firstLayer: DataLayerConfig = { ...args.layers[0], accessors: ['b'], seriesType: 'bar', isHistogram: true, - } as DataLayerConfigResult; + } as DataLayerConfig; delete firstLayer.splitAccessor; const component = shallow( - + ); - expect(component.find(BarSeries).at(0).prop('enableHistogramMode')).toEqual(true); + expect( + component.find(DataLayers).dive().find(BarSeries).at(0).prop('enableHistogramMode') + ).toEqual(true); }); test('it does not apply histogram mode to more than one bar series for unstacked bar chart', () => { - const { data, args } = sampleArgs(); - const firstLayer: DataLayerConfigResult = { + const { args } = sampleArgs(); + const firstLayer: DataLayerConfig = { ...args.layers[0], seriesType: 'bar', isHistogram: true, - } as DataLayerConfigResult; + } as DataLayerConfig; delete firstLayer.splitAccessor; const component = shallow( - + ); - expect(component.find(BarSeries).at(0).prop('enableHistogramMode')).toEqual(false); - expect(component.find(BarSeries).at(1).prop('enableHistogramMode')).toEqual(false); + + const barSeries = component.find(DataLayers).dive().find(BarSeries); + expect(barSeries.at(0).prop('enableHistogramMode')).toEqual(false); + expect(barSeries.at(1).prop('enableHistogramMode')).toEqual(false); }); test('it applies histogram mode to more than one the series for unstacked line/area chart', () => { - const { data, args } = sampleArgs(); - const firstLayer: DataLayerConfigResult = { + const { args } = sampleArgs(); + const firstLayer: DataLayerConfig = { ...args.layers[0], seriesType: 'line', isHistogram: true, - } as DataLayerConfigResult; + } as DataLayerConfig; delete firstLayer.splitAccessor; - const secondLayer: DataLayerConfigResult = { + const secondLayer: DataLayerConfig = { ...args.layers[0], seriesType: 'line', isHistogram: true, - } as DataLayerConfigResult; + } as DataLayerConfig; delete secondLayer.splitAccessor; const component = shallow( - + ); - expect(component.find(LineSeries).at(0).prop('enableHistogramMode')).toEqual(true); - expect(component.find(LineSeries).at(1).prop('enableHistogramMode')).toEqual(true); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + expect(lineSeries.at(0).prop('enableHistogramMode')).toEqual(true); + expect(lineSeries.at(1).prop('enableHistogramMode')).toEqual(true); }); test('it applies histogram mode to the series for stacked series', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( { }} /> ); - expect(component.find(BarSeries).at(0).prop('enableHistogramMode')).toEqual(true); - expect(component.find(BarSeries).at(1).prop('enableHistogramMode')).toEqual(true); + + const barSeries = component.find(DataLayers).dive().find(BarSeries); + expect(barSeries.at(0).prop('enableHistogramMode')).toEqual(true); + expect(barSeries.at(1).prop('enableHistogramMode')).toEqual(true); }); test('it does not apply histogram mode for splitted series', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); - expect(component.find(BarSeries).at(0).prop('enableHistogramMode')).toEqual(false); - expect(component.find(BarSeries).at(1).prop('enableHistogramMode')).toEqual(false); + + const barSeries = component.find(DataLayers).dive().find(BarSeries); + expect(barSeries.at(0).prop('enableHistogramMode')).toEqual(false); + expect(barSeries.at(1).prop('enableHistogramMode')).toEqual(false); }); describe('y axes', () => { - test('single axis if possible', () => { - const args = createArgsWithLayers(); + const args = createArgsWithLayers(); + const layer = args.layers[0] as DataLayerConfig; - const component = getRenderedComponent(dataWithoutFormats, args); + test('single axis if possible', () => { + const newArgs = { + ...args, + layers: args.layers.map((l) => ({ + ...layer, + table: dataWithoutFormats, + })), + }; + const component = getRenderedComponent(newArgs); const axes = component.find(Axis); expect(axes).toHaveLength(2); }); test('multiple axes because of config', () => { - const args = createArgsWithLayers(); - const newArgs = { + const newArgs: XYProps = { ...args, layers: [ { - ...args.layers[0], + ...layer, accessors: ['a', 'b'], yConfig: [ { + type: 'yConfig', forAccessor: 'a', axisMode: 'left', }, { + type: 'yConfig', forAccessor: 'b', axisMode: 'right', }, ], + table: dataWithoutFormats, }, ], - } as XYArgs; + }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); + const component = getRenderedComponent(newArgs); const axes = component.find(Axis); expect(axes).toHaveLength(3); - expect(component.find(LineSeries).at(0).prop('groupId')).toEqual(axes.at(1).prop('groupId')); - expect(component.find(LineSeries).at(1).prop('groupId')).toEqual(axes.at(2).prop('groupId')); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + expect(lineSeries.at(0).prop('groupId')).toEqual(axes.at(1).prop('groupId')); + expect(lineSeries.at(1).prop('groupId')).toEqual(axes.at(2).prop('groupId')); }); test('multiple axes because of incompatible formatters', () => { - const args = createArgsWithLayers(); - const newArgs = { + const newArgs: XYProps = { ...args, layers: [ { - ...args.layers[0], + ...layer, accessors: ['c', 'd'], + table: dataWithFormats, }, ], - } as XYArgs; + }; - const component = getRenderedComponent(dataWithFormats, newArgs); + const component = getRenderedComponent(newArgs); const axes = component.find(Axis); expect(axes).toHaveLength(3); - expect(component.find(LineSeries).at(0).prop('groupId')).toEqual(axes.at(1).prop('groupId')); - expect(component.find(LineSeries).at(1).prop('groupId')).toEqual(axes.at(2).prop('groupId')); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + expect(lineSeries.at(0).prop('groupId')).toEqual(axes.at(1).prop('groupId')); + expect(lineSeries.at(1).prop('groupId')).toEqual(axes.at(2).prop('groupId')); }); test('single axis despite different formatters if enforced', () => { - const args = createArgsWithLayers(); - const newArgs = { + const newArgs: XYProps = { ...args, layers: [ { - ...args.layers[0], + ...layer, accessors: ['c', 'd'], yConfig: [ { + type: 'yConfig', forAccessor: 'c', axisMode: 'left', }, { + type: 'yConfig', forAccessor: 'd', axisMode: 'left', }, ], + table: dataWithoutFormats, }, ], - } as XYArgs; + }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); + const component = getRenderedComponent(newArgs); const axes = component.find(Axis); expect(axes).toHaveLength(2); }); }); describe('y series coloring', () => { + const args = createArgsWithLayers(); + const layer = args.layers[0] as DataLayerConfig; + test('color is applied to chart for multiple series', () => { - const args = createArgsWithLayers(); - const newArgs = { + const newArgs: XYProps = { ...args, layers: [ { - ...args.layers[0], - splitAccessor: undefined, + ...layer, + type: 'extendedDataLayer', accessors: ['a', 'b'], + splitAccessor: undefined, yConfig: [ { + type: 'yConfig', forAccessor: 'a', color: '#550000', }, { + type: 'yConfig', forAccessor: 'b', color: '#FFFF00', }, ], - }, + table: dataWithoutFormats, + } as ExtendedDataLayerConfig, { - ...args.layers[0], - splitAccessor: undefined, + ...layer, + type: 'extendedDataLayer', accessors: ['c'], + splitAccessor: undefined, yConfig: [ { + type: 'yConfig', forAccessor: 'c', color: '#FEECDF', }, ], - }, + table: dataWithoutFormats, + } as ExtendedDataLayerConfig, ], - } as XYArgs; + }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); + const component = getRenderedComponent(newArgs); + const lineSeries = component.find(DataLayers).dive().find(LineSeries); expect( - (component.find(LineSeries).at(0).prop('color') as Function)!({ + (lineSeries.at(0).prop('color') as Function)!({ yAccessor: 'a', seriesKeys: ['a'], }) ).toEqual('#550000'); expect( - (component.find(LineSeries).at(1).prop('color') as Function)!({ + (lineSeries.at(1).prop('color') as Function)!({ yAccessor: 'b', seriesKeys: ['b'], }) ).toEqual('#FFFF00'); expect( - (component.find(LineSeries).at(2).prop('color') as Function)!({ + (lineSeries.at(2).prop('color') as Function)!({ yAccessor: 'c', seriesKeys: ['c'], }) ).toEqual('#FEECDF'); }); test('color is not applied to chart when splitAccessor is defined or when yConfig is not configured', () => { - const args = createArgsWithLayers(); - const newArgs = { + const newArgs: XYProps = { ...args, layers: [ { - ...args.layers[0], + ...layer, accessors: ['a'], yConfig: [ { + type: 'yConfig', forAccessor: 'a', color: '#550000', }, ], + table: dataWithoutFormats, }, { - ...args.layers[0], - splitAccessor: undefined, + ...layer, accessors: ['c'], + table: dataWithoutFormats, }, ], - } as XYArgs; + }; + + const component = getRenderedComponent(newArgs); - const component = getRenderedComponent(dataWithoutFormats, newArgs); + const lineSeries = component.find(DataLayers).dive().find(LineSeries); expect( - (component.find(LineSeries).at(0).prop('color') as Function)!({ + (lineSeries.at(0).prop('color') as Function)!({ yAccessor: 'a', seriesKeys: ['a'], }) ).toEqual('blue'); expect( - (component.find(LineSeries).at(1).prop('color') as Function)!({ + (lineSeries.at(1).prop('color') as Function)!({ yAccessor: 'c', seriesKeys: ['c'], }) @@ -1647,16 +1636,21 @@ describe('XYChart component', () => { accessors: ['a'], splitAccessor: undefined, columnToLabel: '', + table: dataWithoutFormats, }, ], }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); - const nameFn = component.find(LineSeries).prop('name') as SeriesNameFn; + const component = getRenderedComponent(newArgs); + const nameFn = component + .find(DataLayers) + .dive() + .find(LineSeries) + .prop('name') as SeriesNameFn; // In this case, the ID is used as the name. This shouldn't happen in practice - expect(nameFn({ ...nameFnArgs, seriesKeys: ['a'] }, false)).toEqual(''); - expect(nameFn({ ...nameFnArgs, seriesKeys: ['nonsense'] }, false)).toEqual(''); + expect(nameFn({ ...nameFnArgs, seriesKeys: ['a'] }, false)).toEqual(null); + expect(nameFn({ ...nameFnArgs, seriesKeys: ['nonsense'] }, false)).toEqual(null); }); test('simplest xy chart with empty name', () => { @@ -1669,16 +1663,21 @@ describe('XYChart component', () => { accessors: ['a'], splitAccessor: undefined, columnToLabel: '{"a":""}', + table: dataWithoutFormats, }, ], }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); - const nameFn = component.find(LineSeries).prop('name') as SeriesNameFn; + const component = getRenderedComponent(newArgs); + const nameFn = component + .find(DataLayers) + .dive() + .find(LineSeries) + .prop('name') as SeriesNameFn; // In this case, the ID is used as the name. This shouldn't happen in practice expect(nameFn({ ...nameFnArgs, seriesKeys: ['a'] }, false)).toEqual(''); - expect(nameFn({ ...nameFnArgs, seriesKeys: ['nonsense'] }, false)).toEqual(''); + expect(nameFn({ ...nameFnArgs, seriesKeys: ['nonsense'] }, false)).toEqual(null); }); test('simplest xy chart with human-readable name', () => { @@ -1691,12 +1690,17 @@ describe('XYChart component', () => { accessors: ['a'], splitAccessor: undefined, columnToLabel: '{"a":"Column A"}', + table: dataWithoutFormats, }, ], }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); - const nameFn = component.find(LineSeries).prop('name') as SeriesNameFn; + const component = getRenderedComponent(newArgs); + const nameFn = component + .find(DataLayers) + .dive() + .find(LineSeries) + .prop('name') as SeriesNameFn; expect(nameFn({ ...nameFnArgs, seriesKeys: ['a'] }, false)).toEqual('Column A'); }); @@ -1711,19 +1715,22 @@ describe('XYChart component', () => { accessors: ['a', 'b'], splitAccessor: undefined, columnToLabel: '{"a": "Label A"}', + table: dataWithoutFormats, }, ], }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); - const nameFn1 = component.find(LineSeries).at(0).prop('name') as SeriesNameFn; - const nameFn2 = component.find(LineSeries).at(1).prop('name') as SeriesNameFn; + const component = getRenderedComponent(newArgs); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + const nameFn1 = lineSeries.at(0).prop('name') as SeriesNameFn; + const nameFn2 = lineSeries.at(1).prop('name') as SeriesNameFn; // This accessor has a human-readable name expect(nameFn1({ ...nameFnArgs, seriesKeys: ['a'] }, false)).toEqual('Label A'); // This accessor does not - expect(nameFn2({ ...nameFnArgs, seriesKeys: ['b'] }, false)).toEqual(''); - expect(nameFn1({ ...nameFnArgs, seriesKeys: ['nonsense'] }, false)).toEqual(''); + expect(nameFn2({ ...nameFnArgs, seriesKeys: ['b'] }, false)).toEqual(null); + expect(nameFn1({ ...nameFnArgs, seriesKeys: ['nonsense'] }, false)).toEqual(null); }); test('split series without formatting and single y accessor', () => { @@ -1736,12 +1743,17 @@ describe('XYChart component', () => { accessors: ['a'], splitAccessor: 'd', columnToLabel: '{"a": "Label A"}', + table: dataWithoutFormats, }, ], }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); - const nameFn = component.find(LineSeries).prop('name') as SeriesNameFn; + const component = getRenderedComponent(newArgs); + const nameFn = component + .find(DataLayers) + .dive() + .find(LineSeries) + .prop('name') as SeriesNameFn; expect(nameFn({ ...nameFnArgs, seriesKeys: ['split1', 'a'] }, false)).toEqual('split1'); }); @@ -1756,12 +1768,17 @@ describe('XYChart component', () => { accessors: ['a'], splitAccessor: 'd', columnToLabel: '{"a": "Label A"}', + table: dataWithFormats, }, ], }; - const component = getRenderedComponent(dataWithFormats, newArgs); - const nameFn = component.find(LineSeries).prop('name') as SeriesNameFn; + const component = getRenderedComponent(newArgs); + const nameFn = component + .find(DataLayers) + .dive() + .find(LineSeries) + .prop('name') as SeriesNameFn; convertSpy.mockReturnValueOnce('formatted'); expect(nameFn({ ...nameFnArgs, seriesKeys: ['split1', 'a'] }, false)).toEqual('formatted'); @@ -1778,13 +1795,16 @@ describe('XYChart component', () => { accessors: ['a', 'b'], splitAccessor: 'd', columnToLabel: '{"a": "Label A","b": "Label B"}', + table: dataWithoutFormats, }, ], }; - const component = getRenderedComponent(dataWithoutFormats, newArgs); - const nameFn1 = component.find(LineSeries).at(0).prop('name') as SeriesNameFn; - const nameFn2 = component.find(LineSeries).at(0).prop('name') as SeriesNameFn; + const component = getRenderedComponent(newArgs); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + const nameFn1 = lineSeries.at(0).prop('name') as SeriesNameFn; + const nameFn2 = lineSeries.at(0).prop('name') as SeriesNameFn; expect(nameFn1({ ...nameFnArgs, seriesKeys: ['split1', 'a'] }, false)).toEqual( 'split1 - Label A' @@ -1804,13 +1824,16 @@ describe('XYChart component', () => { accessors: ['a', 'b'], splitAccessor: 'd', columnToLabel: '{"a": "Label A","b": "Label B"}', + table: dataWithFormats, }, ], }; - const component = getRenderedComponent(dataWithFormats, newArgs); - const nameFn1 = component.find(LineSeries).at(0).prop('name') as SeriesNameFn; - const nameFn2 = component.find(LineSeries).at(1).prop('name') as SeriesNameFn; + const component = getRenderedComponent(newArgs); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + const nameFn1 = lineSeries.at(0).prop('name') as SeriesNameFn; + const nameFn2 = lineSeries.at(1).prop('name') as SeriesNameFn; convertSpy.mockReturnValueOnce('formatted1').mockReturnValueOnce('formatted2'); expect(nameFn1({ ...nameFnArgs, seriesKeys: ['split1', 'a'] }, false)).toEqual( @@ -1823,57 +1846,58 @@ describe('XYChart component', () => { }); test('it set the scale of the x axis according to the args prop', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); - expect(component.find(LineSeries).at(0).prop('xScaleType')).toEqual(ScaleType.Ordinal); - expect(component.find(LineSeries).at(1).prop('xScaleType')).toEqual(ScaleType.Ordinal); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + expect(lineSeries.at(0).prop('xScaleType')).toEqual(ScaleType.Ordinal); + expect(lineSeries.at(1).prop('xScaleType')).toEqual(ScaleType.Ordinal); }); test('it set the scale of the y axis according to the args prop', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( ); - expect(component.find(LineSeries).at(0).prop('yScaleType')).toEqual(ScaleType.Sqrt); - expect(component.find(LineSeries).at(1).prop('yScaleType')).toEqual(ScaleType.Sqrt); + + const lineSeries = component.find(DataLayers).dive().find(LineSeries); + expect(lineSeries.at(0).prop('yScaleType')).toEqual(ScaleType.Sqrt); + expect(lineSeries.at(1).prop('yScaleType')).toEqual(ScaleType.Sqrt); }); test('it gets the formatter for the x axis', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); - shallow(); + shallow(); expect(getFormatSpy).toHaveBeenCalledWith({ id: 'string' }); }); test('it gets the formatter for the y axis if there is only one accessor', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); shallow( ); @@ -1884,9 +1908,9 @@ describe('XYChart component', () => { }); test('it should pass the formatter function to the axis', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); - const instance = shallow(); + const instance = shallow(); const tickFormatter = instance.find(Axis).first().prop('tickFormat'); @@ -1900,7 +1924,7 @@ describe('XYChart component', () => { }); test('it should set the tickLabel visibility on the x axis if the tick labels is hidden', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.tickLabelsVisibilitySettings = { x: false, @@ -1909,7 +1933,7 @@ describe('XYChart component', () => { type: 'tickLabelsConfig', }; - const instance = shallow(); + const instance = shallow(); const axisStyle = instance.find(Axis).first().prop('style'); @@ -1921,7 +1945,7 @@ describe('XYChart component', () => { }); test('it should set the tickLabel visibility on the y axis if the tick labels is hidden', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.tickLabelsVisibilitySettings = { x: true, @@ -1930,7 +1954,7 @@ describe('XYChart component', () => { type: 'tickLabelsConfig', }; - const instance = shallow(); + const instance = shallow(); const axisStyle = instance.find(Axis).at(1).prop('style'); @@ -1942,7 +1966,7 @@ describe('XYChart component', () => { }); test('it should set the tickLabel visibility on the x axis if the tick labels is shown', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.tickLabelsVisibilitySettings = { x: true, @@ -1951,7 +1975,7 @@ describe('XYChart component', () => { type: 'tickLabelsConfig', }; - const instance = shallow(); + const instance = shallow(); const axisStyle = instance.find(Axis).first().prop('style'); @@ -1963,7 +1987,7 @@ describe('XYChart component', () => { }); test('it should set the tickLabel orientation on the x axis', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.labelsOrientation = { x: -45, @@ -1972,7 +1996,7 @@ describe('XYChart component', () => { type: 'labelsOrientationConfig', }; - const instance = shallow(); + const instance = shallow(); const axisStyle = instance.find(Axis).first().prop('style'); @@ -1984,7 +2008,7 @@ describe('XYChart component', () => { }); test('it should set the tickLabel visibility on the y axis if the tick labels is shown', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.tickLabelsVisibilitySettings = { x: false, @@ -1993,7 +2017,7 @@ describe('XYChart component', () => { type: 'tickLabelsConfig', }; - const instance = shallow(); + const instance = shallow(); const axisStyle = instance.find(Axis).at(1).prop('style'); @@ -2005,7 +2029,7 @@ describe('XYChart component', () => { }); test('it should set the tickLabel orientation on the y axis', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.labelsOrientation = { x: -45, @@ -2014,7 +2038,7 @@ describe('XYChart component', () => { type: 'labelsOrientationConfig', }; - const instance = shallow(); + const instance = shallow(); const axisStyle = instance.find(Axis).at(1).prop('style'); @@ -2026,37 +2050,33 @@ describe('XYChart component', () => { }); test('it should remove invalid rows', () => { - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: { - type: 'datatable', - columns: [ - { id: 'a', name: 'a', meta: { type: 'number' } }, - { id: 'b', name: 'b', meta: { type: 'number' } }, - { id: 'c', name: 'c', meta: { type: 'string' } }, - ], - rows: [ - { a: undefined, b: 2, c: 'I', d: 'Row 1' }, - { a: 1, b: 5, c: 'J', d: 'Row 2' }, - ], - }, - second: { - type: 'datatable', - columns: [ - { id: 'a', name: 'a', meta: { type: 'number' } }, - { id: 'b', name: 'b', meta: { type: 'number' } }, - { id: 'c', name: 'c', meta: { type: 'string' } }, - ], - rows: [ - { a: undefined, b: undefined, c: undefined }, - { a: undefined, b: undefined, c: undefined }, - ], - }, - }, + const data1: Datatable = { + type: 'datatable', + columns: [ + { id: 'a', name: 'a', meta: { type: 'number' } }, + { id: 'b', name: 'b', meta: { type: 'number' } }, + { id: 'c', name: 'c', meta: { type: 'string' } }, + ], + rows: [ + { a: undefined, b: 2, c: 'I', d: 'Row 1' }, + { a: 1, b: 5, c: 'J', d: 'Row 2' }, + ], }; - const args: XYArgs = { + const data2: Datatable = { + type: 'datatable', + columns: [ + { id: 'a', name: 'a', meta: { type: 'number' } }, + { id: 'b', name: 'b', meta: { type: 'number' } }, + { id: 'c', name: 'c', meta: { type: 'string' } }, + ], + rows: [ + { a: undefined, b: undefined, c: undefined }, + { a: undefined, b: undefined, c: undefined }, + ], + }; + + const args: XYProps = { xTitle: '', yTitle: '', yRightTitle: '', @@ -2090,8 +2110,8 @@ describe('XYChart component', () => { }, layers: [ { - type: 'dataLayer', layerId: 'first', + type: 'dataLayer', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'a', @@ -2102,10 +2122,11 @@ describe('XYChart component', () => { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: data1, }, { - type: 'dataLayer', layerId: 'second', + type: 'dataLayer', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'a', @@ -2116,13 +2137,14 @@ describe('XYChart component', () => { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: data2, }, ], }; - const component = shallow(); + const component = shallow(); - const series = component.find(LineSeries); + const series = component.find(DataLayers).dive().find(LineSeries); // Only one series should be rendered, even though 2 are configured // This one series should only have one row, even though 2 are sent @@ -2130,25 +2152,20 @@ describe('XYChart component', () => { }); test('it should not remove rows with falsy but non-undefined values', () => { - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: { - type: 'datatable', - columns: [ - { id: 'a', name: 'a', meta: { type: 'number' } }, - { id: 'b', name: 'b', meta: { type: 'number' } }, - { id: 'c', name: 'c', meta: { type: 'number' } }, - ], - rows: [ - { a: 0, b: 2, c: 5 }, - { a: 1, b: 0, c: 7 }, - ], - }, - }, + const data: Datatable = { + type: 'datatable', + columns: [ + { id: 'a', name: 'a', meta: { type: 'number' } }, + { id: 'b', name: 'b', meta: { type: 'number' } }, + { id: 'c', name: 'c', meta: { type: 'number' } }, + ], + rows: [ + { a: 0, b: 2, c: 5 }, + { a: 1, b: 0, c: 7 }, + ], }; - const args: XYArgs = { + const args: XYProps = { xTitle: '', yTitle: '', yRightTitle: '', @@ -2182,8 +2199,8 @@ describe('XYChart component', () => { }, layers: [ { - type: 'dataLayer', layerId: 'first', + type: 'dataLayer', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'a', @@ -2194,13 +2211,14 @@ describe('XYChart component', () => { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: data, }, ], }; - const component = shallow(); + const component = shallow(); - const series = component.find(LineSeries); + const series = component.find(DataLayers).dive().find(LineSeries); expect(series.prop('data')).toEqual([ { a: 0, b: 2, c: 5 }, @@ -2209,22 +2227,17 @@ describe('XYChart component', () => { }); test('it should show legend for split series, even with one row', () => { - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: { - type: 'datatable', - columns: [ - { id: 'a', name: 'a', meta: { type: 'number' } }, - { id: 'b', name: 'b', meta: { type: 'number' } }, - { id: 'c', name: 'c', meta: { type: 'string' } }, - ], - rows: [{ a: 1, b: 5, c: 'J' }], - }, - }, + const data: Datatable = { + type: 'datatable', + columns: [ + { id: 'a', name: 'a', meta: { type: 'number' } }, + { id: 'b', name: 'b', meta: { type: 'number' } }, + { id: 'c', name: 'c', meta: { type: 'string' } }, + ], + rows: [{ a: 1, b: 5, c: 'J' }], }; - const args: XYArgs = { + const args: XYProps = { xTitle: '', yTitle: '', yRightTitle: '', @@ -2258,8 +2271,8 @@ describe('XYChart component', () => { }, layers: [ { - type: 'dataLayer', layerId: 'first', + type: 'dataLayer', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'a', @@ -2270,27 +2283,27 @@ describe('XYChart component', () => { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: data, }, ], }; - const component = shallow(); + const component = shallow(); expect(component.find(Settings).prop('showLegend')).toEqual(true); }); test('it should always show legend if showSingleSeries is set', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( { }); test('it should populate the correct legendPosition if isInside is set', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( { }); test('it not show legend if isVisible is set to false', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( { }); test('it should show legend on right side', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); const component = shallow( { }); test('it should apply the fitting function to all non-bar series', () => { - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: createSampleDatatableWithRows([ - { a: 1, b: 2, c: 'I', d: 'Foo' }, - { a: 1, b: 5, c: 'J', d: 'Bar' }, - ]), - }, - }; + const data: Datatable = createSampleDatatableWithRows([ + { a: 1, b: 2, c: 'I', d: 'Foo' }, + { a: 1, b: 5, c: 'J', d: 'Bar' }, + ]); - const args: XYArgs = createArgsWithLayers([ - { ...sampleLayer, accessors: ['a'] }, - { ...sampleLayer, seriesType: 'bar', accessors: ['a'] }, - { ...sampleLayer, seriesType: 'area', accessors: ['a'] }, - { ...sampleLayer, seriesType: 'area_stacked', accessors: ['a'] }, + const args: XYProps = createArgsWithLayers([ + { ...sampleLayer, accessors: ['a'], table: data }, + { ...sampleLayer, seriesType: 'bar', accessors: ['a'], table: data }, + { ...sampleLayer, seriesType: 'area', accessors: ['a'], table: data }, + { ...sampleLayer, seriesType: 'area_stacked', accessors: ['a'], table: data }, ]); const component = shallow( - + ); - - expect(component.find(LineSeries).prop('fit')).toEqual({ type: Fit.Carry }); - expect(component.find(BarSeries).prop('fit')).toEqual(undefined); - expect(component.find(AreaSeries).at(0).prop('fit')).toEqual({ type: Fit.Carry }); - expect(component.find(AreaSeries).at(0).prop('stackAccessors')).toEqual([]); - expect(component.find(AreaSeries).at(1).prop('fit')).toEqual({ type: Fit.Carry }); - expect(component.find(AreaSeries).at(1).prop('stackAccessors')).toEqual(['c']); + const dataLayers = component.find(DataLayers).dive(); + expect(dataLayers.find(LineSeries).prop('fit')).toEqual({ type: Fit.Carry }); + expect(dataLayers.find(BarSeries).prop('fit')).toEqual(undefined); + expect(dataLayers.find(AreaSeries).at(0).prop('fit')).toEqual({ type: Fit.Carry }); + expect(dataLayers.find(AreaSeries).at(0).prop('stackAccessors')).toEqual([]); + expect(dataLayers.find(AreaSeries).at(1).prop('fit')).toEqual({ type: Fit.Carry }); + expect(dataLayers.find(AreaSeries).at(1).prop('stackAccessors')).toEqual(['c']); }); test('it should apply None fitting function if not specified', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); - (args.layers[0] as DataLayerConfigResult).accessors = ['a']; + (args.layers[0] as DataLayerConfig).accessors = ['a']; - const component = shallow(); + const component = shallow(); - expect(component.find(LineSeries).prop('fit')).toEqual({ type: Fit.None }); + expect(component.find(DataLayers).dive().find(LineSeries).prop('fit')).toEqual({ + type: Fit.None, + }); }); test('it should apply the xTitle if is specified', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.xTitle = 'My custom x-axis title'; - const component = shallow(); + const component = shallow(); expect(component.find(Axis).at(0).prop('title')).toEqual('My custom x-axis title'); }); test('it should hide the X axis title if the corresponding switch is off', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.axisTitlesVisibilitySettings = { x: false, @@ -2427,7 +2434,7 @@ describe('XYChart component', () => { type: 'axisTitlesVisibilityConfig', }; - const component = shallow(); + const component = shallow(); const axisStyle = component.find(Axis).first().prop('style'); @@ -2439,7 +2446,7 @@ describe('XYChart component', () => { }); test('it should show the X axis gridlines if the setting is on', () => { - const { data, args } = sampleArgs(); + const { args } = sampleArgs(); args.gridlinesVisibilitySettings = { x: true, @@ -2448,7 +2455,7 @@ describe('XYChart component', () => { type: 'gridlinesConfig', }; - const component = shallow(); + const component = shallow(); expect(component.find(Axis).at(0).prop('gridLine')).toMatchObject({ visible: true, @@ -2456,45 +2463,37 @@ describe('XYChart component', () => { }); test('it should format the boolean values correctly', () => { - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - first: { - type: 'datatable', - columns: [ - { - id: 'a', - name: 'a', - meta: { type: 'number', params: { id: 'number', params: { pattern: '0,0.000' } } }, - }, - { - id: 'b', - name: 'b', - meta: { type: 'number', params: { id: 'number', params: { pattern: '000,0' } } }, - }, - { - id: 'c', - name: 'c', - meta: { - type: 'boolean', - params: { id: 'boolean' }, - }, - }, - ], - rows: [ - { a: 5, b: 2, c: 0 }, - { a: 19, b: 5, c: 1 }, - ], + const data: Datatable = { + type: 'datatable', + columns: [ + { + id: 'a', + name: 'a', + meta: { type: 'number', params: { id: 'number', params: { pattern: '0,0.000' } } }, }, - }, - dateRange: { - fromDate: new Date('2019-01-02T05:00:00.000Z'), - toDate: new Date('2019-01-03T05:00:00.000Z'), - }, + { + id: 'b', + name: 'b', + meta: { type: 'number', params: { id: 'number', params: { pattern: '000,0' } } }, + }, + { + id: 'c', + name: 'c', + meta: { + type: 'boolean', + params: { id: 'boolean' }, + }, + }, + ], + rows: [ + { a: 5, b: 2, c: 0 }, + { a: 19, b: 5, c: 1 }, + ], }; - const timeSampleLayer: DataLayerConfigResult = { + + const timeSampleLayer: DataLayerConfig = { + layerId: 'timeLayer', type: 'dataLayer', - layerId: 'first', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'c', @@ -2503,22 +2502,19 @@ describe('XYChart component', () => { yScaleType: 'linear', isHistogram: false, palette: mockPaletteOutput, + table: data, }; + const args = createArgsWithLayers([timeSampleLayer]); const getCustomFormatSpy = jest.fn(); getCustomFormatSpy.mockReturnValue({ convert: jest.fn((x) => Boolean(x)) }); const component = shallow( - + ); - expect(component.find(LineSeries).at(1).prop('data')).toEqual([ + expect(component.find(DataLayers).dive().find(LineSeries).at(1).prop('data')).toEqual([ { a: 5, b: 2, @@ -2533,69 +2529,80 @@ describe('XYChart component', () => { }); describe('annotations', () => { - const sampleStyledAnnotation: EventAnnotationOutput = { + const customLineStaticAnnotation: EventAnnotationOutput = { time: '2022-03-18T08:25:00.000Z', label: 'Event 1', icon: 'triangle', - type: 'manual_event_annotation', + type: 'manual_point_event_annotation' as const, color: 'red', lineStyle: 'dashed', lineWidth: 3, }; - const sampleAnnotationLayers: AnnotationLayerConfigResult[] = [ - { - type: 'annotationLayer', - layerType: LayerTypes.ANNOTATIONS, - layerId: 'annotation', - annotations: [ - { - time: '2022-03-18T08:25:17.140Z', - label: 'Annotation', - type: 'manual_event_annotation', - }, - ], - }, - ]; - function sampleArgsWithAnnotation(annotationLayers = sampleAnnotationLayers) { + + const defaultLineStaticAnnotation = { + time: '2022-03-18T08:25:17.140Z', + label: 'Annotation', + type: 'manual_point_event_annotation' as const, + }; + const defaultRangeStaticAnnotation = { + time: '2022-03-18T08:25:17.140Z', + endTime: '2022-03-31T08:25:17.140Z', + label: 'Event range', + type: 'manual_range_event_annotation' as const, + }; + const createLayerWithAnnotations = ( + annotations: EventAnnotationOutput[] = [defaultLineStaticAnnotation] + ): CommonXYAnnotationLayerConfig => ({ + type: 'annotationLayer', + layerType: LayerTypes.ANNOTATIONS, + layerId: 'annotation', + annotations, + }); + function sampleArgsWithAnnotations(annotationLayers = [createLayerWithAnnotations()]) { const { args } = sampleArgs(); return { - data: dateHistogramData, args: { ...args, layers: [dateHistogramLayer, ...annotationLayers], - } as XYArgs, + }, }; } - test('should render basic annotation', () => { - const { data, args } = sampleArgsWithAnnotation(); - const component = mount(); + + test('should render basic line annotation', () => { + const { args } = sampleArgsWithAnnotations(); + const component = mount(); expect(component.find('LineAnnotation')).toMatchSnapshot(); }); - test('should render simplified annotation when hide is true', () => { - const { data, args } = sampleArgsWithAnnotation(); - (args.layers[0] as AnnotationLayerConfigResult).hide = true; - const component = mount(); + test('should render basic range annotation', () => { + const { args } = sampleArgsWithAnnotations([ + createLayerWithAnnotations([defaultLineStaticAnnotation, defaultRangeStaticAnnotation]), + ]); + const component = mount(); + expect(component.find(RectAnnotation)).toMatchSnapshot(); + }); + test('should render simplified annotations when hide is true', () => { + const { args } = sampleArgsWithAnnotations([ + createLayerWithAnnotations([defaultLineStaticAnnotation, defaultRangeStaticAnnotation]), + ]); + (args.layers[1] as CommonXYAnnotationLayerConfig).hide = true; + const component = mount(); expect(component.find('LineAnnotation')).toMatchSnapshot(); + expect(component.find('RectAnnotation')).toMatchSnapshot(); }); - test('should render grouped annotations preserving the shared styles', () => { - const { data, args } = sampleArgsWithAnnotation([ - { - type: 'annotationLayer', - layerType: LayerTypes.ANNOTATIONS, - layerId: 'annotation', - annotations: [ - sampleStyledAnnotation, - { ...sampleStyledAnnotation, time: '2022-03-18T08:25:00.020Z', label: 'Event 2' }, - { - ...sampleStyledAnnotation, - time: '2022-03-18T08:25:00.001Z', - label: 'Event 3', - }, - ], - }, + test('should render grouped line annotations preserving the shared styles', () => { + const { args } = sampleArgsWithAnnotations([ + createLayerWithAnnotations([ + customLineStaticAnnotation, + { ...customLineStaticAnnotation, time: '2022-03-18T08:25:00.020Z', label: 'Event 2' }, + { + ...customLineStaticAnnotation, + time: '2022-03-18T08:25:00.001Z', + label: 'Event 3', + }, + ]), ]); - const component = mount(); + const component = mount(); const groupedAnnotation = component.find(LineAnnotation); expect(groupedAnnotation.length).toEqual(1); @@ -2613,32 +2620,23 @@ describe('XYChart component', () => { ' Event 1 2022-03-18T08:25:00.000Z Event 3 2022-03-18T08:25:00.001Z Event 2 2022-03-18T08:25:00.020Z' ); }); - test('should render grouped annotations with default styles', () => { - const { data, args } = sampleArgsWithAnnotation([ - { - type: 'annotationLayer', - layerType: LayerTypes.ANNOTATIONS, - layerId: 'annotation', - annotations: [sampleStyledAnnotation], - }, - { - type: 'annotationLayer', - layerType: LayerTypes.ANNOTATIONS, - layerId: 'annotation', - annotations: [ - { - ...sampleStyledAnnotation, - icon: 'square', - color: 'blue', - lineStyle: 'dotted', - lineWidth: 10, - time: '2022-03-18T08:25:00.001Z', - label: 'Event 2', - }, - ], - }, + + test('should render grouped line annotations with default styles', () => { + const { args } = sampleArgsWithAnnotations([ + createLayerWithAnnotations([customLineStaticAnnotation]), + createLayerWithAnnotations([ + { + ...customLineStaticAnnotation, + icon: 'triangle' as const, + color: 'blue', + lineStyle: 'dotted', + lineWidth: 10, + time: '2022-03-18T08:25:00.001Z', + label: 'Event 2', + }, + ]), ]); - const component = mount(); + const component = mount(); const groupedAnnotation = component.find(LineAnnotation); expect(groupedAnnotation.length).toEqual(1); @@ -2646,27 +2644,26 @@ describe('XYChart component', () => { expect(groupedAnnotation).toMatchSnapshot(); }); test('should not render hidden annotations', () => { - const { data, args } = sampleArgsWithAnnotation([ - { - type: 'annotationLayer', - layerType: LayerTypes.ANNOTATIONS, - layerId: 'annotation', - annotations: [ - sampleStyledAnnotation, - { ...sampleStyledAnnotation, time: '2022-03-18T08:30:00.020Z', label: 'Event 2' }, - { - ...sampleStyledAnnotation, - time: '2022-03-18T08:35:00.001Z', - label: 'Event 3', - isHidden: true, - }, - ], - }, + const { args } = sampleArgsWithAnnotations([ + createLayerWithAnnotations([ + customLineStaticAnnotation, + { ...customLineStaticAnnotation, time: '2022-03-18T08:30:00.020Z', label: 'Event 2' }, + { + ...customLineStaticAnnotation, + time: '2022-03-18T08:35:00.001Z', + label: 'Event 3', + isHidden: true, + }, + defaultRangeStaticAnnotation, + { ...defaultRangeStaticAnnotation, label: 'range', isHidden: true }, + ]), ]); - const component = mount(); - const annotations = component.find(LineAnnotation); + const component = mount(); + const lineAnnotations = component.find(LineAnnotation); + const rectAnnotations = component.find(Annotations).find(RectAnnotation); - expect(annotations.length).toEqual(2); + expect(lineAnnotations.length).toEqual(2); + expect(rectAnnotations.length).toEqual(1); }); }); }); diff --git a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx index 4f543ae0f09ae..db653861a337e 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx @@ -6,67 +6,65 @@ * Side Public License, v 1. */ -import React, { useRef } from 'react'; +import React, { useMemo, useRef } from 'react'; import { Chart, Settings, Axis, - LineSeries, - AreaSeries, - BarSeries, Position, GeometryValue, XYChartSeriesIdentifier, - StackMode, VerticalAlignment, HorizontalAlignment, LayoutDirection, ElementClickListener, BrushEndListener, XYBrushEvent, - CurveType, LegendPositionConfig, - LabelOverflowConstraint, DisplayValueStyle, RecursivePartial, AxisStyle, - ScaleType, - AreaSeriesProps, - BarSeriesProps, - LineSeriesProps, - ColorVariant, + Placement, } from '@elastic/charts'; import { IconType } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { PaletteRegistry, SeriesLayer } from '@kbn/coloring'; -import type { Datatable, DatatableRow, DatatableColumn } from '@kbn/expressions-plugin/public'; +import { PaletteRegistry } from '@kbn/coloring'; import { RenderMode } from '@kbn/expressions-plugin/common'; -import { FieldFormat } from '@kbn/field-formats-plugin/common'; import { EmptyPlaceholder } from '@kbn/charts-plugin/public'; import { EventAnnotationServiceType } from '@kbn/event-annotation-plugin/public'; import { ChartsPluginSetup, ChartsPluginStart, useActiveCursor } from '@kbn/charts-plugin/public'; import { MULTILAYER_TIME_AXIS_STYLE } from '@kbn/charts-plugin/common'; import type { FilterEvent, BrushEvent, FormatFactory } from '../types'; -import type { SeriesType, XYChartProps } from '../../common/types'; -import { isHorizontalChart, getSeriesColor, getAnnotationsLayers, getDataLayers } from '../helpers'; +import type { CommonXYDataLayerConfig, SeriesType, XYChartProps } from '../../common/types'; +import { + isHorizontalChart, + getAnnotationsLayers, + getDataLayers, + Series, + getFormattedTablesByLayers, + validateExtent, +} from '../helpers'; import { getFilteredLayers, getReferenceLayers, isDataLayer, - getFitOptions, getAxesConfiguration, GroupsConfiguration, - validateExtent, - getColorAssignments, getLinesCausedPaddings, } from '../helpers'; import { getXDomain, XyEndzones } from './x_domain'; import { getLegendAction } from './legend_action'; import { ReferenceLineAnnotations, computeChartMargins } from './reference_lines'; import { visualizationDefinitions } from '../definitions'; -import { XYLayerConfigResult } from '../../common/types'; -import { Annotations, getAnnotationsGroupedByInterval } from './annotations'; - +import { CommonXYLayerConfig } from '../../common/types'; +import { + Annotations, + getAnnotationsGroupedByInterval, + getRangeAnnotations, + OUTSIDE_RECT_ANNOTATION_WIDTH, + OUTSIDE_RECT_ANNOTATION_WIDTH_SUGGESTION, +} from './annotations'; +import { AxisExtentModes, SeriesTypes, ValueLabelModes } from '../../common/constants'; +import { DataLayers } from './data_layers'; import './xy_chart.scss'; declare global { @@ -78,8 +76,6 @@ declare global { } } -type SeriesSpec = LineSeriesProps & BarSeriesProps & AreaSeriesProps; - export type XYChartRenderProps = XYChartProps & { chartsThemeService: ChartsPluginSetup['theme']; chartsActiveCursorService: ChartsPluginStart['activeCursor']; @@ -93,11 +89,10 @@ export type XYChartRenderProps = XYChartProps & { onSelectRange: (data: BrushEvent['data']) => void; renderMode: RenderMode; syncColors: boolean; + syncTooltips: boolean; eventAnnotationService: EventAnnotationServiceType; }; -const isPrimitive = (value: unknown): boolean => value != null && typeof value !== 'object'; - function getValueLabelsStyling(isHorizontal: boolean): { displayValue: RecursivePartial; } { @@ -126,7 +121,6 @@ function getIconForSeriesType(seriesType: SeriesType): IconType { export const XYChartReportable = React.memo(XYChart); export function XYChart({ - data, args, formatFactory, timeZone, @@ -138,6 +132,7 @@ export function XYChart({ onSelectRange, interactive = true, syncColors, + syncTooltips, useLegacyTimeAxis, }: XYChartRenderProps) { const { @@ -157,50 +152,47 @@ export function XYChart({ const chartTheme = chartsThemeService.useChartsTheme(); const chartBaseTheme = chartsThemeService.useChartsBaseTheme(); const darkMode = chartsThemeService.useDarkMode(); - const filteredLayers = getFilteredLayers(layers, data); - const layersById = filteredLayers.reduce>( - (hashMap, layer) => { - hashMap[layer.layerId] = layer; - return hashMap; - }, + const filteredLayers = getFilteredLayers(layers); + const layersById = filteredLayers.reduce>( + (hashMap, layer) => ({ ...hashMap, [layer.layerId]: layer }), {} ); const handleCursorUpdate = useActiveCursor(chartsActiveCursorService, chartRef, { - datatables: Object.values(data.tables), + datatables: filteredLayers.map(({ table }) => table), }); + const dataLayers: CommonXYDataLayerConfig[] = filteredLayers.filter(isDataLayer); + const formattedDatatables = useMemo( + () => getFormattedTablesByLayers(dataLayers, formatFactory), + [dataLayers, formatFactory] + ); + if (filteredLayers.length === 0) { - const icon: IconType = getIconForSeriesType(getDataLayers(layers)?.[0]?.seriesType || 'bar'); + const icon: IconType = getIconForSeriesType( + getDataLayers(layers)?.[0]?.seriesType || SeriesTypes.BAR + ); return ; } // use formatting hint of first x axis column to format ticks - const xAxisColumn = data.tables[filteredLayers[0].layerId].columns.find( - ({ id }) => id === filteredLayers[0].xAccessor - ); + const xAxisColumn = dataLayers[0]?.table.columns.find(({ id }) => id === dataLayers[0].xAccessor); const xAxisFormatter = formatFactory(xAxisColumn && xAxisColumn.meta?.params); - const layersAlreadyFormatted: Record = {}; // This is a safe formatter for the xAccessor that abstracts the knowledge of already formatted layers const safeXAccessorLabelRenderer = (value: unknown): string => - xAxisColumn && layersAlreadyFormatted[xAxisColumn.id] + xAxisColumn && formattedDatatables[dataLayers[0]?.layerId]?.formattedColumns[xAxisColumn.id] ? String(value) : String(xAxisFormatter.convert(value)); const chartHasMoreThanOneSeries = filteredLayers.length > 1 || filteredLayers.some((layer) => layer.accessors.length > 1) || - filteredLayers.some((layer) => layer.splitAccessor); - const shouldRotate = isHorizontalChart(filteredLayers); - - const yAxesConfiguration = getAxesConfiguration( - filteredLayers, - shouldRotate, - data.tables, - formatFactory - ); + filteredLayers.some((layer) => isDataLayer(layer) && layer.splitAccessor); + const shouldRotate = isHorizontalChart(dataLayers); + + const yAxesConfiguration = getAxesConfiguration(dataLayers, shouldRotate, formatFactory); const xTitle = args.xTitle || (xAxisColumn && xAxisColumn.name); const axisTitlesVisibilitySettings = args.axisTitlesVisibilitySettings || { @@ -214,25 +206,20 @@ export function XYChart({ yRight: true, }; - const labelsOrientation = args.labelsOrientation || { - x: 0, - yLeft: 0, - yRight: 0, - }; + const labelsOrientation = args.labelsOrientation || { x: 0, yLeft: 0, yRight: 0 }; - const filteredBarLayers = filteredLayers.filter((layer) => layer.seriesType.includes('bar')); + const filteredBarLayers = dataLayers.filter((layer) => layer.seriesType.includes('bar')); const chartHasMoreThanOneBarSeries = filteredBarLayers.length > 1 || filteredBarLayers.some((layer) => layer.accessors.length > 1) || - filteredBarLayers.some((layer) => layer.splitAccessor); + filteredBarLayers.some((layer) => isDataLayer(layer) && layer.splitAccessor); - const isTimeViz = Boolean(filteredLayers.every((l) => l.xScaleType === 'time')); - const isHistogramViz = filteredLayers.every((l) => l.isHistogram); + const isTimeViz = Boolean(dataLayers.every((l) => l.xScaleType === 'time')); + const isHistogramViz = dataLayers.every((l) => l.isHistogram); const { baseDomain: rawXDomain, extendedDomain: xDomain } = getXDomain( - filteredLayers, - data, + dataLayers, minInterval, isTimeViz, isHistogramViz @@ -243,17 +230,16 @@ export function XYChart({ right: yAxesConfiguration.find(({ groupId }) => groupId === 'right'), }; - const getYAxesTitles = ( - axisSeries: Array<{ layer: string; accessor: string }>, - groupId: string - ) => { + const getYAxesTitles = (axisSeries: Series[], groupId: 'right' | 'left') => { const yTitle = groupId === 'right' ? args.yRightTitle : args.yTitle; return ( yTitle || axisSeries .map( (series) => - data.tables[series.layer].columns.find((column) => column.id === series.accessor)?.name + filteredLayers + .find(({ layerId }) => series.layer === layerId) + ?.table.columns.find((column) => column.id === series.accessor)?.name ) .filter((name) => Boolean(name))[0] ); @@ -261,22 +247,25 @@ export function XYChart({ const referenceLineLayers = getReferenceLayers(layers); const annotationsLayers = getAnnotationsLayers(layers); - const firstTable = data.tables[filteredLayers[0].layerId]; + const firstTable = dataLayers[0]?.table; - const xColumnId = firstTable.columns.find((col) => col.id === filteredLayers[0].xAccessor)?.id; + const xColumnId = firstTable.columns.find((col) => col.id === dataLayers[0]?.xAccessor)?.id; - const groupedAnnotations = getAnnotationsGroupedByInterval( + const groupedLineAnnotations = getAnnotationsGroupedByInterval( annotationsLayers, minInterval, xColumnId ? firstTable.rows[0]?.[xColumnId] : undefined, xAxisFormatter ); + const rangeAnnotations = getRangeAnnotations(annotationsLayers); + const visualConfigs = [ ...referenceLineLayers.flatMap(({ yConfig }) => yConfig), - ...groupedAnnotations, + ...groupedLineAnnotations, ].filter(Boolean); - const linesPaddings = getLinesCausedPaddings(visualConfigs, yAxesMap); + const shouldHideDetails = annotationsLayers.length > 0 ? annotationsLayers[0].hide : false; + const linesPaddings = !shouldHideDetails ? getLinesCausedPaddings(visualConfigs, yAxesMap) : {}; const getYAxesStyle = (groupId: 'left' | 'right') => { const tickVisible = @@ -327,10 +316,11 @@ export function XYChart({ return layer.seriesType.includes('bar') || layer.seriesType.includes('area'); }) ); - const fit = !hasBarOrArea && extent.mode === 'dataBounds'; + + const fit = !hasBarOrArea && extent.mode === AxisExtentModes.DATA_BOUNDS; + let min: number = NaN; let max: number = NaN; - if (extent.mode === 'custom') { const { inclusiveZeroError, boundaryError } = validateExtent(hasBarOrArea, extent); if (!inclusiveZeroError && !boundaryError) { @@ -357,38 +347,42 @@ export function XYChart({ const shouldShowValueLabels = // No stacked bar charts - filteredLayers.every((layer) => !layer.seriesType.includes('stacked')) && + dataLayers.every((layer) => !layer.seriesType.includes('stacked')) && // No histogram charts !isHistogramViz; const valueLabelsStyling = - shouldShowValueLabels && valueLabels !== 'hide' && getValueLabelsStyling(shouldRotate); - - const colorAssignments = getColorAssignments(getDataLayers(args.layers), data, formatFactory); + shouldShowValueLabels && + valueLabels !== ValueLabelModes.HIDE && + getValueLabelsStyling(shouldRotate); const clickHandler: ElementClickListener = ([[geometry, series]]) => { // for xyChart series is always XYChartSeriesIdentifier and geometry is always type of GeometryValue const xySeries = series as XYChartSeriesIdentifier; const xyGeometry = geometry as GeometryValue; - const layer = filteredLayers.find((l) => + const layerIndex = dataLayers.findIndex((l) => xySeries.seriesKeys.some((key: string | number) => l.accessors.includes(key.toString())) ); - if (!layer) { + + if (layerIndex === -1) { return; } - const table = data.tables[layer.layerId]; + const layer = dataLayers[layerIndex]; + const { table } = layer; const xColumn = table.columns.find((col) => col.id === layer.xAccessor); const currentXFormatter = - layer.xAccessor && layersAlreadyFormatted[layer.xAccessor] && xColumn + layer.xAccessor && + formattedDatatables[layer.layerId]?.formattedColumns[layer.xAccessor] && + xColumn ? formatFactory(xColumn.meta.params) : xAxisFormatter; const rowIndex = table.rows.findIndex((row) => { if (layer.xAccessor) { - if (layersAlreadyFormatted[layer.xAccessor]) { + if (formattedDatatables[layer.layerId]?.formattedColumns[layer.xAccessor]) { // stringify the value to compare with the chart value return currentXFormatter.convert(row[layer.xAccessor]) === xyGeometry.x; } @@ -413,7 +407,7 @@ export function XYChart({ points.push({ row: table.rows.findIndex((row) => { if (layer.splitAccessor) { - if (layersAlreadyFormatted[layer.splitAccessor]) { + if (formattedDatatables[layer.layerId]?.formattedColumns[layer.splitAccessor]) { return splitFormatter.convert(row[layer.splitAccessor]) === pointValue; } return row[layer.splitAccessor] === pointValue; @@ -424,12 +418,7 @@ export function XYChart({ }); } const context: FilterEvent['data'] = { - data: points.map((point) => ({ - row: point.row, - column: point.column, - value: point.value, - table, - })), + data: points.map(({ row, column, value }) => ({ row, column, value, table })), }; onClickValue(context); }; @@ -443,27 +432,23 @@ export function XYChart({ return; } - const table = data.tables[filteredLayers[0].layerId]; + const { table } = dataLayers[0]; - const xAxisColumnIndex = table.columns.findIndex((el) => el.id === filteredLayers[0].xAccessor); + const xAxisColumnIndex = table.columns.findIndex((el) => el.id === dataLayers[0].xAccessor); - const context: BrushEvent['data'] = { - range: [min, max], - table, - column: xAxisColumnIndex, - }; + const context: BrushEvent['data'] = { range: [min, max], table, column: xAxisColumnIndex }; onSelectRange(context); }; - const legendInsideParams = { + const legendInsideParams: LegendPositionConfig = { vAlign: legend.verticalAlignment ?? VerticalAlignment.Top, hAlign: legend?.horizontalAlignment ?? HorizontalAlignment.Right, direction: LayoutDirection.Vertical, floating: true, floatingColumns: legend?.floatingColumns ?? 1, - } as LegendPositionConfig; + }; - const isHistogramModeEnabled = filteredLayers.some( + const isHistogramModeEnabled = dataLayers.some( ({ isHistogram, seriesType }) => isHistogram && (seriesType.includes('stacked') || @@ -507,11 +492,13 @@ export function XYChart({ : undefined, }, }; - return ( safeXAccessorLabelRenderer(d)} style={xAxisStyle} timeAxisLayerCount={shouldUseNewTimeAxis ? 3 : 0} @@ -595,9 +576,9 @@ export function XYChart({ ? gridlinesVisibilitySettings?.yRight : gridlinesVisibilitySettings?.yLeft, }} - hide={filteredLayers[0].hide} + hide={dataLayers[0]?.hide} tickFormat={(d) => axis.formatter?.convert(d) || ''} - style={getYAxesStyle(axis.groupId as 'left' | 'right')} + style={getYAxesStyle(axis.groupId)} domain={getYAxisDomain(axis)} ticks={5} /> @@ -609,7 +590,7 @@ export function XYChart({ baseDomain={rawXDomain} extendedDomain={xDomain} darkMode={darkMode} - histogramMode={filteredLayers.every( + histogramMode={dataLayers.every( (layer) => layer.isHistogram && (layer.seriesType.includes('stacked') || !layer.splitAccessor) && @@ -620,282 +601,28 @@ export function XYChart({ /> )} - {filteredLayers.flatMap((layer, layerIndex) => - layer.accessors.map((accessor, accessorIndex) => { - const { - splitAccessor, - seriesType, - accessors, - xAccessor, - layerId, - columnToLabel, - yScaleType, - xScaleType, - isHistogram, - palette, - } = layer; - const columnToLabelMap: Record = columnToLabel - ? JSON.parse(columnToLabel) - : {}; - - const table = data.tables[layerId]; - - const formatterPerColumn = new Map(); - for (const column of table.columns) { - formatterPerColumn.set(column, formatFactory(column.meta.params)); - } - - // what if row values are not primitive? That is the case of, for instance, Ranges - // remaps them to their serialized version with the formatHint metadata - // In order to do it we need to make a copy of the table as the raw one is required for more features (filters, etc...) later on - const tableConverted: Datatable = { - ...table, - rows: table.rows.map((row: DatatableRow) => { - const newRow = { ...row }; - for (const column of table.columns) { - const record = newRow[column.id]; - if ( - record != null && - // pre-format values for ordinal x axes because there can only be a single x axis formatter on chart level - (!isPrimitive(record) || (column.id === xAccessor && xScaleType === 'ordinal')) - ) { - newRow[column.id] = formatterPerColumn.get(column)!.convert(record); - } - } - return newRow; - }), - }; - - // save the id of the layer with the custom table - table.columns.reduce>( - (alreadyFormatted: Record, { id }) => { - if (alreadyFormatted[id]) { - return alreadyFormatted; - } - alreadyFormatted[id] = table.rows.some( - (row, i) => row[id] !== tableConverted.rows[i][id] - ); - return alreadyFormatted; - }, - layersAlreadyFormatted - ); - - const isStacked = seriesType.includes('stacked'); - const isPercentage = seriesType.includes('percentage'); - const isBarChart = seriesType.includes('bar'); - const enableHistogramMode = - isHistogram && - (isStacked || !splitAccessor) && - (isStacked || !isBarChart || !chartHasMoreThanOneBarSeries); - - // For date histogram chart type, we're getting the rows that represent intervals without data. - // To not display them in the legend, they need to be filtered out. - const rows = tableConverted.rows.filter( - (row) => - !(xAccessor && typeof row[xAccessor] === 'undefined') && - !( - splitAccessor && - typeof row[splitAccessor] === 'undefined' && - typeof row[accessor] === 'undefined' - ) - ); - - if (!xAccessor) { - rows.forEach((row) => { - row.unifiedX = i18n.translate('expressionXY.xyChart.emptyXLabel', { - defaultMessage: '(empty)', - }); - }); - } - - const yAxis = yAxesConfiguration.find((axisConfiguration) => - axisConfiguration.series.find((currentSeries) => currentSeries.accessor === accessor) - ); - - const formatter = table?.columns.find((column) => column.id === accessor)?.meta?.params; - const splitHint = table.columns.find((col) => col.id === splitAccessor)?.meta?.params; - const splitFormatter = formatFactory(splitHint); - - const seriesProps: SeriesSpec = { - splitSeriesAccessors: splitAccessor ? [splitAccessor] : [], - stackAccessors: isStacked ? [xAccessor as string] : [], - id: `${splitAccessor}-${accessor}`, - xAccessor: xAccessor || 'unifiedX', - yAccessors: [accessor], - data: rows, - xScaleType: xAccessor ? xScaleType : 'ordinal', - yScaleType: - formatter?.id === 'bytes' && yScaleType === ScaleType.Linear - ? ScaleType.LinearBinary - : yScaleType, - color: ({ yAccessor, seriesKeys }) => { - const overwriteColor = getSeriesColor(layer, accessor); - if (overwriteColor !== null) { - return overwriteColor; - } - const colorAssignment = colorAssignments[palette.name]; - const seriesLayers: SeriesLayer[] = [ - { - name: splitAccessor ? String(seriesKeys[0]) : columnToLabelMap[seriesKeys[0]], - totalSeriesAtDepth: colorAssignment.totalSeriesCount, - rankAtDepth: colorAssignment.getRank( - layer, - String(seriesKeys[0]), - String(yAccessor) - ), - }, - ]; - return paletteService.get(palette.name).getCategoricalColor( - seriesLayers, - { - maxDepth: 1, - behindText: false, - totalSeries: colorAssignment.totalSeriesCount, - syncColors, - }, - palette.params - ); - }, - groupId: yAxis?.groupId, - enableHistogramMode, - stackMode: isPercentage ? StackMode.Percentage : undefined, - timeZone, - areaSeriesStyle: { - point: { - visible: !xAccessor, - radius: xAccessor && !emphasizeFitting ? 5 : 0, - }, - ...(args.fillOpacity && { area: { opacity: args.fillOpacity } }), - ...(emphasizeFitting && { - fit: { - area: { - opacity: args.fillOpacity || 0.5, - }, - line: { - visible: true, - stroke: ColorVariant.Series, - opacity: 1, - dash: [], - }, - }, - }), - }, - lineSeriesStyle: { - point: { - visible: !xAccessor, - radius: xAccessor && !emphasizeFitting ? 5 : 0, - }, - ...(emphasizeFitting && { - fit: { - line: { - visible: true, - stroke: ColorVariant.Series, - opacity: 1, - dash: [], - }, - }, - }), - }, - name(d) { - // For multiple y series, the name of the operation is used on each, either: - // * Key - Y name - // * Formatted value - Y name - if (accessors.length > 1) { - const result = d.seriesKeys - .map((key: string | number, i) => { - if ( - i === 0 && - splitHint && - splitAccessor && - !layersAlreadyFormatted[splitAccessor] - ) { - return splitFormatter.convert(key); - } - return splitAccessor && i === 0 ? key : columnToLabelMap[key] ?? ''; - }) - .join(' - '); - return result; - } - - // For formatted split series, format the key - // This handles splitting by dates, for example - if (splitHint) { - if (splitAccessor && layersAlreadyFormatted[splitAccessor]) { - return d.seriesKeys[0]; - } - return splitFormatter.convert(d.seriesKeys[0]); - } - // This handles both split and single-y cases: - // * If split series without formatting, show the value literally - // * If single Y, the seriesKey will be the accessor, so we show the human-readable name - return splitAccessor ? d.seriesKeys[0] : columnToLabelMap[d.seriesKeys[0]] ?? ''; - }, - }; - - const index = `${layerIndex}-${accessorIndex}`; - - const curveType = args.curveType ? CurveType[args.curveType] : undefined; - - switch (seriesType) { - case 'line': - return ( - - ); - case 'bar': - case 'bar_stacked': - case 'bar_percentage_stacked': - case 'bar_horizontal': - case 'bar_horizontal_stacked': - case 'bar_horizontal_percentage_stacked': - const valueLabelsSettings = { - displayValueSettings: { - // This format double fixes two issues in elastic-chart - // * when rotating the chart, the formatter is not correctly picked - // * in some scenarios value labels are not strings, and this breaks the elastic-chart lib - valueFormatter: (d: unknown) => yAxis?.formatter?.convert(d) || '', - showValueLabel: shouldShowValueLabels && valueLabels !== 'hide', - isValueContainedInElement: false, - isAlternatingValueLabel: false, - overflowConstraints: [ - LabelOverflowConstraint.ChartEdges, - LabelOverflowConstraint.BarGeometry, - ], - }, - }; - return ; - case 'area_stacked': - case 'area_percentage_stacked': - return ( - - ); - case 'area': - return ( - - ); - default: - return assertNever(seriesType); - } - }) + {dataLayers.length && ( + )} {referenceLineLayers.length ? ( ) : null} - {groupedAnnotations.length ? ( + {rangeAnnotations.length || groupedLineAnnotations.length ? ( 0} minInterval={minInterval} + hide={annotationsLayers?.[0].hide} + outsideDimension={ + rangeAnnotations.length && shouldHideDetails + ? OUTSIDE_RECT_ANNOTATION_WIDTH_SUGGESTION + : shouldUseNewTimeAxis + ? Number(MULTILAYER_TIME_AXIS_STYLE.tickLine?.padding || 0) + + Number(chartTheme.axes?.tickLabel?.fontSize || 0) + : Number(chartTheme.axes?.tickLine?.size) || OUTSIDE_RECT_ANNOTATION_WIDTH + } /> ) : null} ); } - -function assertNever(x: never): never { - throw new Error('Unexpected series type: ' + x); -} diff --git a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx index a35216821c077..c6ad977bbad3a 100644 --- a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx @@ -18,7 +18,6 @@ import { ExpressionRenderDefinition } from '@kbn/expressions-plugin'; import { FormatFactory } from '@kbn/field-formats-plugin/common'; import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; import type { XYChartProps } from '../../common'; -import { calculateMinInterval } from '../helpers/interval'; import type { BrushEvent, FilterEvent } from '../types'; export type GetStartDepsFn = () => Promise<{ @@ -56,7 +55,10 @@ export const getXyChartRenderer = ({ }; const deps = await getStartDeps(); - const { XYChartReportable } = await import('../components/xy_chart'); + const [{ XYChartReportable }, { calculateMinInterval }] = await Promise.all([ + import('../components/xy_chart'), + import('../helpers/interval'), + ]); ReactDOM.render( @@ -80,6 +82,7 @@ export const getXyChartRenderer = ({ onSelectRange={onSelectRange} renderMode={handlers.getRenderMode()} syncColors={handlers.isSyncColorsEnabled()} + syncTooltips={handlers.isSyncTooltipsEnabled()} /> {' '} diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/annotations.tsx b/src/plugins/chart_expressions/expression_xy/public/helpers/annotations.tsx index 9050bdee4a365..d6746cafc0296 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/annotations.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/annotations.tsx @@ -9,19 +9,32 @@ import React from 'react'; import { Position } from '@elastic/charts'; import { EuiFlexGroup, EuiIcon, EuiIconProps, EuiText } from '@elastic/eui'; import classnames from 'classnames'; -import type { IconPosition, YAxisMode, YConfig } from '../../common/types'; +import type { + IconPosition, + YAxisMode, + ExtendedYConfig, + CollectiveConfig, +} from '../../common/types'; import { getBaseIconPlacement } from '../components'; -import { hasIcon } from './icon'; -import { annotationsIconSet } from './annotations_icon_set'; +import { hasIcon, iconSet } from './icon'; export const LINES_MARKER_SIZE = 20; -// Note: it does not take into consideration whether the reference line is in view or not +type PartialExtendedYConfig = Pick< + ExtendedYConfig, + 'axisMode' | 'icon' | 'iconPosition' | 'textVisibility' +>; + +type PartialCollectiveConfig = Pick; + +const isExtendedYConfig = ( + config: PartialExtendedYConfig | PartialCollectiveConfig | undefined +): config is PartialExtendedYConfig => + (config as PartialExtendedYConfig)?.iconPosition ? true : false; +// Note: it does not take into consideration whether the reference line is in view or not export const getLinesCausedPaddings = ( - visualConfigs: Array< - Pick | undefined - >, + visualConfigs: Array, axesMap: Record<'left' | 'right', unknown> ) => { // collect all paddings for the 4 axis: if any text is detected double it. @@ -31,7 +44,9 @@ export const getLinesCausedPaddings = ( if (!config) { return; } - const { axisMode, icon, iconPosition, textVisibility } = config; + const { axisMode, icon, textVisibility } = config; + const iconPosition = isExtendedYConfig(config) ? config.iconPosition : undefined; + if (axisMode && (hasIcon(icon) || textVisibility)) { const placement = getBaseIconPlacement(iconPosition, axesMap, axisMode); paddings[placement] = Math.max( @@ -48,6 +63,7 @@ export const getLinesCausedPaddings = ( paddings[placement] = LINES_MARKER_SIZE; } }); + return paddings; }; @@ -138,7 +154,7 @@ export const AnnotationIcon = ({ if (isNumericalString(type)) { return ; } - const iconConfig = annotationsIconSet.find((i) => i.value === type); + const iconConfig = iconSet.find((i) => i.value === type); if (!iconConfig) { return null; } diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/annotations_icon_set.tsx b/src/plugins/chart_expressions/expression_xy/public/helpers/annotations_icon_set.tsx deleted file mode 100644 index 99b4648e4d556..0000000000000 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/annotations_icon_set.tsx +++ /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 { i18n } from '@kbn/i18n'; -import { TriangleIcon, CircleIcon } from '../icons'; - -export const annotationsIconSet = [ - { - value: 'asterisk', - label: i18n.translate('expressionXY.xyChart.iconSelect.asteriskIconLabel', { - defaultMessage: 'Asterisk', - }), - }, - { - value: 'alert', - label: i18n.translate('expressionXY.xyChart.iconSelect.alertIconLabel', { - defaultMessage: 'Alert', - }), - }, - { - value: 'bell', - label: i18n.translate('expressionXY.xyChart.iconSelect.bellIconLabel', { - defaultMessage: 'Bell', - }), - }, - { - value: 'bolt', - label: i18n.translate('expressionXY.xyChart.iconSelect.boltIconLabel', { - defaultMessage: 'Bolt', - }), - }, - { - value: 'bug', - label: i18n.translate('expressionXY.xyChart.iconSelect.bugIconLabel', { - defaultMessage: 'Bug', - }), - }, - { - value: 'circle', - label: i18n.translate('expressionXY.xyChart.iconSelect.circleIconLabel', { - defaultMessage: 'Circle', - }), - icon: CircleIcon, - canFill: true, - }, - - { - value: 'editorComment', - label: i18n.translate('expressionXY.xyChart.iconSelect.commentIconLabel', { - defaultMessage: 'Comment', - }), - }, - { - value: 'flag', - label: i18n.translate('expressionXY.xyChart.iconSelect.flagIconLabel', { - defaultMessage: 'Flag', - }), - }, - { - value: 'heart', - label: i18n.translate('expressionXY.xyChart.iconSelect.heartLabel', { - defaultMessage: 'Heart', - }), - }, - { - value: 'mapMarker', - label: i18n.translate('expressionXY.xyChart.iconSelect.mapMarkerLabel', { - defaultMessage: 'Map Marker', - }), - }, - { - value: 'pinFilled', - label: i18n.translate('expressionXY.xyChart.iconSelect.mapPinLabel', { - defaultMessage: 'Map Pin', - }), - }, - { - value: 'starEmpty', - label: i18n.translate('expressionXY.xyChart.iconSelect.starLabel', { defaultMessage: 'Star' }), - }, - { - value: 'tag', - label: i18n.translate('expressionXY.xyChart.iconSelect.tagIconLabel', { - defaultMessage: 'Tag', - }), - }, - { - value: 'triangle', - label: i18n.translate('expressionXY.xyChart.iconSelect.triangleIconLabel', { - defaultMessage: 'Triangle', - }), - icon: TriangleIcon, - shouldRotate: true, - canFill: true, - }, -]; diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/axes_configuration.test.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/axes_configuration.test.ts index c5f2f6d7151e5..f3abf76b2d05a 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/axes_configuration.test.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/axes_configuration.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { DataLayerConfigResult } from '../../common'; +import { DataLayerConfig } from '../../common'; import { LayerTypes } from '../../common/constants'; import { Datatable } from '@kbn/expressions-plugin/public'; import { getAxesConfiguration } from './axes_configuration'; @@ -220,9 +220,9 @@ describe('axes_configuration', () => { }, }; - const sampleLayer: DataLayerConfigResult = { - type: 'dataLayer', + const sampleLayer: DataLayerConfig = { layerId: 'first', + type: 'dataLayer', layerType: LayerTypes.DATA, seriesType: 'line', xAccessor: 'c', @@ -233,11 +233,12 @@ describe('axes_configuration', () => { yScaleType: 'linear', isHistogram: false, palette: { type: 'palette', name: 'default' }, + table: tables.first, }; it('should map auto series to left axis', () => { const formatFactory = jest.fn(); - const groups = getAxesConfiguration([sampleLayer], false, tables, formatFactory); + const groups = getAxesConfiguration([sampleLayer], false, formatFactory); expect(groups.length).toEqual(1); expect(groups[0].position).toEqual('left'); expect(groups[0].series[0].accessor).toEqual('yAccessorId'); @@ -247,7 +248,7 @@ describe('axes_configuration', () => { it('should map auto series to right axis if formatters do not match', () => { const formatFactory = jest.fn(); const twoSeriesLayer = { ...sampleLayer, accessors: ['yAccessorId', 'yAccessorId2'] }; - const groups = getAxesConfiguration([twoSeriesLayer], false, tables, formatFactory); + const groups = getAxesConfiguration([twoSeriesLayer], false, formatFactory); expect(groups.length).toEqual(2); expect(groups[0].position).toEqual('left'); expect(groups[1].position).toEqual('right'); @@ -261,7 +262,7 @@ describe('axes_configuration', () => { ...sampleLayer, accessors: ['yAccessorId', 'yAccessorId2', 'yAccessorId3'], }; - const groups = getAxesConfiguration([threeSeriesLayer], false, tables, formatFactory); + const groups = getAxesConfiguration([threeSeriesLayer], false, formatFactory); expect(groups.length).toEqual(2); expect(groups[0].position).toEqual('left'); expect(groups[1].position).toEqual('right'); @@ -280,7 +281,6 @@ describe('axes_configuration', () => { }, ], false, - tables, formatFactory ); expect(groups.length).toEqual(1); @@ -300,7 +300,6 @@ describe('axes_configuration', () => { }, ], false, - tables, formatFactory ); expect(groups.length).toEqual(2); @@ -324,7 +323,6 @@ describe('axes_configuration', () => { }, ], false, - tables, formatFactory ); expect(formatFactory).toHaveBeenCalledTimes(2); diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/axes_configuration.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/axes_configuration.ts index 38d2220904226..65f5441d67226 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/axes_configuration.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/axes_configuration.ts @@ -6,22 +6,25 @@ * Side Public License, v 1. */ -import { Datatable } from '@kbn/expressions-plugin/public'; import type { IFieldFormat, SerializedFieldFormat } from '@kbn/field-formats-plugin/common'; import { FormatFactory } from '../types'; -import { AxisExtentConfig, DataLayerConfigResult } from '../../common'; +import { AxisExtentConfig, CommonXYDataLayerConfig, ExtendedYConfig, YConfig } from '../../common'; +import { isDataLayer } from './visualization'; -interface FormattedMetric { +export interface Series { layer: string; accessor: string; +} + +interface FormattedMetric extends Series { fieldFormat: SerializedFieldFormat; } export type GroupsConfiguration = Array<{ - groupId: string; + groupId: 'left' | 'right'; position: 'left' | 'right' | 'bottom' | 'top'; formatter?: IFieldFormat; - series: Array<{ layer: string; accessor: string }>; + series: Series[]; }>; export function isFormatterCompatible( @@ -31,10 +34,7 @@ export function isFormatterCompatible( return formatter1.id === formatter2.id; } -export function groupAxesByType( - layers: DataLayerConfigResult[], - tables?: Record -) { +export function groupAxesByType(layers: CommonXYDataLayerConfig[]) { const series: { auto: FormattedMetric[]; left: FormattedMetric[]; @@ -47,15 +47,19 @@ export function groupAxesByType( bottom: [], }; - layers?.forEach((layer) => { - const table = tables?.[layer.layerId]; + layers.forEach((layer) => { + const { table } = layer; layer.accessors.forEach((accessor) => { + const yConfig: Array | undefined = layer.yConfig; const mode = - layer.yConfig?.find((yAxisConfig) => yAxisConfig.forAccessor === accessor)?.axisMode || - 'auto'; - let formatter: SerializedFieldFormat = table?.columns.find((column) => column.id === accessor) + yConfig?.find((yAxisConfig) => yAxisConfig.forAccessor === accessor)?.axisMode || 'auto'; + let formatter: SerializedFieldFormat = table.columns?.find((column) => column.id === accessor) ?.meta?.params || { id: 'number' }; - if (layer.seriesType.includes('percentage') && formatter.id !== 'percent') { + if ( + isDataLayer(layer) && + layer.seriesType.includes('percentage') && + formatter.id !== 'percent' + ) { formatter = { id: 'percent', params: { @@ -71,10 +75,12 @@ export function groupAxesByType( }); }); + const tablesExist = layers.filter(({ table }) => Boolean(table)).length > 0; + series.auto.forEach((currentSeries) => { if ( series.left.length === 0 || - (tables && + (tablesExist && series.left.every((leftSeries) => isFormatterCompatible(leftSeries.fieldFormat, currentSeries.fieldFormat) )) @@ -82,7 +88,7 @@ export function groupAxesByType( series.left.push(currentSeries); } else if ( series.right.length === 0 || - (tables && + (tablesExist && series.left.every((leftSeries) => isFormatterCompatible(leftSeries.fieldFormat, currentSeries.fieldFormat) )) @@ -98,12 +104,11 @@ export function groupAxesByType( } export function getAxesConfiguration( - layers: DataLayerConfigResult[], + layers: CommonXYDataLayerConfig[], shouldRotate: boolean, - tables?: Record, formatFactory?: FormatFactory ): GroupsConfiguration { - const series = groupAxesByType(layers, tables); + const series = groupAxesByType(layers); const axisGroups: GroupsConfiguration = []; diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/color_assignment.test.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/color_assignment.test.ts index bd13e3217c2af..8b1bdeeadb834 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/color_assignment.test.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/color_assignment.test.ts @@ -7,76 +7,76 @@ */ import { getColorAssignments } from './color_assignment'; -import type { DataLayerConfigResult, LensMultiTable } from '../../common'; +import type { DataLayerConfig } from '../../common'; import type { FormatFactory } from '../types'; import { LayerTypes } from '../../common/constants'; +import { Datatable } from '@kbn/expressions-plugin'; describe('color_assignment', () => { - const layers: DataLayerConfigResult[] = [ + const tables: Record = { + '1': { + type: 'datatable', + columns: [ + { id: 'split1', name: '', meta: { type: 'number' } }, + { id: 'y1', name: '', meta: { type: 'number' } }, + { id: 'y2', name: '', meta: { type: 'number' } }, + ], + rows: [ + { split1: 1 }, + { split1: 2 }, + { split1: 3 }, + { split1: 1 }, + { split1: 2 }, + { split1: 3 }, + ], + }, + '2': { + type: 'datatable', + columns: [ + { id: 'split2', name: '', meta: { type: 'number' } }, + { id: 'y1', name: '', meta: { type: 'number' } }, + { id: 'y2', name: '', meta: { type: 'number' } }, + ], + rows: [ + { split2: 1 }, + { split2: 2 }, + { split2: 3 }, + { split2: 1 }, + { split2: 2 }, + { split2: 3 }, + ], + }, + }; + + const layers: DataLayerConfig[] = [ { + layerId: 'first', type: 'dataLayer', yScaleType: 'linear', xScaleType: 'linear', isHistogram: true, seriesType: 'bar', palette: { type: 'palette', name: 'palette1' }, - layerId: '1', layerType: LayerTypes.DATA, splitAccessor: 'split1', accessors: ['y1', 'y2'], + table: tables['1'], }, { + layerId: 'second', type: 'dataLayer', yScaleType: 'linear', xScaleType: 'linear', isHistogram: true, seriesType: 'bar', palette: { type: 'palette', name: 'palette2' }, - layerId: '2', layerType: LayerTypes.DATA, splitAccessor: 'split2', accessors: ['y3', 'y4'], + table: tables['2'], }, ]; - const data: LensMultiTable = { - type: 'lens_multitable', - tables: { - '1': { - type: 'datatable', - columns: [ - { id: 'split1', name: '', meta: { type: 'number' } }, - { id: 'y1', name: '', meta: { type: 'number' } }, - { id: 'y2', name: '', meta: { type: 'number' } }, - ], - rows: [ - { split1: 1 }, - { split1: 2 }, - { split1: 3 }, - { split1: 1 }, - { split1: 2 }, - { split1: 3 }, - ], - }, - '2': { - type: 'datatable', - columns: [ - { id: 'split2', name: '', meta: { type: 'number' } }, - { id: 'y1', name: '', meta: { type: 'number' } }, - { id: 'y2', name: '', meta: { type: 'number' } }, - ], - rows: [ - { split2: 1 }, - { split2: 2 }, - { split2: 3 }, - { split2: 1 }, - { split2: 2 }, - { split2: 3 }, - ], - }, - }, - }; - const formatFactory = (() => ({ convert(x: unknown) { @@ -86,7 +86,7 @@ describe('color_assignment', () => { describe('totalSeriesCount', () => { it('should calculate total number of series per palette', () => { - const assignments = getColorAssignments(layers, data, formatFactory); + const assignments = getColorAssignments(layers, formatFactory); // two y accessors, with 3 splitted series expect(assignments.palette1.totalSeriesCount).toEqual(2 * 3); expect(assignments.palette2.totalSeriesCount).toEqual(2 * 3); @@ -95,7 +95,6 @@ describe('color_assignment', () => { it('should calculate total number of series spanning multible layers', () => { const assignments = getColorAssignments( [layers[0], { ...layers[1], palette: layers[0].palette }], - data, formatFactory ); // two y accessors, with 3 splitted series, two times @@ -106,7 +105,6 @@ describe('color_assignment', () => { it('should calculate total number of series for non split series', () => { const assignments = getColorAssignments( [layers[0], { ...layers[1], palette: layers[0].palette, splitAccessor: undefined }], - data, formatFactory ); // two y accessors, with 3 splitted series for the first layer, 2 non splitted y accessors for the second layer @@ -117,15 +115,16 @@ describe('color_assignment', () => { it('should format non-primitive values and count them correctly', () => { const complexObject = { aProp: 123 }; const formatMock = jest.fn((x) => 'formatted'); - const assignments = getColorAssignments( - layers, + const newLayers = [ { - ...data, - tables: { - ...data.tables, - '1': { ...data.tables['1'], rows: [{ split1: complexObject }, { split1: 'abc' }] }, - }, + ...layers[0], + table: { ...tables['1'], rows: [{ split1: complexObject }, { split1: 'abc' }] }, }, + layers[1], + ]; + + const assignments = getColorAssignments( + newLayers, (() => ({ convert: formatMock, @@ -137,26 +136,18 @@ describe('color_assignment', () => { }); it('should handle missing tables', () => { - const assignments = getColorAssignments(layers, { ...data, tables: {} }, formatFactory); + const assignments = getColorAssignments( + layers.map((l) => ({ ...l, table: {} as any })), + formatFactory + ); // if there is no data, just assume a single split expect(assignments.palette1.totalSeriesCount).toEqual(2); }); it('should handle missing columns', () => { - const assignments = getColorAssignments( - layers, - { - ...data, - tables: { - ...data.tables, - '1': { - ...data.tables['1'], - columns: [], - }, - }, - }, - formatFactory - ); + const newLayers = [{ ...layers[0], table: { ...tables['1'], columns: [] } }, layers[1]]; + const assignments = getColorAssignments(newLayers, formatFactory); + // if the split column is missing, just assume a single split expect(assignments.palette1.totalSeriesCount).toEqual(2); }); @@ -164,7 +155,7 @@ describe('color_assignment', () => { describe('getRank', () => { it('should return the correct rank for a series key', () => { - const assignments = getColorAssignments(layers, data, formatFactory); + const assignments = getColorAssignments(layers, formatFactory); // 3 series in front of 2/y2 - 1/y1, 1/y2 and 2/y1 expect(assignments.palette1.getRank(layers[0], '2', 'y2')).toEqual(3); // 1 series in front of 1/y4 - 1/y3 @@ -173,7 +164,7 @@ describe('color_assignment', () => { it('should return the correct rank for a series key spanning multiple layers', () => { const newLayers = [layers[0], { ...layers[1], palette: layers[0].palette }]; - const assignments = getColorAssignments(newLayers, data, formatFactory); + const assignments = getColorAssignments(newLayers, formatFactory); // 3 series in front of 2/y2 - 1/y1, 1/y2 and 2/y1 expect(assignments.palette1.getRank(newLayers[0], '2', 'y2')).toEqual(3); // 2 series in front for the current layer (1/y3, 1/y4), plus all 6 series from the first layer @@ -185,7 +176,7 @@ describe('color_assignment', () => { layers[0], { ...layers[1], palette: layers[0].palette, splitAccessor: undefined }, ]; - const assignments = getColorAssignments(newLayers, data, formatFactory); + const assignments = getColorAssignments(newLayers, formatFactory); // 3 series in front of 2/y2 - 1/y1, 1/y2 and 2/y1 expect(assignments.palette1.getRank(newLayers[0], '2', 'y2')).toEqual(3); // 1 series in front for the current layer (y3), plus all 6 series from the first layer @@ -193,15 +184,16 @@ describe('color_assignment', () => { }); it('should return the correct rank for a series with a non-primitive value', () => { - const assignments = getColorAssignments( - layers, + const newLayers = [ { - ...data, - tables: { - ...data.tables, - '1': { ...data.tables['1'], rows: [{ split1: 'abc' }, { split1: { aProp: 123 } }] }, - }, + ...layers[0], + table: { ...tables['1'], rows: [{ split1: 'abc' }, { split1: { aProp: 123 } }] }, }, + layers[1], + ]; + + const assignments = getColorAssignments( + newLayers, (() => ({ convert: () => 'formatted', @@ -212,26 +204,19 @@ describe('color_assignment', () => { }); it('should handle missing tables', () => { - const assignments = getColorAssignments(layers, { ...data, tables: {} }, formatFactory); + const assignments = getColorAssignments( + layers.map((l) => ({ ...l, table: {} as any })), + formatFactory + ); // if there is no data, assume it is the first splitted series. One series in front - 0/y1 expect(assignments.palette1.getRank(layers[0], '2', 'y2')).toEqual(1); }); it('should handle missing columns', () => { - const assignments = getColorAssignments( - layers, - { - ...data, - tables: { - ...data.tables, - '1': { - ...data.tables['1'], - columns: [], - }, - }, - }, - formatFactory - ); + const newLayers = [{ ...layers[0], table: { ...tables['1'], columns: [] } }, layers[1]]; + + const assignments = getColorAssignments(newLayers, formatFactory); + // if the split column is missing, assume it is the first splitted series. One series in front - 0/y1 expect(assignments.palette1.getRank(layers[0], '2', 'y2')).toEqual(1); }); diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/color_assignment.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/color_assignment.ts index ee2f5a0325287..e94d22471aba9 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/color_assignment.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/color_assignment.ts @@ -8,10 +8,9 @@ import { uniq, mapValues } from 'lodash'; import { euiLightVars } from '@kbn/ui-theme'; -import type { Datatable } from '@kbn/expressions-plugin'; import { FormatFactory } from '../types'; import { isDataLayer } from './visualization'; -import { DataLayerConfigResult, XYLayerConfigResult } from '../../common'; +import { CommonXYDataLayerConfig, CommonXYLayerConfig } from '../../common'; const isPrimitive = (value: unknown): boolean => value != null && typeof value !== 'object'; @@ -21,40 +20,41 @@ export type ColorAssignments = Record< string, { totalSeriesCount: number; - getRank(sortedLayer: DataLayerConfigResult, seriesKey: string, yAccessor: string): number; + getRank(sortedLayer: CommonXYDataLayerConfig, seriesKey: string, yAccessor: string): number; } >; export function getColorAssignments( - layers: XYLayerConfigResult[], - data: { tables: Record }, + layers: CommonXYLayerConfig[], formatFactory: FormatFactory ): ColorAssignments { - const layersPerPalette: Record = {}; + const layersPerPalette: Record = {}; - layers - .filter((layer): layer is DataLayerConfigResult => isDataLayer(layer)) - .forEach((layer) => { - const palette = layer.palette?.name || 'default'; - if (!layersPerPalette[palette]) { - layersPerPalette[palette] = []; - } - layersPerPalette[palette].push(layer); - }); + layers.forEach((layer) => { + if (!isDataLayer(layer)) { + return; + } + + const palette = layer.palette?.name || 'default'; + if (!layersPerPalette[palette]) { + layersPerPalette[palette] = []; + } + layersPerPalette[palette].push(layer); + }); return mapValues(layersPerPalette, (paletteLayers) => { - const seriesPerLayer = paletteLayers.map((layer, layerIndex) => { + const seriesPerLayer = paletteLayers.map((layer) => { if (!layer.splitAccessor) { return { numberOfSeries: layer.accessors.length, splits: [] }; } const splitAccessor = layer.splitAccessor; - const column = data.tables[layer.layerId]?.columns.find(({ id }) => id === splitAccessor); + const column = layer.table.columns?.find(({ id }) => id === splitAccessor); const columnFormatter = column && formatFactory(column.meta.params); const splits = - !column || !data.tables[layer.layerId] + !column || !layer.table ? [] : uniq( - data.tables[layer.layerId].rows.map((row) => { + layer.table.rows.map((row) => { let value = row[splitAccessor]; if (value && !isPrimitive(value)) { value = columnFormatter?.convert(value) ?? value; @@ -72,8 +72,10 @@ export function getColorAssignments( ); return { totalSeriesCount, - getRank(sortedLayer: DataLayerConfigResult, seriesKey: string, yAccessor: string) { - const layerIndex = paletteLayers.findIndex((l) => sortedLayer.layerId === l.layerId); + getRank(sortedLayer: CommonXYDataLayerConfig, seriesKey: string, yAccessor: string) { + const layerIndex = paletteLayers.findIndex( + (layer) => sortedLayer.layerId === layer.layerId + ); const currentSeriesPerLayer = seriesPerLayer[layerIndex]; const splitRank = currentSeriesPerLayer.splits.indexOf(seriesKey); return ( diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx b/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx new file mode 100644 index 0000000000000..07af8a3c408c2 --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx @@ -0,0 +1,332 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { + AreaSeriesProps, + BarSeriesProps, + ColorVariant, + LineSeriesProps, + ScaleType, + SeriesName, + StackMode, + XYChartSeriesIdentifier, +} from '@elastic/charts'; +import { i18n } from '@kbn/i18n'; +import { + FieldFormat, + FieldFormatParams, + IFieldFormat, + SerializedFieldFormat, +} from '@kbn/field-formats-plugin/common'; +import { Datatable } from '@kbn/expressions-plugin'; +import { PaletteRegistry, SeriesLayer } from '@kbn/coloring'; +import { CommonXYDataLayerConfig, XScaleType } from '../../common'; +import { FormatFactory } from '../types'; +import { getSeriesColor } from './state'; +import { ColorAssignments } from './color_assignment'; +import { GroupsConfiguration } from './axes_configuration'; + +type SeriesSpec = LineSeriesProps & BarSeriesProps & AreaSeriesProps; + +type GetSeriesPropsFn = (config: { + layer: CommonXYDataLayerConfig; + accessor: string; + chartHasMoreThanOneBarSeries?: boolean; + formatFactory: FormatFactory; + colorAssignments: ColorAssignments; + columnToLabelMap: Record; + paletteService: PaletteRegistry; + syncColors?: boolean; + yAxis?: GroupsConfiguration[number]; + timeZone?: string; + emphasizeFitting?: boolean; + fillOpacity?: number; + formattedDatatableInfo: DatatableWithFormatInfo; +}) => SeriesSpec; + +type GetSeriesNameFn = ( + data: XYChartSeriesIdentifier, + config: { + layer: CommonXYDataLayerConfig; + splitHint: SerializedFieldFormat | undefined; + splitFormatter: FieldFormat; + alreadyFormattedColumns: Record; + columnToLabelMap: Record; + } +) => SeriesName; + +type GetColorFn = ( + seriesIdentifier: XYChartSeriesIdentifier, + config: { + layer: CommonXYDataLayerConfig; + accessor: string; + colorAssignments: ColorAssignments; + columnToLabelMap: Record; + paletteService: PaletteRegistry; + syncColors?: boolean; + } +) => string | null; + +export interface DatatableWithFormatInfo { + table: Datatable; + formattedColumns: Record; +} + +export type DatatablesWithFormatInfo = Record; + +export type FormattedDatatables = Record; + +const isPrimitive = (value: unknown): boolean => value != null && typeof value !== 'object'; + +export const getFormattedRow = ( + row: Datatable['rows'][number], + columns: Datatable['columns'], + columnsFormatters: Record, + xAccessor: string | undefined, + xScaleType: XScaleType +): { row: Datatable['rows'][number]; formattedColumns: Record } => + columns.reduce( + (formattedInfo, { id }) => { + const record = formattedInfo.row[id]; + if ( + record != null && + // pre-format values for ordinal x axes because there can only be a single x axis formatter on chart level + (!isPrimitive(record) || (id === xAccessor && xScaleType === 'ordinal')) + ) { + return { + row: { ...formattedInfo.row, [id]: columnsFormatters[id]!.convert(record) }, + formattedColumns: { ...formattedInfo.formattedColumns, [id]: true }, + }; + } + return formattedInfo; + }, + { row, formattedColumns: {} } + ); + +export const getFormattedTable = ( + table: Datatable, + formatFactory: FormatFactory, + xAccessor: string | undefined, + xScaleType: XScaleType +): { table: Datatable; formattedColumns: Record } => { + const columnsFormatters = table.columns.reduce>( + (formatters, { id, meta }) => ({ ...formatters, [id]: formatFactory(meta.params) }), + {} + ); + + const formattedTableInfo = table.rows.reduce<{ + rows: Datatable['rows']; + formattedColumns: Record; + }>( + ({ rows: formattedRows, formattedColumns }, row) => { + const formattedRowInfo = getFormattedRow( + row, + table.columns, + columnsFormatters, + xAccessor, + xScaleType + ); + return { + rows: [...formattedRows, formattedRowInfo.row], + formattedColumns: { ...formattedColumns, ...formattedRowInfo.formattedColumns }, + }; + }, + { + rows: [], + formattedColumns: {}, + } + ); + + return { + table: { ...table, rows: formattedTableInfo.rows }, + formattedColumns: formattedTableInfo.formattedColumns, + }; +}; + +export const getFormattedTablesByLayers = ( + layers: CommonXYDataLayerConfig[], + formatFactory: FormatFactory +): DatatablesWithFormatInfo => + layers.reduce( + (formattedDatatables, { layerId, table, xAccessor, xScaleType }) => ({ + ...formattedDatatables, + [layerId]: getFormattedTable(table, formatFactory, xAccessor, xScaleType), + }), + {} + ); + +const getSeriesName: GetSeriesNameFn = ( + data, + { layer, splitHint, splitFormatter, alreadyFormattedColumns, columnToLabelMap } +) => { + // For multiple y series, the name of the operation is used on each, either: + // * Key - Y name + // * Formatted value - Y name + if (layer.splitAccessor && layer.accessors.length > 1) { + const formatted = alreadyFormattedColumns[layer.splitAccessor]; + const result = data.seriesKeys + .map((key: string | number, i) => { + if (i === 0 && splitHint && layer.splitAccessor && !formatted) { + return splitFormatter.convert(key); + } + return layer.splitAccessor && i === 0 ? key : columnToLabelMap[key] ?? null; + }) + .join(' - '); + return result; + } + + // For formatted split series, format the key + // This handles splitting by dates, for example + if (splitHint) { + if (layer.splitAccessor && alreadyFormattedColumns[layer.splitAccessor]) { + return data.seriesKeys[0]; + } + return splitFormatter.convert(data.seriesKeys[0]); + } + // This handles both split and single-y cases: + // * If split series without formatting, show the value literally + // * If single Y, the seriesKey will be the accessor, so we show the human-readable name + return layer.splitAccessor ? data.seriesKeys[0] : columnToLabelMap[data.seriesKeys[0]] ?? null; +}; + +const getPointConfig = (xAccessor?: string, emphasizeFitting?: boolean) => ({ + visible: !xAccessor, + radius: xAccessor && !emphasizeFitting ? 5 : 0, +}); + +const getLineConfig = () => ({ visible: true, stroke: ColorVariant.Series, opacity: 1, dash: [] }); + +const getColor: GetColorFn = ( + { yAccessor, seriesKeys }, + { layer, accessor, colorAssignments, columnToLabelMap, paletteService, syncColors } +) => { + const overwriteColor = getSeriesColor(layer, accessor); + if (overwriteColor !== null) { + return overwriteColor; + } + const colorAssignment = colorAssignments[layer.palette.name]; + const seriesLayers: SeriesLayer[] = [ + { + name: layer.splitAccessor ? String(seriesKeys[0]) : columnToLabelMap[seriesKeys[0]], + totalSeriesAtDepth: colorAssignment.totalSeriesCount, + rankAtDepth: colorAssignment.getRank(layer, String(seriesKeys[0]), String(yAccessor)), + }, + ]; + return paletteService.get(layer.palette.name).getCategoricalColor( + seriesLayers, + { + maxDepth: 1, + behindText: false, + totalSeries: colorAssignment.totalSeriesCount, + syncColors, + }, + layer.palette.params + ); +}; + +export const getSeriesProps: GetSeriesPropsFn = ({ + layer, + accessor, + chartHasMoreThanOneBarSeries, + colorAssignments, + formatFactory, + columnToLabelMap, + paletteService, + syncColors, + yAxis, + timeZone, + emphasizeFitting, + fillOpacity, + formattedDatatableInfo, +}): SeriesSpec => { + const { table } = layer; + const isStacked = layer.seriesType.includes('stacked'); + const isPercentage = layer.seriesType.includes('percentage'); + const isBarChart = layer.seriesType.includes('bar'); + const enableHistogramMode = + layer.isHistogram && + (isStacked || !layer.splitAccessor) && + (isStacked || !isBarChart || !chartHasMoreThanOneBarSeries); + + const formatter = table?.columns.find((column) => column.id === accessor)?.meta?.params; + const splitHint = table?.columns.find((col) => col.id === layer.splitAccessor)?.meta?.params; + const splitFormatter = formatFactory(splitHint); + + // what if row values are not primitive? That is the case of, for instance, Ranges + // remaps them to their serialized version with the formatHint metadata + // In order to do it we need to make a copy of the table as the raw one is required for more features (filters, etc...) later on + const { table: formattedTable, formattedColumns } = formattedDatatableInfo; + + // For date histogram chart type, we're getting the rows that represent intervals without data. + // To not display them in the legend, they need to be filtered out. + let rows = formattedTable.rows.filter( + (row) => + !(layer.xAccessor && typeof row[layer.xAccessor] === 'undefined') && + !( + layer.splitAccessor && + typeof row[layer.splitAccessor] === 'undefined' && + typeof row[accessor] === 'undefined' + ) + ); + + if (!layer.xAccessor) { + rows = rows.map((row) => ({ + ...row, + unifiedX: i18n.translate('expressionXY.xyChart.emptyXLabel', { + defaultMessage: '(empty)', + }), + })); + } + + return { + splitSeriesAccessors: layer.splitAccessor ? [layer.splitAccessor] : [], + stackAccessors: isStacked ? [layer.xAccessor as string] : [], + id: layer.splitAccessor ? `${layer.splitAccessor}-${accessor}` : `${accessor}`, + xAccessor: layer.xAccessor || 'unifiedX', + yAccessors: [accessor], + data: rows, + xScaleType: layer.xAccessor ? layer.xScaleType : 'ordinal', + yScaleType: + formatter?.id === 'bytes' && layer.yScaleType === ScaleType.Linear + ? ScaleType.LinearBinary + : layer.yScaleType, + color: (series) => + getColor(series, { + layer, + accessor, + colorAssignments, + columnToLabelMap, + paletteService, + syncColors, + }), + groupId: yAxis?.groupId, + enableHistogramMode, + stackMode: isPercentage ? StackMode.Percentage : undefined, + timeZone, + areaSeriesStyle: { + point: getPointConfig(layer.xAccessor, emphasizeFitting), + ...(fillOpacity && { area: { opacity: fillOpacity } }), + ...(emphasizeFitting && { + fit: { area: { opacity: fillOpacity || 0.5 }, line: getLineConfig() }, + }), + }, + lineSeriesStyle: { + point: getPointConfig(layer.xAccessor, emphasizeFitting), + ...(emphasizeFitting && { fit: { line: getLineConfig() } }), + }, + name(d) { + return getSeriesName(d, { + layer, + splitHint, + splitFormatter, + alreadyFormattedColumns: formattedColumns, + columnToLabelMap, + }); + }, + }; +}; diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/fitting_functions.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/fitting_functions.ts index 43d5ad9b4c19f..4c26caf59d8d3 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/fitting_functions.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/fitting_functions.ts @@ -8,6 +8,7 @@ import { Fit } from '@elastic/charts'; import { EndValue, FittingFunction } from '../../common'; +import { EndValues } from '../../common/constants'; export function getFitEnum(fittingFunction?: FittingFunction | EndValue) { if (fittingFunction) { @@ -17,10 +18,10 @@ export function getFitEnum(fittingFunction?: FittingFunction | EndValue) { } export function getEndValue(endValue?: EndValue) { - if (endValue === 'Nearest') { + if (endValue === EndValues.NEAREST) { return Fit[endValue]; } - if (endValue === 'Zero') { + if (endValue === EndValues.ZERO) { return 0; } return undefined; diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/icon.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/icon.ts index 57e285a07232f..8b4113b3ada11 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/icon.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/icon.ts @@ -6,6 +6,107 @@ * Side Public License, v 1. */ +import { i18n } from '@kbn/i18n'; +import { TriangleIcon, CircleIcon } from '../icons'; +import { AvailableReferenceLineIcons } from '../../common/constants'; + export function hasIcon(icon: string | undefined): icon is string { return icon != null && icon !== 'empty'; } + +export const iconSet = [ + { + value: AvailableReferenceLineIcons.EMPTY, + label: i18n.translate('expressionXY.xyChart.iconSelect.noIconLabel', { + defaultMessage: 'None', + }), + }, + { + value: AvailableReferenceLineIcons.ASTERISK, + label: i18n.translate('expressionXY.xyChart.iconSelect.asteriskIconLabel', { + defaultMessage: 'Asterisk', + }), + }, + { + value: AvailableReferenceLineIcons.ALERT, + label: i18n.translate('expressionXY.xyChart.iconSelect.alertIconLabel', { + defaultMessage: 'Alert', + }), + }, + { + value: AvailableReferenceLineIcons.BELL, + label: i18n.translate('expressionXY.xyChart.iconSelect.bellIconLabel', { + defaultMessage: 'Bell', + }), + }, + { + value: AvailableReferenceLineIcons.BOLT, + label: i18n.translate('expressionXY.xyChart.iconSelect.boltIconLabel', { + defaultMessage: 'Bolt', + }), + }, + { + value: AvailableReferenceLineIcons.BUG, + label: i18n.translate('expressionXY.xyChart.iconSelect.bugIconLabel', { + defaultMessage: 'Bug', + }), + }, + { + value: AvailableReferenceLineIcons.CIRCLE, + label: i18n.translate('expressionXY.xyChart.iconSelect.circleIconLabel', { + defaultMessage: 'Circle', + }), + icon: CircleIcon, + canFill: true, + }, + + { + value: AvailableReferenceLineIcons.EDITOR_COMMENT, + label: i18n.translate('expressionXY.xyChart.iconSelect.commentIconLabel', { + defaultMessage: 'Comment', + }), + }, + { + value: AvailableReferenceLineIcons.FLAG, + label: i18n.translate('expressionXY.xyChart.iconSelect.flagIconLabel', { + defaultMessage: 'Flag', + }), + }, + { + value: AvailableReferenceLineIcons.HEART, + label: i18n.translate('expressionXY.xyChart.iconSelect.heartLabel', { + defaultMessage: 'Heart', + }), + }, + { + value: AvailableReferenceLineIcons.MAP_MARKER, + label: i18n.translate('expressionXY.xyChart.iconSelect.mapMarkerLabel', { + defaultMessage: 'Map Marker', + }), + }, + { + value: AvailableReferenceLineIcons.PIN_FILLED, + label: i18n.translate('expressionXY.xyChart.iconSelect.mapPinLabel', { + defaultMessage: 'Map Pin', + }), + }, + { + value: AvailableReferenceLineIcons.STAR_EMPTY, + label: i18n.translate('expressionXY.xyChart.iconSelect.starLabel', { defaultMessage: 'Star' }), + }, + { + value: AvailableReferenceLineIcons.TAG, + label: i18n.translate('expressionXY.xyChart.iconSelect.tagIconLabel', { + defaultMessage: 'Tag', + }), + }, + { + value: AvailableReferenceLineIcons.TRIANGLE, + label: i18n.translate('expressionXY.xyChart.iconSelect.triangleIconLabel', { + defaultMessage: 'Triangle', + }), + icon: TriangleIcon, + shouldRotate: true, + canFill: true, + }, +]; diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/index.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/index.ts index 2bb3a5a927774..773ae4ee22d94 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/index.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/index.ts @@ -14,5 +14,5 @@ export * from './fitting_functions'; export * from './axes_configuration'; export * from './icon'; export * from './color_assignment'; -export * from './annotations_icon_set'; export * from './annotations'; +export * from './data_layers'; diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/interval.test.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/interval.test.ts index 0fe979b8c3fc1..6721c293dbe57 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/interval.test.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/interval.test.ts @@ -6,32 +6,36 @@ * Side Public License, v 1. */ -import { DataLayerConfigResult, XYChartProps } from '../../common'; +import { DataLayerConfig, XYChartProps } from '../../common'; import { sampleArgs } from '../../common/__mocks__'; import { calculateMinInterval } from './interval'; describe('calculateMinInterval', () => { let xyProps: XYChartProps; - + let layer: DataLayerConfig; beforeEach(() => { - xyProps = sampleArgs(); - (xyProps.args.layers[0] as DataLayerConfigResult).xScaleType = 'time'; + const { layers, ...restArgs } = sampleArgs().args; + + xyProps = { args: { ...restArgs, layers } }; + layer = xyProps.args.layers[0] as DataLayerConfig; + layer.xScaleType = 'time'; }); it('should use first valid layer and determine interval', async () => { - xyProps.data.tables.first.columns[2].meta.source = 'esaggs'; - xyProps.data.tables.first.columns[2].meta.sourceParams = { + layer.table.columns[2].meta.source = 'esaggs'; + layer.table.columns[2].meta.sourceParams = { type: 'date_histogram', params: { used_interval: '5m', }, }; + xyProps.args.layers[0] = layer; const result = await calculateMinInterval(xyProps); expect(result).toEqual(5 * 60 * 1000); }); it('should return interval of number histogram if available on first x axis columns', async () => { - (xyProps.args.layers[0] as DataLayerConfigResult).xScaleType = 'linear'; - xyProps.data.tables.first.columns[2].meta = { + layer.xScaleType = 'linear'; + layer.table.columns[2].meta = { source: 'esaggs', type: 'number', field: 'someField', @@ -43,19 +47,22 @@ describe('calculateMinInterval', () => { }, }, }; + xyProps.args.layers[0] = layer; const result = await calculateMinInterval(xyProps); expect(result).toEqual(5); }); it('should return undefined if data table is empty', async () => { - xyProps.data.tables.first.rows = []; - xyProps.data.tables.first.columns[2].meta.source = 'esaggs'; - xyProps.data.tables.first.columns[2].meta.sourceParams = { + layer.table.rows = []; + layer.table.columns[2].meta.source = 'esaggs'; + layer.table.columns[2].meta.sourceParams = { type: 'date_histogram', params: { used_interval: '5m', }, }; + + xyProps.args.layers[0] = layer; const result = await calculateMinInterval(xyProps); expect(result).toEqual(undefined); }); @@ -66,14 +73,16 @@ describe('calculateMinInterval', () => { }); it('should return undefined if date column is not found', async () => { - xyProps.data.tables.first.columns.splice(2, 1); + layer.table.columns.splice(2, 1); + xyProps.args.layers[0] = layer; const result = await calculateMinInterval(xyProps); expect(result).toEqual(undefined); }); it('should return undefined if x axis is not a date', async () => { - (xyProps.args.layers[0] as DataLayerConfigResult).xScaleType = 'ordinal'; - xyProps.data.tables.first.columns.splice(2, 1); + layer.xScaleType = 'ordinal'; + xyProps.args.layers[0] = layer; + xyProps.args.layers[0].table.columns.splice(2, 1); const result = await calculateMinInterval(xyProps); expect(result).toEqual(undefined); }); diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/interval.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/interval.ts index b81fcd33fccad..17e7a9c2aba32 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/interval.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/interval.ts @@ -11,11 +11,11 @@ import { XYChartProps } from '../../common'; import { getFilteredLayers } from './layers'; import { isDataLayer } from './visualization'; -export function calculateMinInterval({ args: { layers }, data }: XYChartProps) { - const filteredLayers = getFilteredLayers(layers, data); +export function calculateMinInterval({ args: { layers } }: XYChartProps) { + const filteredLayers = getFilteredLayers(layers); if (filteredLayers.length === 0) return; const isTimeViz = filteredLayers.every((l) => isDataLayer(l) && l.xScaleType === 'time'); - const xColumn = data.tables[filteredLayers[0].layerId].columns.find( + const xColumn = filteredLayers[0].table.columns.find( (column) => isDataLayer(filteredLayers[0]) && column.id === filteredLayers[0].xAccessor ); diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/layers.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/layers.ts index be1701e6b6e4b..4408ebd3feb84 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/layers.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/layers.ts @@ -6,24 +6,42 @@ * Side Public License, v 1. */ -import { LensMultiTable } from '../../common'; -import { DataLayerConfigResult, XYLayerConfigResult } from '../../common/types'; -import { getDataLayers } from './visualization'; +import { Datatable } from '@kbn/expressions-plugin/common'; +import { + CommonXYDataLayerConfig, + CommonXYLayerConfig, + CommonXYReferenceLineLayerConfig, +} from '../../common/types'; +import { isDataLayer, isReferenceLayer } from './visualization'; + +export function getFilteredLayers(layers: CommonXYLayerConfig[]) { + return layers.filter( + (layer): layer is CommonXYReferenceLineLayerConfig | CommonXYDataLayerConfig => { + let table: Datatable | undefined; + let accessors: string[] = []; + let xAccessor: undefined | string | number; + let splitAccessor: undefined | string | number; + + if (isDataLayer(layer)) { + xAccessor = layer.xAccessor; + splitAccessor = layer.splitAccessor; + } + + if (isDataLayer(layer) || isReferenceLayer(layer)) { + table = layer.table; + accessors = layer.accessors; + } -export function getFilteredLayers(layers: XYLayerConfigResult[], data: LensMultiTable) { - return getDataLayers(layers).filter( - (layer): layer is DataLayerConfigResult => { - const { layerId, xAccessor, accessors, splitAccessor } = layer; return !( !accessors.length || - !data.tables[layerId] || - data.tables[layerId].rows.length === 0 || + !table || + table.rows.length === 0 || (xAccessor && - data.tables[layerId].rows.every((row) => typeof row[xAccessor] === 'undefined')) || + table.rows.every((row) => xAccessor && typeof row[xAccessor] === 'undefined')) || // stacked percentage bars have no xAccessors but splitAccessor with undefined values in them when empty (!xAccessor && splitAccessor && - data.tables[layerId].rows.every((row) => typeof row[splitAccessor] === 'undefined')) + table.rows.every((row) => splitAccessor && typeof row[splitAccessor] === 'undefined')) ); } ); diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/state.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/state.ts index a5cd66f178b63..e2f95491dbce8 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/state.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/state.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { SeriesType, XYLayerConfigResult, YConfig } from '../../common'; +import type { CommonXYLayerConfig, SeriesType, ExtendedYConfig, YConfig } from '../../common'; import { getDataLayers, isAnnotationsLayer, isDataLayer } from './visualization'; export function isHorizontalSeries(seriesType: SeriesType) { @@ -21,16 +21,14 @@ export function isStackedChart(seriesType: SeriesType) { return seriesType.includes('stacked'); } -export function isHorizontalChart(layers: XYLayerConfigResult[]) { +export function isHorizontalChart(layers: CommonXYLayerConfig[]) { return getDataLayers(layers).every((l) => isHorizontalSeries(l.seriesType)); } -export const getSeriesColor = (layer: XYLayerConfigResult, accessor: string) => { +export const getSeriesColor = (layer: CommonXYLayerConfig, accessor: string) => { if ((isDataLayer(layer) && layer.splitAccessor) || isAnnotationsLayer(layer)) { return null; } - - return ( - layer?.yConfig?.find((yConfig: YConfig) => yConfig.forAccessor === accessor)?.color || null - ); + const yConfig: Array | undefined = layer?.yConfig; + return yConfig?.find((yConf) => yConf.forAccessor === accessor)?.color || null; }; diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/visualization.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/visualization.ts index af2e80948ffdf..db0b431d56fac 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/visualization.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/visualization.ts @@ -6,38 +6,40 @@ * Side Public License, v 1. */ +import { LayerTypes } from '../../common/constants'; import { - DataLayerConfigResult, - ReferenceLineLayerConfigResult, - XYLayerConfigResult, - AnnotationLayerConfigResult, + CommonXYLayerConfig, + CommonXYDataLayerConfig, + CommonXYReferenceLineLayerConfig, + CommonXYAnnotationLayerConfig, } from '../../common/types'; -import { LayerTypes } from '../../common/constants'; -export const isDataLayer = (layer: XYLayerConfigResult): layer is DataLayerConfigResult => +export const isDataLayer = (layer: CommonXYLayerConfig): layer is CommonXYDataLayerConfig => layer.layerType === LayerTypes.DATA || !layer.layerType; -export const getDataLayers = (layers: XYLayerConfigResult[]) => - (layers || []).filter((layer): layer is DataLayerConfigResult => isDataLayer(layer)); +export const getDataLayers = (layers: CommonXYLayerConfig[]) => + (layers || []).filter((layer): layer is CommonXYDataLayerConfig => isDataLayer(layer)); export const isReferenceLayer = ( - layer: XYLayerConfigResult -): layer is ReferenceLineLayerConfigResult => layer.layerType === LayerTypes.REFERENCELINE; + layer: CommonXYLayerConfig +): layer is CommonXYReferenceLineLayerConfig => layer.layerType === LayerTypes.REFERENCELINE; -export const getReferenceLayers = (layers: XYLayerConfigResult[]) => - (layers || []).filter((layer): layer is ReferenceLineLayerConfigResult => +export const getReferenceLayers = (layers: CommonXYLayerConfig[]) => + (layers || []).filter((layer): layer is CommonXYReferenceLineLayerConfig => isReferenceLayer(layer) ); const isAnnotationLayerCommon = ( - layer: XYLayerConfigResult -): layer is AnnotationLayerConfigResult => layer.layerType === LayerTypes.ANNOTATIONS; + layer: CommonXYLayerConfig +): layer is CommonXYAnnotationLayerConfig => layer.layerType === LayerTypes.ANNOTATIONS; export const isAnnotationsLayer = ( - layer: XYLayerConfigResult -): layer is AnnotationLayerConfigResult => isAnnotationLayerCommon(layer); + layer: CommonXYLayerConfig +): layer is CommonXYAnnotationLayerConfig => isAnnotationLayerCommon(layer); export const getAnnotationsLayers = ( - layers: XYLayerConfigResult[] -): AnnotationLayerConfigResult[] => - (layers || []).filter((layer): layer is AnnotationLayerConfigResult => isAnnotationsLayer(layer)); + layers: CommonXYLayerConfig[] +): CommonXYAnnotationLayerConfig[] => + (layers || []).filter((layer): layer is CommonXYAnnotationLayerConfig => + isAnnotationsLayer(layer) + ); diff --git a/src/plugins/chart_expressions/expression_xy/public/plugin.ts b/src/plugins/chart_expressions/expression_xy/public/plugin.ts index d08ffc0fd2ec6..5e68d2c621894 100755 --- a/src/plugins/chart_expressions/expression_xy/public/plugin.ts +++ b/src/plugins/chart_expressions/expression_xy/public/plugin.ts @@ -16,17 +16,22 @@ import { EventAnnotationPluginSetup } from '@kbn/event-annotation-plugin/public' import { ExpressionXyPluginSetup, ExpressionXyPluginStart, SetupDeps } from './types'; import { xyVisFunction, + layeredXyVisFunction, + dataLayerFunction, + extendedDataLayerFunction, yAxisConfigFunction, + extendedYAxisConfigFunction, legendConfigFunction, gridlinesConfigFunction, - dataLayerConfigFunction, axisExtentConfigFunction, tickLabelsConfigFunction, - annotationLayerConfigFunction, + referenceLineLayerFunction, + extendedReferenceLineLayerFunction, + annotationLayerFunction, labelsOrientationConfigFunction, - referenceLineLayerConfigFunction, axisTitlesVisibilityConfigFunction, -} from '../common'; + extendedAnnotationLayerFunction, +} from '../common/expression_functions'; import { GetStartDepsFn, getXyChartRenderer } from './expression_renderers'; export interface XYPluginStartDependencies { @@ -51,16 +56,21 @@ export class ExpressionXyPlugin { { expressions, charts }: SetupDeps ): ExpressionXyPluginSetup { expressions.registerFunction(yAxisConfigFunction); + expressions.registerFunction(extendedYAxisConfigFunction); expressions.registerFunction(legendConfigFunction); expressions.registerFunction(gridlinesConfigFunction); - expressions.registerFunction(dataLayerConfigFunction); + expressions.registerFunction(dataLayerFunction); + expressions.registerFunction(extendedDataLayerFunction); expressions.registerFunction(axisExtentConfigFunction); expressions.registerFunction(tickLabelsConfigFunction); - expressions.registerFunction(annotationLayerConfigFunction); + expressions.registerFunction(annotationLayerFunction); + expressions.registerFunction(extendedAnnotationLayerFunction); expressions.registerFunction(labelsOrientationConfigFunction); - expressions.registerFunction(referenceLineLayerConfigFunction); + expressions.registerFunction(referenceLineLayerFunction); + expressions.registerFunction(extendedReferenceLineLayerFunction); expressions.registerFunction(axisTitlesVisibilityConfigFunction); expressions.registerFunction(xyVisFunction); + expressions.registerFunction(layeredXyVisFunction); const getStartDeps: GetStartDepsFn = async () => { const [coreStart, deps] = await core.getStartServices(); diff --git a/src/plugins/chart_expressions/expression_xy/server/plugin.ts b/src/plugins/chart_expressions/expression_xy/server/plugin.ts index c16bd2eb28161..37252a7296580 100755 --- a/src/plugins/chart_expressions/expression_xy/server/plugin.ts +++ b/src/plugins/chart_expressions/expression_xy/server/plugin.ts @@ -12,16 +12,21 @@ import { ExpressionXyPluginSetup, ExpressionXyPluginStart } from './types'; import { xyVisFunction, yAxisConfigFunction, + extendedYAxisConfigFunction, legendConfigFunction, gridlinesConfigFunction, - dataLayerConfigFunction, + dataLayerFunction, axisExtentConfigFunction, tickLabelsConfigFunction, - annotationLayerConfigFunction, + annotationLayerFunction, labelsOrientationConfigFunction, - referenceLineLayerConfigFunction, + referenceLineLayerFunction, axisTitlesVisibilityConfigFunction, -} from '../common'; + extendedDataLayerFunction, + extendedReferenceLineLayerFunction, + layeredXyVisFunction, + extendedAnnotationLayerFunction, +} from '../common/expression_functions'; import { SetupDeps } from './types'; export class ExpressionXyPlugin @@ -29,16 +34,21 @@ export class ExpressionXyPlugin { public setup(core: CoreSetup, { expressions }: SetupDeps) { expressions.registerFunction(yAxisConfigFunction); + expressions.registerFunction(extendedYAxisConfigFunction); expressions.registerFunction(legendConfigFunction); expressions.registerFunction(gridlinesConfigFunction); - expressions.registerFunction(dataLayerConfigFunction); + expressions.registerFunction(dataLayerFunction); + expressions.registerFunction(extendedDataLayerFunction); expressions.registerFunction(axisExtentConfigFunction); expressions.registerFunction(tickLabelsConfigFunction); - expressions.registerFunction(annotationLayerConfigFunction); + expressions.registerFunction(annotationLayerFunction); + expressions.registerFunction(extendedAnnotationLayerFunction); expressions.registerFunction(labelsOrientationConfigFunction); - expressions.registerFunction(referenceLineLayerConfigFunction); + expressions.registerFunction(referenceLineLayerFunction); + expressions.registerFunction(extendedReferenceLineLayerFunction); expressions.registerFunction(axisTitlesVisibilityConfigFunction); expressions.registerFunction(xyVisFunction); + expressions.registerFunction(layeredXyVisFunction); } public start(core: CoreStart) {} diff --git a/src/plugins/console/public/application/models/sense_editor/__fixtures__/editor_input1.txt b/src/plugins/console/public/application/models/sense_editor/__fixtures__/editor_input1.txt index 398a0fdeab61f..517f22bd8ad6a 100644 --- a/src/plugins/console/public/application/models/sense_editor/__fixtures__/editor_input1.txt +++ b/src/plugins/console/public/application/models/sense_editor/__fixtures__/editor_input1.txt @@ -31,3 +31,7 @@ POST /_sql?format=txt "query": "SELECT prenom FROM claude_index WHERE prenom = 'claude' ", "fetch_size": 1 } + +GET ,,/_search?pretty + +GET kbn:/api/spaces/space \ No newline at end of file diff --git a/src/plugins/console/public/application/models/sense_editor/sense_editor.test.js b/src/plugins/console/public/application/models/sense_editor/sense_editor.test.js index ff9d245f61275..4751d3ca29863 100644 --- a/src/plugins/console/public/application/models/sense_editor/sense_editor.test.js +++ b/src/plugins/console/public/application/models/sense_editor/sense_editor.test.js @@ -10,6 +10,7 @@ import './sense_editor.test.mocks'; import $ from 'jquery'; import _ from 'lodash'; +import { URL } from 'url'; import { create } from './create'; import { XJson } from '@kbn/es-ui-shared-plugin/public'; @@ -19,6 +20,8 @@ const { collapseLiteralStrings } = XJson; describe('Editor', () => { let input; + let oldUrl; + let olldWindow; beforeEach(function () { // Set up our document body @@ -31,8 +34,19 @@ describe('Editor', () => { input = create(document.querySelector('#ConAppEditor')); $(input.getCoreEditor().getContainer()).show(); input.autocomplete._test.removeChangeListener(); + oldUrl = global.URL; + olldWindow = { ...global.window }; + global.URL = URL; + global.window = Object.create(window); + Object.defineProperty(window, 'location', { + value: { + origin: 'http://localhost:5620', + }, + }); }); afterEach(function () { + global.URL = oldUrl; + global.window = olldWindow; $(input.getCoreEditor().getContainer()).hide(); input.autocomplete._test.addChangeListener(); }); @@ -476,4 +490,20 @@ curl -XPOST "http://localhost:9200/_sql?format=txt" -H "kbn-xsrf: reporting" -H "fetch_size": 1 }'`.trim() ); + + multiReqCopyAsCurlTest( + 'with date math index', + editorInput1, + { start: { lineNumber: 35 }, end: { lineNumber: 35 } }, + ` + curl -XGET "http://localhost:9200/%3Cindex_1-%7Bnow%2Fd-2d%7D%3E%2C%3Cindex_1-%7Bnow%2Fd-1d%7D%3E%2C%3Cindex_1-%7Bnow%2Fd%7D%3E%2F_search?pretty" -H "kbn-xsrf: reporting"`.trim() + ); + + multiReqCopyAsCurlTest( + 'with Kibana API request', + editorInput1, + { start: { lineNumber: 37 }, end: { lineNumber: 37 } }, + ` +curl -XGET "http://localhost:5620/api/spaces/space" -H \"kbn-xsrf: reporting\"`.trim() + ); }); diff --git a/src/plugins/console/public/lib/es/es.ts b/src/plugins/console/public/lib/es/es.ts index 10d0ad95b0496..5e22c78547b96 100644 --- a/src/plugins/console/public/lib/es/es.ts +++ b/src/plugins/console/public/lib/es/es.ts @@ -7,7 +7,7 @@ */ import type { HttpResponse, HttpSetup } from '@kbn/core/public'; -import { trimStart } from 'lodash'; +import { trimStart, trimEnd } from 'lodash'; import { API_BASE_PATH, KIBANA_API_PREFIX } from '../../../common/constants'; const esVersion: string[] = []; @@ -79,11 +79,23 @@ function getKibanaRequestUrl(path: string) { export function constructUrl(baseUri: string, path: string) { const kibanaRequestUrl = getKibanaRequestUrl(path); + let url = `${trimEnd(baseUri, '/')}/${trimStart(path, '/')}`; if (kibanaRequestUrl) { - return kibanaRequestUrl; + url = kibanaRequestUrl; } - baseUri = baseUri.replace(/\/+$/, ''); - path = path.replace(/^\/+/, ''); - return baseUri + '/' + path; + + const { origin, pathname, search } = new URL(url); + return `${origin}${encodePathname(pathname)}${search ?? ''}`; } + +const encodePathname = (path: string) => { + const decodedPath = new URLSearchParams(`path=${path}`).get('path') ?? ''; + + // Skip if it is valid + if (path === decodedPath) { + return path; + } + + return `/${encodeURIComponent(trimStart(decodedPath, '/'))}`; +}; diff --git a/src/plugins/controls/public/control_types/range_slider/range_slider_popover.tsx b/src/plugins/controls/public/control_types/range_slider/range_slider_popover.tsx index a51b46d98ff85..1bb7501f7104f 100644 --- a/src/plugins/controls/public/control_types/range_slider/range_slider_popover.tsx +++ b/src/plugins/controls/public/control_types/range_slider/range_slider_popover.tsx @@ -45,6 +45,8 @@ export const RangeSliderPopover: FC = ({ fieldFormatter, }) => { const [isPopoverOpen, setIsPopoverOpen] = useState(false); + const [rangeSliderMin, setRangeSliderMin] = useState(-Infinity); + const [rangeSliderMax, setRangeSliderMax] = useState(Infinity); const rangeRef = useRef(null); let errorMessage = ''; let helpText = ''; @@ -79,17 +81,6 @@ export const RangeSliderPopover: FC = ({ errorMessage = RangeSliderStrings.errors.getUpperLessThanLowerErrorMessage(); } - const rangeSliderMin = Math.min( - roundedMin, - isNaN(lowerBoundValue) ? Infinity : lowerBoundValue, - isNaN(upperBoundValue) ? Infinity : upperBoundValue - ); - const rangeSliderMax = Math.max( - roundedMax, - isNaN(lowerBoundValue) ? -Infinity : lowerBoundValue, - isNaN(upperBoundValue) ? -Infinity : upperBoundValue - ); - const displayedValue = [ hasLowerBoundSelection ? String(lowerBoundValue) : hasAvailableRange ? String(roundedMin) : '', hasUpperBoundSelection ? String(upperBoundValue) : hasAvailableRange ? String(roundedMax) : '', @@ -106,7 +97,27 @@ export const RangeSliderPopover: FC = ({ const button = ( + + + ) : null} + + + + + + + + ) : ( + + )} + + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.test.tsx new file mode 100644 index 0000000000000..9ddf8608fc015 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.test.tsx @@ -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 React from 'react'; + +import { ThemeProvider } from 'styled-components'; + +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; + +import { coreMock } from '@kbn/core/public/mocks'; +import { registerTestBed } from '@kbn/test-jest-helpers'; + +import type { Agent } from '../../../../types'; + +import { FleetStatusProvider, ConfigContext, KibanaVersionContext } from '../../../../../../hooks'; + +import { getMockTheme } from '../../../../../../mocks'; + +import { AgentBulkActions } from './bulk_actions'; +import type { Props } from './bulk_actions'; + +const mockTheme = getMockTheme({ + eui: { + euiSize: '10px', + }, +}); + +const TestComponent = (props: Props) => ( + + + + + + + + + + + +); + +describe('AgentBulkActions', () => { + it('should show no Actions button when no agent is selected', async () => { + const selectedAgents: Agent[] = []; + const props: Props = { + totalAgents: 10, + totalInactiveAgents: 2, + selectionMode: 'manual', + currentQuery: '', + selectedAgents, + refreshAgents: () => undefined, + }; + const testBed = registerTestBed(TestComponent)(props); + const { exists } = testBed; + + expect(exists('agentBulkActionsButton')).toBe(false); + }); + + it('should show an Actions button when at least an agent is selected', async () => { + const selectedAgents: Agent[] = [ + { + id: 'Agent1', + status: 'online', + packages: ['system'], + type: 'PERMANENT', + active: true, + enrolled_at: `${Date.now()}`, + user_provided_metadata: {}, + local_metadata: {}, + }, + ]; + const props: Props = { + totalAgents: 10, + totalInactiveAgents: 2, + selectionMode: 'manual', + currentQuery: '', + selectedAgents, + refreshAgents: () => undefined, + }; + const testBed = registerTestBed(TestComponent)(props); + const { exists } = testBed; + + expect(exists('agentBulkActionsButton')).not.toBeNull(); + }); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.tsx index 6fd34f0239996..a2515b51814ee 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.tsx @@ -10,16 +10,14 @@ import styled from 'styled-components'; import { EuiFlexGroup, EuiFlexItem, - EuiText, EuiPopover, EuiContextMenu, - EuiButtonEmpty, + EuiButton, EuiIcon, EuiPortal, } from '@elastic/eui'; -import { FormattedMessage, FormattedNumber } from '@kbn/i18n-react'; +import { FormattedMessage } from '@kbn/i18n-react'; -import { SO_SEARCH_LIMIT } from '../../../../constants'; import type { Agent } from '../../../../types'; import { AgentReassignAgentPolicyModal, @@ -28,43 +26,26 @@ import { } from '../../components'; import { useKibanaVersion } from '../../../../hooks'; -const Divider = styled.div` - width: 0; - height: ${(props) => props.theme.eui.euiSizeL}; - border-left: ${(props) => props.theme.eui.euiBorderThin}; -`; +import type { SelectionMode } from './types'; const FlexItem = styled(EuiFlexItem)` height: ${(props) => props.theme.eui.euiSizeL}; `; - -const Button = styled(EuiButtonEmpty)` - .euiButtonEmpty__text { - font-size: ${(props) => props.theme.eui.euiFontSizeXS}; - } -`; - -export type SelectionMode = 'manual' | 'query'; - -export const AgentBulkActions: React.FunctionComponent<{ +export interface Props { totalAgents: number; totalInactiveAgents: number; - selectableAgents: number; selectionMode: SelectionMode; - setSelectionMode: (mode: SelectionMode) => void; currentQuery: string; selectedAgents: Agent[]; - setSelectedAgents: (agents: Agent[]) => void; refreshAgents: () => void; -}> = ({ +} + +export const AgentBulkActions: React.FunctionComponent = ({ totalAgents, totalInactiveAgents, - selectableAgents, selectionMode, - setSelectionMode, currentQuery, selectedAgents, - setSelectedAgents, refreshAgents, }) => { const kibanaVersion = useKibanaVersion(); @@ -92,6 +73,7 @@ export const AgentBulkActions: React.FunctionComponent<{ name: ( ), @@ -106,6 +88,7 @@ export const AgentBulkActions: React.FunctionComponent<{ name: ( ), @@ -120,6 +103,7 @@ export const AgentBulkActions: React.FunctionComponent<{ name: ( ), @@ -130,29 +114,10 @@ export const AgentBulkActions: React.FunctionComponent<{ setIsUpgradeModalOpen(true); }, }, - { - name: ( - - ), - icon: , - onClick: () => { - closeMenu(); - setSelectionMode('manual'); - setSelectedAgents([]); - }, - }, ], }, ]; - const showSelectEverything = - selectionMode === 'manual' && - selectedAgents.length === selectableAgents && - selectableAgents < totalAgents; - const totalActiveAgents = totalAgents - totalInactiveAgents; const agentCount = selectionMode === 'manual' ? selectedAgents.length : totalActiveAgents; const agents = selectionMode === 'manual' ? selectedAgents : currentQuery; @@ -196,51 +161,25 @@ export const AgentBulkActions: React.FunctionComponent<{ )} - - - {totalAgents > SO_SEARCH_LIMIT ? ( - , - total: , - }} - /> - ) : ( - - )} - - {(selectionMode === 'manual' && selectedAgents.length) || (selectionMode === 'query' && totalAgents > 0) ? ( <> - - - - + } isOpen={isMenuOpen} closePopover={closeMenu} @@ -250,22 +189,6 @@ export const AgentBulkActions: React.FunctionComponent<{ - {showSelectEverything ? ( - - - - ) : null} ) : ( diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/empty_prompt.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/empty_prompt.tsx new file mode 100644 index 0000000000000..256ab2a0bacd1 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/empty_prompt.tsx @@ -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 React from 'react'; +import { EuiButton, EuiEmptyPrompt } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; + +export const EmptyPrompt: React.FunctionComponent<{ + hasFleetAllPrivileges: boolean; + setEnrollmentFlyoutState: ( + value: React.SetStateAction<{ + isOpen: boolean; + selectedPolicyId?: string | undefined; + }> + ) => void; +}> = ({ hasFleetAllPrivileges, setEnrollmentFlyoutState }) => { + return ( + + + + } + actions={ + hasFleetAllPrivileges ? ( + setEnrollmentFlyoutState({ isOpen: true })} + > + + + ) : null + } + /> + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx index 8965ae9bbc44f..a511c2dc9f3da 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx @@ -19,10 +19,13 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import type { AgentPolicy } from '../../../../types'; +import type { Agent, AgentPolicy } from '../../../../types'; import { AgentEnrollmentFlyout, SearchBar } from '../../../../components'; import { AGENTS_INDEX } from '../../../../constants'; +import { AgentBulkActions } from './bulk_actions'; +import type { SelectionMode } from './types'; + const statusFilters = [ { status: 'healthy', @@ -67,6 +70,12 @@ export const SearchAndFilterBar: React.FunctionComponent<{ onSelectedStatusChange: (selectedStatus: string[]) => void; showUpgradeable: boolean; onShowUpgradeableChange: (showUpgradeable: boolean) => void; + totalAgents: number; + totalInactiveAgents: number; + selectionMode: SelectionMode; + currentQuery: string; + selectedAgents: Agent[]; + refreshAgents: () => void; }> = ({ agentPolicies, draftKuery, @@ -78,6 +87,12 @@ export const SearchAndFilterBar: React.FunctionComponent<{ onSelectedStatusChange, showUpgradeable, onShowUpgradeableChange, + totalAgents, + totalInactiveAgents, + selectionMode, + currentQuery, + selectedAgents, + refreshAgents, }) => { const [isEnrollmentFlyoutOpen, setIsEnrollmentFlyoutOpen] = useState(false); @@ -230,6 +245,16 @@ export const SearchAndFilterBar: React.FunctionComponent<{ + + + diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_header.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_header.tsx index ff809d360e744..4e2f058596cf0 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_header.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_header.tsx @@ -11,51 +11,41 @@ import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import type { Agent, SimplifiedAgentStatus } from '../../../../types'; import { AgentStatusBar } from './status_bar'; -import { AgentBulkActions } from './bulk_actions'; +import { AgentsSelectionStatus } from './agents_selection_status'; import {} from '@elastic/eui'; import { AgentStatusBadges } from './status_badges'; - -export type SelectionMode = 'manual' | 'query'; +import type { SelectionMode } from './types'; export const AgentTableHeader: React.FunctionComponent<{ agentStatus?: { [k in SimplifiedAgentStatus]: number }; showInactive: boolean; totalAgents: number; - totalInactiveAgents: number; selectableAgents: number; selectionMode: SelectionMode; setSelectionMode: (mode: SelectionMode) => void; - currentQuery: string; selectedAgents: Agent[]; setSelectedAgents: (agents: Agent[]) => void; - refreshAgents: () => void; }> = ({ agentStatus, totalAgents, - totalInactiveAgents, selectableAgents, selectionMode, setSelectionMode, - currentQuery, selectedAgents, setSelectedAgents, - refreshAgents, showInactive, }) => { return ( <> - diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.tsx new file mode 100644 index 0000000000000..be620f0044cd1 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.tsx @@ -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 React, { useState } from 'react'; +import { EuiContextMenuItem } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import type { Agent, AgentPolicy } from '../../../../types'; +import { useAuthz, useLink, useKibanaVersion } from '../../../../hooks'; +import { ContextMenuActions } from '../../../../components'; +import { isAgentUpgradeable } from '../../../../services'; + +export const TableRowActions: React.FunctionComponent<{ + agent: Agent; + agentPolicy?: AgentPolicy; + onReassignClick: () => void; + onUnenrollClick: () => void; + onUpgradeClick: () => void; +}> = ({ agent, agentPolicy, onReassignClick, onUnenrollClick, onUpgradeClick }) => { + const { getHref } = useLink(); + const hasFleetAllPrivileges = useAuthz().fleet.all; + + const isUnenrolling = agent.status === 'unenrolling'; + const kibanaVersion = useKibanaVersion(); + const [isMenuOpen, setIsMenuOpen] = useState(false); + const menuItems = [ + + + , + ]; + + if (agentPolicy?.is_managed === false) { + menuItems.push( + { + onReassignClick(); + }} + disabled={!agent.active} + key="reassignPolicy" + > + + , + { + onUnenrollClick(); + }} + > + {isUnenrolling ? ( + + ) : ( + + )} + , + { + onUpgradeClick(); + }} + > + + + ); + } + return ( + setIsMenuOpen(isOpen)} + items={menuItems} + /> + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/types.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/types.tsx new file mode 100644 index 0000000000000..7e22c67b09acb --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/types.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 type SelectionMode = 'manual' | 'query'; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.tsx index d5757419e8ea7..5776a163fd6a3 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.tsx @@ -8,14 +8,11 @@ import React, { useState, useMemo, useCallback, useRef, useEffect, useContext } from 'react'; import { EuiBasicTable, - EuiButton, - EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, EuiLink, EuiSpacer, EuiText, - EuiContextMenuItem, EuiIcon, EuiPortal, } from '@elastic/eui'; @@ -35,11 +32,7 @@ import { useKibanaVersion, useStartServices, } from '../../../hooks'; -import { - AgentEnrollmentFlyout, - AgentPolicySummaryLine, - ContextMenuActions, -} from '../../../components'; +import { AgentEnrollmentFlyout, AgentPolicySummaryLine } from '../../../components'; import { AgentStatusKueryHelper, isAgentUpgradeable } from '../../../services'; import { AGENTS_PREFIX, FLEET_SERVER_PACKAGE } from '../../../constants'; import { @@ -55,92 +48,13 @@ import { useFleetServerUnhealthy } from '../hooks/use_fleet_server_unhealthy'; import { agentFlyoutContext } from '..'; import { AgentTableHeader } from './components/table_header'; -import type { SelectionMode } from './components/bulk_actions'; +import type { SelectionMode } from './components/types'; import { SearchAndFilterBar } from './components/search_and_filter_bar'; +import { TableRowActions } from './components/table_row_actions'; +import { EmptyPrompt } from './components/empty_prompt'; const REFRESH_INTERVAL_MS = 30000; -const RowActions = React.memo<{ - agent: Agent; - agentPolicy?: AgentPolicy; - refresh: () => void; - onReassignClick: () => void; - onUnenrollClick: () => void; - onUpgradeClick: () => void; -}>(({ agent, agentPolicy, refresh, onReassignClick, onUnenrollClick, onUpgradeClick }) => { - const { getHref } = useLink(); - const hasFleetAllPrivileges = useAuthz().fleet.all; - - const isUnenrolling = agent.status === 'unenrolling'; - const kibanaVersion = useKibanaVersion(); - const [isMenuOpen, setIsMenuOpen] = useState(false); - const menuItems = [ - - - , - ]; - - if (agentPolicy?.is_managed === false) { - menuItems.push( - { - onReassignClick(); - }} - disabled={!agent.active} - key="reassignPolicy" - > - - , - { - onUnenrollClick(); - }} - > - {isUnenrolling ? ( - - ) : ( - - )} - , - { - onUpgradeClick(); - }} - > - - - ); - } - return ( - setIsMenuOpen(isOpen)} - items={menuItems} - /> - ); -}); - function safeMetadata(val: any) { if (typeof val !== 'string') { return '-'; @@ -479,10 +393,9 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { ? agentPoliciesIndexedById[agent.policy_id] : undefined; return ( - fetchData()} onReassignClick={() => setAgentToReassign(agent)} onUnenrollClick={() => setAgentToUnenroll(agent)} onUpgradeClick={() => setAgentToUpgrade(agent)} @@ -495,30 +408,6 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { }, ]; - const emptyPrompt = ( - - - - } - actions={ - hasFleetAllPrivileges ? ( - setEnrollmentFlyoutState({ isOpen: true })} - > - - - ) : null - } - /> - ); - return ( <> {enrollmentFlyout.isOpen ? ( @@ -592,6 +481,12 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { onSelectedStatusChange={setSelectedStatus} showUpgradeable={showUpgradeable} onShowUpgradeableChange={setShowUpgradeable} + totalAgents={totalAgents} + totalInactiveAgents={totalInactiveAgents} + selectionMode={selectionMode} + currentQuery={kuery} + selectedAgents={selectedAgents} + refreshAgents={() => fetchData()} /> @@ -599,12 +494,10 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { { if (tableRef?.current) { @@ -612,7 +505,6 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { setSelectionMode('manual'); } }} - refreshAgents={() => fetchData()} /> @@ -645,7 +537,10 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { }} /> ) : ( - emptyPrompt + ) } items={ diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_reassign_policy_modal/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_reassign_policy_modal/index.tsx index 566bc7f4363ab..5e74b86728247 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_reassign_policy_modal/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_reassign_policy_modal/index.tsx @@ -99,6 +99,7 @@ export const AgentReassignAgentPolicyModal: React.FunctionComponent = ({ return ( = ({ return ( = ({ return ( diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/hooks.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/hooks.tsx index 159de12ff578c..886ce736b3625 100644 --- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/hooks.tsx +++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/hooks.tsx @@ -9,11 +9,13 @@ import { i18n } from '@kbn/i18n'; import type { PackagePolicy, AgentPolicy } from '../../types'; import { sendGetOneAgentPolicy, useStartServices } from '../../hooks'; - -import { FLEET_KUBERNETES_PACKAGE } from '../../../common'; +import { FLEET_KUBERNETES_PACKAGE, FLEET_CLOUD_SECURITY_POSTURE_PACKAGE } from '../../../common'; import type { K8sMode } from './types'; +// Packages that requires custom elastic-agent manifest +const K8S_PACKAGES = new Set([FLEET_KUBERNETES_PACKAGE, FLEET_CLOUD_SECURITY_POSTURE_PACKAGE]); + export function useAgentPolicyWithPackagePolicies(policyId?: string) { const [agentPolicyWithPackagePolicies, setAgentPolicy] = useState(null); const core = useStartServices(); @@ -64,4 +66,4 @@ export function useIsK8sPolicy(agentPolicy?: AgentPolicy) { return { isK8s }; } -const isK8sPackage = (pkg: PackagePolicy) => pkg.package?.name === FLEET_KUBERNETES_PACKAGE; +const isK8sPackage = (pkg: PackagePolicy) => K8S_PACKAGES.has(pkg.package?.name as string); diff --git a/x-pack/plugins/fleet/public/mocks.ts b/x-pack/plugins/fleet/public/mocks.ts index 92b002a437649..8088f430ee81e 100644 --- a/x-pack/plugins/fleet/public/mocks.ts +++ b/x-pack/plugins/fleet/public/mocks.ts @@ -5,8 +5,14 @@ * 2.0. */ +import type { EuiTheme } from '@kbn/kibana-react-plugin/common'; +import type { RecursivePartial } from '@elastic/eui/src/components/common'; + import { createStartMock } from './mock'; +export const getMockTheme = (partialTheme: RecursivePartial): EuiTheme => + partialTheme as EuiTheme; + export const fleetMock = { createStartMock, }; diff --git a/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts b/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts index 2d01344a930aa..ad3b356828d72 100644 --- a/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts @@ -6,13 +6,16 @@ */ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { keyBy, keys, merge } from 'lodash'; -import type { RequestHandler } from '@kbn/core/server'; +import type { RequestHandler, ElasticsearchClient } from '@kbn/core/server'; + +import type { TypeOf } from '@kbn/config-schema'; import type { DataStream } from '../../types'; import { KibanaSavedObjectType } from '../../../common'; import type { GetDataStreamsResponse } from '../../../common'; import { getPackageSavedObjects } from '../../services/epm/packages/get'; import { defaultIngestErrorHandler } from '../../errors'; +import type { GetDataStreamsListRequestSchema } from '../../../common/constants/data_streams'; const DATA_STREAM_INDEX_PATTERN = 'logs-*-*,metrics-*-*,traces-*-*,synthetics-*-*'; @@ -37,11 +40,139 @@ interface ESDataStreamInfo { hidden: boolean; } +async function getMetadataFromTermsEnum({ + dataStreamName, + esClient, +}: { + dataStreamName: string; + esClient: ElasticsearchClient; +}) { + const [maxEventIngestedResponse, namespaceResponse, datasetResponse, typeResponse] = + await Promise.all([ + esClient.search({ + size: 1, + index: dataStreamName, + sort: { + // @ts-expect-error Type '{ 'event.ingested': string; }' is not assignable to type 'string | string[] | undefined'. + 'event.ingested': 'desc', + }, + _source: false, + fields: ['event.ingested'], + }), + esClient.termsEnum({ + index: dataStreamName, + field: 'data_stream.namespace', + }), + esClient.termsEnum({ + index: dataStreamName, + field: 'data_stream.dataset', + }), + esClient.termsEnum({ + index: dataStreamName, + field: 'data_stream.type', + }), + ]); + + const maxIngested = new Date( + maxEventIngestedResponse.hits.hits[0]?.fields!['event.ingested'] + ).getTime(); + + const namespace = namespaceResponse.terms[0] ?? ''; + const dataset = datasetResponse.terms[0] ?? ''; + const type = typeResponse.terms[0] ?? ''; + + return { + maxIngested, + namespace, + dataset, + type, + }; +} + +async function getMetadataFromAggregations({ + dataStreamName, + esClient, +}: { + dataStreamName: string; + esClient: ElasticsearchClient; +}) { + // Query backing indices to extract data stream dataset, namespace, and type values + const { aggregations: dataStreamAggs } = await esClient.search({ + index: dataStreamName, + body: { + size: 0, + query: { + bool: { + filter: [ + { + exists: { + field: 'data_stream.namespace', + }, + }, + { + exists: { + field: 'data_stream.dataset', + }, + }, + ], + }, + }, + aggs: { + maxIngestedTimestamp: { + max: { + field: 'event.ingested', + }, + }, + dataset: { + terms: { + field: 'data_stream.dataset', + size: 1, + }, + }, + namespace: { + terms: { + field: 'data_stream.namespace', + size: 1, + }, + }, + type: { + terms: { + field: 'data_stream.type', + size: 1, + }, + }, + }, + }, + }); + + const { maxIngestedTimestamp } = dataStreamAggs as Record< + string, + estypes.AggregationsRateAggregate + >; + const { dataset, namespace, type } = dataStreamAggs as Record< + string, + estypes.AggregationsMultiBucketAggregateBase<{ key?: string; value?: number }> + >; + + const maxIngested = maxIngestedTimestamp?.value; + + return { + maxIngested, + dataset: (dataset.buckets as Array<{ key?: string; value?: number }>)[0]?.key || '', + namespace: (namespace.buckets as Array<{ key?: string; value?: number }>)[0]?.key || '', + type: (type.buckets as Array<{ key?: string; value?: number }>)[0]?.key || '', + }; +} + export const getListHandler: RequestHandler = async (context, request, response) => { // Query datastreams as the current user as the Kibana internal user may not have all the required permission const { savedObjects, elasticsearch } = await context.core; const esClient = elasticsearch.client.asCurrentUser; + const { use_terms_enum: useTermsEnum } = request.params as TypeOf< + typeof GetDataStreamsListRequestSchema['params'] + >; + const body: GetDataStreamsResponse = { data_streams: [], }; @@ -127,75 +258,18 @@ export const getListHandler: RequestHandler = async (context, request, response) dashboards: [], }; - // Query backing indices to extract data stream dataset, namespace, and type values - const { aggregations: dataStreamAggs } = await esClient.search({ - index: dataStream.name, - body: { - size: 0, - query: { - bool: { - filter: [ - { - exists: { - field: 'data_stream.namespace', - }, - }, - { - exists: { - field: 'data_stream.dataset', - }, - }, - ], - }, - }, - aggs: { - maxIngestedTimestamp: { - max: { - field: 'event.ingested', - }, - }, - dataset: { - terms: { - field: 'data_stream.dataset', - size: 1, - }, - }, - namespace: { - terms: { - field: 'data_stream.namespace', - size: 1, - }, - }, - type: { - terms: { - field: 'data_stream.type', - size: 1, - }, - }, - }, - }, - }); - - const { maxIngestedTimestamp } = dataStreamAggs as Record< - string, - estypes.AggregationsRateAggregate - >; - const { dataset, namespace, type } = dataStreamAggs as Record< - string, - estypes.AggregationsMultiBucketAggregateBase<{ key?: string; value?: number }> - >; + const { maxIngested, namespace, dataset, type } = useTermsEnum + ? await getMetadataFromTermsEnum({ dataStreamName: dataStream.name, esClient }) + : await getMetadataFromAggregations({ dataStreamName: dataStream.name, esClient }); // some integrations e.g custom logs don't have event.ingested - if (maxIngestedTimestamp?.value) { - dataStreamResponse.last_activity_ms = maxIngestedTimestamp?.value; + if (maxIngested) { + dataStreamResponse.last_activity_ms = maxIngested; } - dataStreamResponse.dataset = - (dataset.buckets as Array<{ key?: string; value?: number }>)[0]?.key || ''; - dataStreamResponse.namespace = - (namespace.buckets as Array<{ key?: string; value?: number }>)[0]?.key || ''; - dataStreamResponse.type = - (type.buckets as Array<{ key?: string; value?: number }>)[0]?.key || ''; + dataStreamResponse.dataset = dataset; + dataStreamResponse.namespace = namespace; + dataStreamResponse.type = type; // Find package saved object const pkgName = dataStreamResponse.package; diff --git a/x-pack/plugins/fleet/server/routes/data_streams/index.ts b/x-pack/plugins/fleet/server/routes/data_streams/index.ts index ddefc537ba207..d7491d87e2a17 100644 --- a/x-pack/plugins/fleet/server/routes/data_streams/index.ts +++ b/x-pack/plugins/fleet/server/routes/data_streams/index.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { GetDataStreamsListRequestSchema } from '../../../common/constants/data_streams'; import { DATA_STREAM_API_ROUTES } from '../../constants'; import type { FleetAuthzRouter } from '../security'; @@ -15,7 +16,7 @@ export const registerRoutes = (router: FleetAuthzRouter) => { router.get( { path: DATA_STREAM_API_ROUTES.LIST_PATTERN, - validate: false, + validate: GetDataStreamsListRequestSchema, fleetAuthz: { fleet: { all: true }, }, diff --git a/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts b/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts index 77fe33df4ca48..74cf93c1c6bcb 100644 --- a/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts +++ b/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts @@ -5,8 +5,7 @@ * 2.0. */ -export const elasticAgentStandaloneManifest = ` ---- +export const elasticAgentStandaloneManifest = `--- apiVersion: apps/v1 kind: DaemonSet metadata: @@ -66,6 +65,11 @@ spec: - name: proc mountPath: /hostfs/proc readOnly: true + - name: etc-kubernetes + mountPath: /hostfs/etc/kubernetes + - name: var-lib + mountPath: /hostfs/var/lib + readOnly: true - name: cgroup mountPath: /hostfs/sys/fs/cgroup readOnly: true @@ -75,6 +79,15 @@ spec: - name: varlog mountPath: /var/log readOnly: true + - name: passwd + mountPath: /hostfs/etc/passwd + readOnly: true + - name: group + mountPath: /hostfs/etc/group + readOnly: true + - name: systemd + mountPath: /hostfs/etc/systemd + readOnly: true volumes: - name: datastreams configMap: @@ -83,6 +96,18 @@ spec: - name: proc hostPath: path: /proc + - name: etc-kubernetes + hostPath: + path: /etc/kubernetes + - name: var-lib + hostPath: + path: /var/lib + - name: passwd + hostPath: + path: /etc/passwd + - name: group + hostPath: + path: /etc/group - name: cgroup hostPath: path: /sys/fs/cgroup @@ -92,6 +117,9 @@ spec: - name: varlog hostPath: path: /var/log + - name: systemd + hostPath: + path: /etc/systemd --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -149,6 +177,7 @@ rules: - pods - services - configmaps + - serviceaccounts verbs: ["get", "list", "watch"] # Enable this rule only if planing to use kubernetes_secrets provider #- apiGroups: [""] @@ -181,6 +210,23 @@ rules: - "/metrics" verbs: - get + # required for cloudbeat + - apiGroups: ["rbac.authorization.k8s.io"] + resources: + - clusterrolebindings + - clusterroles + - rolebindings + - roles + verbs: ["get", "list", "watch"] + - apiGroups: ["networking.k8s.io"] + resources: + - ingressclasses + - ingresses + verbs: ["get", "list", "watch"] + - apiGroups: ["policy"] + resources: + - podsecuritypolicies + verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -222,7 +268,8 @@ metadata: --- `; -export const elasticAgentManagedManifest = `apiVersion: apps/v1 +export const elasticAgentManagedManifest = `--- +apiVersion: apps/v1 kind: DaemonSet metadata: name: elastic-agent @@ -285,6 +332,11 @@ spec: - name: proc mountPath: /hostfs/proc readOnly: true + - name: etc-kubernetes + mountPath: /hostfs/etc/kubernetes + - name: var-lib + mountPath: /hostfs/var/lib + readOnly: true - name: cgroup mountPath: /hostfs/sys/fs/cgroup readOnly: true @@ -294,10 +346,31 @@ spec: - name: varlog mountPath: /var/log readOnly: true + - name: passwd + mountPath: /hostfs/etc/passwd + readOnly: true + - name: group + mountPath: /hostfs/etc/group + readOnly: true + - name: systemd + mountPath: /hostfs/etc/systemd + readOnly: true volumes: - name: proc hostPath: path: /proc + - name: etc-kubernetes + hostPath: + path: /etc/kubernetes + - name: var-lib + hostPath: + path: /var/lib + - name: passwd + hostPath: + path: /etc/passwd + - name: group + hostPath: + path: /etc/group - name: cgroup hostPath: path: /sys/fs/cgroup @@ -307,6 +380,9 @@ spec: - name: varlog hostPath: path: /var/log + - name: systemd + hostPath: + path: /etc/systemd --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -364,6 +440,7 @@ rules: - pods - services - configmaps + - serviceaccounts verbs: ["get", "list", "watch"] # Enable this rule only if planing to use kubernetes_secrets provider #- apiGroups: [""] @@ -396,6 +473,23 @@ rules: - "/metrics" verbs: - get + # required for cloudbeat + - apiGroups: ["rbac.authorization.k8s.io"] + resources: + - clusterrolebindings + - clusterroles + - rolebindings + - roles + verbs: ["get", "list", "watch"] + - apiGroups: ["networking.k8s.io"] + resources: + - ingressclasses + - ingresses + verbs: ["get", "list", "watch"] + - apiGroups: ["policy"] + resources: + - podsecuritypolicies + verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -435,5 +529,4 @@ metadata: labels: k8s-app: elastic-agent --- - `; diff --git a/x-pack/plugins/fleet/server/services/epm/archive/storage.ts b/x-pack/plugins/fleet/server/services/epm/archive/storage.ts index cb9f5650550e8..2c313f2f2761d 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/storage.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/storage.ts @@ -123,7 +123,7 @@ export async function saveArchiveEntries(opts: { }) ); - const results = await savedObjectsClient.bulkCreate(bulkBody); + const results = await savedObjectsClient.bulkCreate(bulkBody, { refresh: false }); return results; } diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts index 4f18966a61307..c6be2dfedb1df 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts @@ -13,14 +13,13 @@ import type { InstallablePackage, RegistryDataStream, } from '../../../../../common/types/models'; -import { getInstallation } from '../../packages'; -import { saveInstalledEsRefs } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/install'; import { getAsset } from '../transform/common'; import { getESAssetMetadata } from '../meta'; import { retryTransientEsErrors } from '../retry'; -import { deleteIlmRefs, deleteIlms } from './remove'; +import { deleteIlms } from './remove'; interface IlmInstallation { installationName: string; @@ -37,24 +36,39 @@ export const installIlmForDataStream = async ( paths: string[], esClient: ElasticsearchClient, savedObjectsClient: SavedObjectsClientContract, - logger: Logger + logger: Logger, + esReferences: EsAssetReference[] ) => { - const installation = await getInstallation({ savedObjectsClient, pkgName: registryPackage.name }); - let previousInstalledIlmEsAssets: EsAssetReference[] = []; - if (installation) { - previousInstalledIlmEsAssets = installation.installed_es.filter( - ({ type, id }) => type === ElasticsearchAssetType.dataStreamIlmPolicy - ); - } + const previousInstalledIlmEsAssets = esReferences.filter( + ({ type }) => type === ElasticsearchAssetType.dataStreamIlmPolicy + ); // delete all previous ilm await deleteIlms( esClient, previousInstalledIlmEsAssets.map((asset) => asset.id) ); + + if (previousInstalledIlmEsAssets.length > 0) { + // remove the saved object reference + esReferences = await updateEsAssetReferences( + savedObjectsClient, + registryPackage.name, + esReferences, + { + assetsToRemove: previousInstalledIlmEsAssets, + } + ); + } + // install the latest dataset const dataStreams = registryPackage.data_streams; - if (!dataStreams?.length) return []; + if (!dataStreams?.length) + return { + installedIlms: [], + esReferences, + }; + const dataStreamIlmPaths = paths.filter((path) => isDataStreamIlm(path)); let installedIlms: EsAssetReference[] = []; if (dataStreamIlmPaths.length > 0) { @@ -77,12 +91,17 @@ export const installIlmForDataStream = async ( return acc; }, []); - await saveInstalledEsRefs(savedObjectsClient, registryPackage.name, ilmRefs); + esReferences = await updateEsAssetReferences( + savedObjectsClient, + registryPackage.name, + esReferences, + { assetsToAdd: ilmRefs } + ); const ilmInstallations: IlmInstallation[] = ilmPathDatasets.map( (ilmPathDataset: IlmPathDataset) => { const content = JSON.parse(getAsset(ilmPathDataset.path).toString('utf-8')); - content.policy._meta = getESAssetMetadata({ packageName: installation?.name }); + content.policy._meta = getESAssetMetadata({ packageName: registryPackage.name }); return { installationName: getIlmNameForInstallation(ilmPathDataset), @@ -98,22 +117,7 @@ export const installIlmForDataStream = async ( installedIlms = await Promise.all(installationPromises).then((results) => results.flat()); } - if (previousInstalledIlmEsAssets.length > 0) { - const currentInstallation = await getInstallation({ - savedObjectsClient, - pkgName: registryPackage.name, - }); - - // remove the saved object reference - await deleteIlmRefs( - savedObjectsClient, - currentInstallation?.installed_es || [], - registryPackage.name, - previousInstalledIlmEsAssets.map((asset) => asset.id), - installedIlms.map((installed) => installed.id) - ); - } - return installedIlms; + return { installedIlms, esReferences }; }; async function handleIlmInstall({ diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/remove.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/remove.ts index 1d98a9339c907..331088d195d0b 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/remove.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/remove.ts @@ -5,11 +5,7 @@ * 2.0. */ -import type { ElasticsearchClient, SavedObjectsClientContract } from '@kbn/core/server'; - -import { ElasticsearchAssetType } from '../../../../types'; -import type { EsAssetReference } from '../../../../types'; -import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../../common/constants'; +import type { ElasticsearchClient } from '@kbn/core/server'; export const deleteIlms = async (esClient: ElasticsearchClient, ilmPolicyIds: string[]) => { await Promise.all( @@ -26,24 +22,3 @@ export const deleteIlms = async (esClient: ElasticsearchClient, ilmPolicyIds: st }) ); }; - -export const deleteIlmRefs = async ( - savedObjectsClient: SavedObjectsClientContract, - installedEsAssets: EsAssetReference[], - pkgName: string, - installedEsIdToRemove: string[], - currentInstalledEsIlmIds: string[] -) => { - const seen = new Set(); - const filteredAssets = installedEsAssets.filter(({ type, id }) => { - if (type !== ElasticsearchAssetType.dataStreamIlmPolicy) return true; - const add = - (currentInstalledEsIlmIds.includes(id) || !installedEsIdToRemove.includes(id)) && - !seen.has(id); - seen.add(id); - return add; - }); - return savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { - installed_es: filteredAssets, - }); -}; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts index 9b64ec89507dc..3aa86b526addd 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts @@ -5,12 +5,13 @@ * 2.0. */ -import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import type { ElasticsearchClient, Logger, SavedObjectsClientContract } from '@kbn/core/server'; -import type { InstallablePackage } from '../../../../types'; +import type { EsAssetReference, InstallablePackage } from '../../../../types'; import { ElasticsearchAssetType } from '../../../../types'; import { getAsset, getPathParts } from '../../archive'; +import { updateEsAssetReferences } from '../../packages/install'; import { getESAssetMetadata } from '../meta'; import { retryTransientEsErrors } from '../retry'; @@ -18,25 +19,40 @@ export async function installILMPolicy( packageInfo: InstallablePackage, paths: string[], esClient: ElasticsearchClient, - logger: Logger -) { + savedObjectsClient: SavedObjectsClientContract, + logger: Logger, + esReferences: EsAssetReference[] +): Promise { const ilmPaths = paths.filter((path) => isILMPolicy(path)); - if (!ilmPaths.length) return; - await Promise.all( - ilmPaths.map(async (path) => { - const body = JSON.parse(getAsset(path).toString('utf-8')); + if (!ilmPaths.length) return esReferences; + + const ilmPolicies = ilmPaths.map((path) => { + const body = JSON.parse(getAsset(path).toString('utf-8')); + + body.policy._meta = getESAssetMetadata({ packageName: packageInfo.name }); + + const { file } = getPathParts(path); + const name = file.substr(0, file.lastIndexOf('.')); - body.policy._meta = getESAssetMetadata({ packageName: packageInfo.name }); + return { name, body }; + }); - const { file } = getPathParts(path); - const name = file.substr(0, file.lastIndexOf('.')); + esReferences = await updateEsAssetReferences(savedObjectsClient, packageInfo.name, esReferences, { + assetsToAdd: ilmPolicies.map((policy) => ({ + type: ElasticsearchAssetType.ilmPolicy, + id: policy.name, + })), + }); + + await Promise.all( + ilmPolicies.map(async (policy) => { try { await retryTransientEsErrors( () => esClient.transport.request({ method: 'PUT', - path: '/_ilm/policy/' + name, - body, + path: '/_ilm/policy/' + policy.name, + body: policy.body, }), { logger } ); @@ -45,6 +61,8 @@ export async function installILMPolicy( } }) ); + + return esReferences; } const isILMPolicy = (path: string) => { diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts index c6830d5bb9a03..49dae4d86b639 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts @@ -12,8 +12,7 @@ import { ElasticsearchAssetType } from '../../../../types'; import type { EsAssetReference, RegistryDataStream, InstallablePackage } from '../../../../types'; import { getAsset, getPathParts } from '../../archive'; import type { ArchiveEntry } from '../../archive'; -import { saveInstalledEsRefs } from '../../packages/install'; -import { getInstallationObject } from '../../packages'; +import { updateEsAssetReferences } from '../../packages/install'; import { FLEET_FINAL_PIPELINE_CONTENT, FLEET_FINAL_PIPELINE_ID, @@ -24,8 +23,6 @@ import { appendMetadataToIngestPipeline } from '../meta'; import { retryTransientEsErrors } from '../retry'; -import { deletePipelineRefs } from './remove'; - interface RewriteSubstitution { source: string; target: string; @@ -44,7 +41,8 @@ export const installPipelines = async ( paths: string[], esClient: ElasticsearchClient, savedObjectsClient: SavedObjectsClientContract, - logger: Logger + logger: Logger, + esReferences: EsAssetReference[] ) => { // unlike other ES assets, pipeline names are versioned so after a template is updated // it can be created pointing to the new template, without removing the old one and effecting data @@ -67,7 +65,7 @@ export const installPipelines = async ( const nameForInstallation = getPipelineNameForInstallation({ pipelineName: name, dataStream, - packageVersion: installablePackage.version, + packageVersion: pkgVersion, }); return { id: nameForInstallation, type: ElasticsearchAssetType.ingestPipeline }; }); @@ -80,27 +78,17 @@ export const installPipelines = async ( const { name } = getNameAndExtension(path); const nameForInstallation = getPipelineNameForInstallation({ pipelineName: name, - packageVersion: installablePackage.version, + packageVersion: pkgVersion, }); return { id: nameForInstallation, type: ElasticsearchAssetType.ingestPipeline }; }); pipelineRefs = [...pipelineRefs, ...topLevelPipelineRefs]; - // check that we don't duplicate the pipeline refs if the user is reinstalling - const installedPkg = await getInstallationObject({ - savedObjectsClient, - pkgName, + esReferences = await updateEsAssetReferences(savedObjectsClient, pkgName, esReferences, { + assetsToAdd: pipelineRefs, }); - if (!installedPkg) throw new Error("integration wasn't found while installing pipelines"); - // remove the current pipeline refs, if any exist, associated with this version before saving new ones so no duplicates occur - await deletePipelineRefs( - savedObjectsClient, - installedPkg.attributes.installed_es, - pkgName, - pkgVersion - ); - await saveInstalledEsRefs(savedObjectsClient, installablePackage.name, pipelineRefs); + const pipelines = dataStreams ? dataStreams.reduce>>((acc, dataStream) => { if (dataStream.ingest_pipeline) { @@ -130,7 +118,8 @@ export const installPipelines = async ( ); } - return await Promise.all(pipelines).then((results) => results.flat()); + await Promise.all(pipelines); + return esReferences; }; export function rewriteIngestPipeline( diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts index e9d693bdbfaa8..7e2b6c121bbab 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts @@ -10,54 +10,38 @@ import type { ElasticsearchClient, SavedObjectsClientContract } from '@kbn/core/ import { appContextService } from '../../..'; import { ElasticsearchAssetType } from '../../../../types'; import { IngestManagerError } from '../../../../errors'; -import { getInstallation } from '../../packages/get'; -import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../../common'; import type { EsAssetReference } from '../../../../../common'; +import { updateEsAssetReferences } from '../../packages/install'; export const deletePreviousPipelines = async ( esClient: ElasticsearchClient, savedObjectsClient: SavedObjectsClientContract, pkgName: string, - previousPkgVersion: string + previousPkgVersion: string, + esReferences: EsAssetReference[] ) => { const logger = appContextService.getLogger(); - const installation = await getInstallation({ savedObjectsClient, pkgName }); - if (!installation) return; - const installedEsAssets = installation.installed_es; - const installedPipelines = installedEsAssets.filter( + const installedPipelines = esReferences.filter( ({ type, id }) => type === ElasticsearchAssetType.ingestPipeline && id.includes(previousPkgVersion) ); - const deletePipelinePromises = installedPipelines.map(({ type, id }) => { - return deletePipeline(esClient, id); - }); - try { - await Promise.all(deletePipelinePromises); - } catch (e) { - logger.error(e); - } try { - await deletePipelineRefs(savedObjectsClient, installedEsAssets, pkgName, previousPkgVersion); + await Promise.all( + installedPipelines.map(({ type, id }) => { + return deletePipeline(esClient, id); + }) + ); } catch (e) { logger.error(e); } -}; -export const deletePipelineRefs = async ( - savedObjectsClient: SavedObjectsClientContract, - installedEsAssets: EsAssetReference[], - pkgName: string, - pkgVersion: string -) => { - const filteredAssets = installedEsAssets.filter(({ type, id }) => { - if (type !== ElasticsearchAssetType.ingestPipeline) return true; - if (!id.includes(pkgVersion)) return true; - return false; - }); - return savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { - installed_es: filteredAssets, + return await updateEsAssetReferences(savedObjectsClient, pkgName, esReferences, { + assetsToRemove: esReferences.filter(({ type, id }) => { + return type === ElasticsearchAssetType.ingestPipeline && id.includes(previousPkgVersion); + }), }); }; + export async function deletePipeline(esClient: ElasticsearchClient, id: string): Promise { // '*' shouldn't ever appear here, but it still would delete all ingest pipelines if (id && id !== '*') { diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts index 13b3de989e620..630433e18ce39 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts @@ -8,13 +8,14 @@ import type { ElasticsearchClient, Logger, SavedObjectsClientContract } from '@kbn/core/server'; import { errors } from '@elastic/elasticsearch'; -import { saveInstalledEsRefs } from '../../packages/install'; import { getPathParts } from '../../archive'; import { ElasticsearchAssetType } from '../../../../../common/types/models'; import type { EsAssetReference, InstallablePackage } from '../../../../../common/types/models'; import { retryTransientEsErrors } from '../retry'; +import { updateEsAssetReferences } from '../../packages/install'; + import { getAsset } from './common'; interface MlModelInstallation { @@ -27,11 +28,11 @@ export const installMlModel = async ( paths: string[], esClient: ElasticsearchClient, savedObjectsClient: SavedObjectsClientContract, - logger: Logger + logger: Logger, + esReferences: EsAssetReference[] ) => { const mlModelPath = paths.find((path) => isMlModel(path)); - const installedMlModels: EsAssetReference[] = []; if (mlModelPath !== undefined) { const content = getAsset(mlModelPath).toString('utf-8'); const pathParts = mlModelPath.split('/'); @@ -43,17 +44,22 @@ export const installMlModel = async ( }; // get and save ml model refs before installing ml model - await saveInstalledEsRefs(savedObjectsClient, installablePackage.name, [mlModelRef]); + esReferences = await updateEsAssetReferences( + savedObjectsClient, + installablePackage.name, + esReferences, + { assetsToAdd: [mlModelRef] } + ); const mlModel: MlModelInstallation = { installationName: modelId, content, }; - const result = await handleMlModelInstall({ esClient, logger, mlModel }); - installedMlModels.push(result); + await handleMlModelInstall({ esClient, logger, mlModel }); } - return installedMlModels; + + return esReferences; }; const isMlModel = (path: string) => { diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.test.ts index 48f070434530a..998d0f9fb1ae5 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.test.ts @@ -180,15 +180,11 @@ describe('EPM install', () => { packageName: pkg.name, }); - const removeAliases = ( - esClient.indices.putIndexTemplate.mock.calls[0][0] as estypes.IndicesPutIndexTemplateRequest - ).body; - expect(removeAliases?.template?.aliases).not.toBeDefined(); - const sentTemplate = ( - esClient.indices.putIndexTemplate.mock.calls[1][0] as estypes.IndicesPutIndexTemplateRequest + esClient.indices.putIndexTemplate.mock.calls[0][0] as estypes.IndicesPutIndexTemplateRequest ).body; expect(sentTemplate).toBeDefined(); + expect(sentTemplate?.template?.aliases).not.toBeDefined(); expect(sentTemplate?.priority).toBe(templatePriorityDatasetIsPrefixUnset); expect(sentTemplate?.index_patterns).toEqual([templateIndexPatternDatasetIsPrefixUnset]); }); diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts index 6d953835dfe6c..2d2e5b2ffea2a 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts @@ -16,17 +16,17 @@ import type { RegistryElasticsearch, InstallablePackage, IndexTemplate, - PackageInfo, IndexTemplateMappings, TemplateMapEntry, TemplateMap, + EsAssetReference, } from '../../../../types'; import { loadFieldsFromYaml, processFields } from '../../fields/field'; import type { Field } from '../../fields/field'; import { getPipelineNameForInstallation } from '../ingest_pipeline/install'; import { getAsset, getPathParts } from '../../archive'; -import { removeAssetTypesFromInstalledEs, saveInstalledEsRefs } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/install'; import { FLEET_COMPONENT_TEMPLATES, PACKAGE_TEMPLATE_SUFFIX, @@ -36,8 +36,6 @@ import { import { getESAssetMetadata } from '../meta'; import { retryTransientEsErrors } from '../retry'; -import { getPackageInfo } from '../../packages'; - import { generateMappings, generateTemplateName, @@ -54,8 +52,12 @@ export const installTemplates = async ( esClient: ElasticsearchClient, logger: Logger, paths: string[], - savedObjectsClient: SavedObjectsClientContract -): Promise => { + savedObjectsClient: SavedObjectsClientContract, + esReferences: EsAssetReference[] +): Promise<{ + installedTemplates: IndexTemplateEntry[]; + installedEsReferences: EsAssetReference[]; +}> => { // install any pre-built index template assets, // atm, this is only the base package's global index templates // Install component templates first, as they are used by the index templates @@ -63,24 +65,27 @@ export const installTemplates = async ( await installPreBuiltTemplates(paths, esClient, logger); // remove package installation's references to index templates - await removeAssetTypesFromInstalledEs(savedObjectsClient, installablePackage.name, [ - ElasticsearchAssetType.indexTemplate, - ElasticsearchAssetType.componentTemplate, - ]); + esReferences = await updateEsAssetReferences( + savedObjectsClient, + installablePackage.name, + esReferences, + { + assetsToRemove: esReferences.filter( + ({ type }) => + type === ElasticsearchAssetType.indexTemplate || + type === ElasticsearchAssetType.componentTemplate + ), + } + ); + // build templates per data stream from yml files const dataStreams = installablePackage.data_streams; - if (!dataStreams) return []; - - const packageInfo = await getPackageInfo({ - savedObjectsClient, - pkgName: installablePackage.name, - pkgVersion: installablePackage.version, - }); + if (!dataStreams) return { installedTemplates: [], installedEsReferences: esReferences }; const installedTemplatesNested = await Promise.all( dataStreams.map((dataStream) => installTemplateForDataStream({ - pkg: packageInfo, + pkg: installablePackage, esClient, logger, dataStream, @@ -93,13 +98,14 @@ export const installTemplates = async ( const installedIndexTemplateRefs = getAllTemplateRefs(installedTemplates); // add package installation's references to index templates - await saveInstalledEsRefs( + esReferences = await updateEsAssetReferences( savedObjectsClient, installablePackage.name, - installedIndexTemplateRefs + esReferences, + { assetsToAdd: installedIndexTemplateRefs } ); - return installedTemplates; + return { installedTemplates, installedEsReferences: esReferences }; }; const installPreBuiltTemplates = async ( @@ -192,7 +198,7 @@ export async function installTemplateForDataStream({ logger, dataStream, }: { - pkg: PackageInfo; + pkg: InstallablePackage; esClient: ElasticsearchClient; logger: Logger; dataStream: RegistryDataStream; @@ -315,19 +321,20 @@ async function installDataStreamComponentTemplates(params: { await Promise.all( templateEntries.map(async ([name, body]) => { if (isUserSettingsTemplate(name)) { - // look for existing user_settings template - const result = await retryTransientEsErrors( - () => esClient.cluster.getComponentTemplate({ name }, { ignore: [404] }), - { logger } - ); - const hasUserSettingsTemplate = result.component_templates?.length === 1; - if (!hasUserSettingsTemplate) { - // only add if one isn't already present + try { + // Attempt to create custom component templates, ignore if they already exist const { clusterPromise } = putComponentTemplate(esClient, logger, { body, name, + create: true, }); - return clusterPromise; + return await clusterPromise; + } catch (e) { + if (e?.statusCode === 400 && e.body?.error?.reason.includes('already exists')) { + // ignore + } else { + throw e; + } } } else { const { clusterPromise } = putComponentTemplate(esClient, logger, { body, name }); @@ -410,44 +417,6 @@ export async function installTemplate({ }); } - // Datastream now throw an error if the aliases field is present so ensure that we remove that field. - const getTemplateRes = await retryTransientEsErrors( - () => - esClient.indices.getIndexTemplate( - { - name: templateName, - }, - { - ignore: [404], - } - ), - { logger } - ); - - const existingIndexTemplate = getTemplateRes?.index_templates?.[0]; - if ( - existingIndexTemplate && - existingIndexTemplate.name === templateName && - existingIndexTemplate?.index_template?.template?.aliases - ) { - const updateIndexTemplateParams = { - name: templateName, - body: { - ...existingIndexTemplate.index_template, - template: { - ...existingIndexTemplate.index_template.template, - // Remove the aliases field - aliases: undefined, - }, - }, - }; - - await retryTransientEsErrors( - () => esClient.indices.putIndexTemplate(updateIndexTemplateParams, { ignore: [404] }), - { logger } - ); - } - const defaultSettings = buildDefaultSettings({ templateName, packageName, diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts index fea12f4b139c6..ab8f60e172dcb 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts @@ -8,7 +8,7 @@ import type { ElasticsearchClient, Logger, SavedObjectsClientContract } from '@kbn/core/server'; import { errors } from '@elastic/elasticsearch'; -import { saveInstalledEsRefs } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/install'; import { getPathParts } from '../../archive'; import { ElasticsearchAssetType } from '../../../../../common/types/models'; import type { EsAssetReference, InstallablePackage } from '../../../../../common/types/models'; @@ -18,7 +18,7 @@ import { getESAssetMetadata } from '../meta'; import { retryTransientEsErrors } from '../retry'; -import { deleteTransforms, deleteTransformRefs } from './remove'; +import { deleteTransforms } from './remove'; import { getAsset } from './common'; interface TransformInstallation { @@ -31,12 +31,14 @@ export const installTransform = async ( paths: string[], esClient: ElasticsearchClient, savedObjectsClient: SavedObjectsClientContract, - logger: Logger + logger: Logger, + esReferences?: EsAssetReference[] ) => { const installation = await getInstallation({ savedObjectsClient, pkgName: installablePackage.name, }); + esReferences = esReferences ?? installation?.installed_es ?? []; let previousInstalledTransformEsAssets: EsAssetReference[] = []; if (installation) { previousInstalledTransformEsAssets = installation.installed_es.filter( @@ -71,7 +73,14 @@ export const installTransform = async ( }, []); // get and save transform refs before installing transforms - await saveInstalledEsRefs(savedObjectsClient, installablePackage.name, transformRefs); + esReferences = await updateEsAssetReferences( + savedObjectsClient, + installablePackage.name, + esReferences, + { + assetsToAdd: transformRefs, + } + ); const transforms: TransformInstallation[] = transformPaths.map((path: string) => { const content = JSON.parse(getAsset(path).toString('utf-8')); @@ -95,21 +104,17 @@ export const installTransform = async ( } if (previousInstalledTransformEsAssets.length > 0) { - const currentInstallation = await getInstallation({ + esReferences = await updateEsAssetReferences( savedObjectsClient, - pkgName: installablePackage.name, - }); - - // remove the saved object reference - await deleteTransformRefs( - savedObjectsClient, - currentInstallation?.installed_es || [], installablePackage.name, - previousInstalledTransformEsAssets.map((asset) => asset.id), - installedTransforms.map((installed) => installed.id) + esReferences, + { + assetsToRemove: previousInstalledTransformEsAssets, + } ); } - return installedTransforms; + + return { installedTransforms, esReferences }; }; export const isTransform = (path: string) => { diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts index 16384b8bfba19..74e49031861c1 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts @@ -34,8 +34,10 @@ import { appContextService } from '../../../app_context'; import { getESAssetMetadata } from '../meta'; -import { installTransform } from './install'; +import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../constants'; + import { getAsset } from './common'; +import { installTransform } from './install'; describe('test transform install', () => { let esClient: ReturnType; @@ -46,6 +48,12 @@ describe('test transform install', () => { (getInstallation as jest.MockedFunction).mockReset(); (getInstallationObject as jest.MockedFunction).mockReset(); savedObjectsClient = savedObjectsClientMock.create(); + savedObjectsClient.update.mockImplementation(async (type, id, attributes) => ({ + type: PACKAGES_SAVED_OBJECT_TYPE, + id: 'endpoint', + attributes, + references: [], + })); }); afterEach(() => { @@ -158,7 +166,8 @@ describe('test transform install', () => { ], esClient, savedObjectsClient, - loggerMock.create() + loggerMock.create(), + previousInstallation.installed_es ); expect(esClient.transform.getTransform.mock.calls).toEqual([ @@ -255,6 +264,9 @@ describe('test transform install', () => { }, ], }, + { + refresh: false, + }, ], [ 'epm-packages', @@ -266,15 +278,18 @@ describe('test transform install', () => { type: 'ingest_pipeline', }, { - id: 'endpoint.metadata_current-default-0.16.0-dev.0', + id: 'endpoint.metadata-default-0.16.0-dev.0', type: 'transform', }, { - id: 'endpoint.metadata-default-0.16.0-dev.0', + id: 'endpoint.metadata_current-default-0.16.0-dev.0', type: 'transform', }, ], }, + { + refresh: false, + }, ], ]); }); @@ -331,7 +346,8 @@ describe('test transform install', () => { ['endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json'], esClient, savedObjectsClient, - loggerMock.create() + loggerMock.create(), + previousInstallation.installed_es ); const meta = getESAssetMetadata({ packageName: 'endpoint' }); @@ -363,6 +379,9 @@ describe('test transform install', () => { { id: 'endpoint.metadata_current-default-0.16.0-dev.0', type: 'transform' }, ], }, + { + refresh: false, + }, ], ]); }); @@ -443,7 +462,8 @@ describe('test transform install', () => { [], esClient, savedObjectsClient, - loggerMock.create() + loggerMock.create(), + previousInstallation.installed_es ); expect(esClient.transform.getTransform.mock.calls).toEqual([ @@ -492,6 +512,9 @@ describe('test transform install', () => { { installed_es: [], }, + { + refresh: false, + }, ], ]); }); @@ -559,7 +582,8 @@ describe('test transform install', () => { ['endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json'], esClient, savedObjectsClient, - loggerMock.create() + loggerMock.create(), + previousInstallation.installed_es ); const meta = getESAssetMetadata({ packageName: 'endpoint' }); @@ -586,6 +610,9 @@ describe('test transform install', () => { { id: 'endpoint.metadata_current-default-0.16.0-dev.0', type: 'transform' }, ], }, + { + refresh: false, + }, ], ]); }); diff --git a/x-pack/plugins/fleet/server/services/epm/fields/field.ts b/x-pack/plugins/fleet/server/services/epm/fields/field.ts index f1ad96504594e..3f1a8d8b2b7ba 100644 --- a/x-pack/plugins/fleet/server/services/epm/fields/field.ts +++ b/x-pack/plugins/fleet/server/services/epm/fields/field.ts @@ -262,7 +262,7 @@ const isFields = (path: string) => { */ export const loadFieldsFromYaml = async ( - pkg: PackageInfo, + pkg: Pick, datasetName?: string ): Promise => { // Fetch all field definition files diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts index ce8d7e7be2bb9..1462cd61c4bd3 100644 --- a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts @@ -21,9 +21,11 @@ import { partition } from 'lodash'; import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../../common'; import { getAsset, getPathParts } from '../../archive'; import { KibanaAssetType, KibanaSavedObjectType } from '../../../../types'; -import type { AssetType, AssetReference, AssetParts } from '../../../../types'; +import type { AssetType, AssetReference, AssetParts, Installation } from '../../../../types'; import { savedObjectTypes } from '../../packages'; import { indexPatternTypes, getIndexPatternSavedObjects } from '../index_pattern/install'; +import { saveKibanaAssetsRefs } from '../../packages/install'; +import { deleteKibanaSavedObjectsAssets } from '../../packages/remove'; type SavedObjectsImporterContract = Pick; const formatImportErrorsForLog = (errors: SavedObjectsImportFailure[]) => @@ -121,6 +123,41 @@ export async function installKibanaAssets(options: { return installedAssets; } + +export async function installKibanaAssetsAndReferences({ + savedObjectsClient, + savedObjectsImporter, + logger, + pkgName, + paths, + installedPkg, +}: { + savedObjectsClient: SavedObjectsClientContract; + savedObjectsImporter: Pick; + logger: Logger; + pkgName: string; + paths: string[]; + installedPkg?: SavedObject; +}) { + const kibanaAssets = await getKibanaAssets(paths); + if (installedPkg) await deleteKibanaSavedObjectsAssets({ savedObjectsClient, installedPkg }); + // save new kibana refs before installing the assets + const installedKibanaAssetsRefs = await saveKibanaAssetsRefs( + savedObjectsClient, + pkgName, + kibanaAssets + ); + + await installKibanaAssets({ + logger, + savedObjectsImporter, + pkgName, + kibanaAssets, + }); + + return installedKibanaAssetsRefs; +} + export const deleteKibanaInstalledRefs = async ( savedObjectsClient: SavedObjectsClientContract, pkgName: string, diff --git a/x-pack/plugins/fleet/server/services/epm/package_service.test.ts b/x-pack/plugins/fleet/server/services/epm/package_service.test.ts index 31bf9e47a4ae0..782af2860d2e3 100644 --- a/x-pack/plugins/fleet/server/services/epm/package_service.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/package_service.test.ts @@ -50,6 +50,7 @@ function getTest( spy: jest.SpyInstance; spyArgs: any[]; spyResponse: any; + expectedReturnValue: any; }; switch (testKey) { @@ -65,6 +66,7 @@ function getTest( }, ], spyResponse: { name: 'getInstallation test' }, + expectedReturnValue: { name: 'getInstallation test' }, }; break; case testKeys[1]: @@ -82,6 +84,7 @@ function getTest( }, ], spyResponse: { name: 'ensureInstalledPackage test' }, + expectedReturnValue: { name: 'ensureInstalledPackage test' }, }; break; case testKeys[2]: @@ -91,6 +94,7 @@ function getTest( spy: jest.spyOn(epmRegistry, 'fetchFindLatestPackageOrThrow'), spyArgs: ['package name'], spyResponse: { name: 'fetchFindLatestPackage test' }, + expectedReturnValue: { name: 'fetchFindLatestPackage test' }, }; break; case testKeys[3]: @@ -103,6 +107,10 @@ function getTest( packageInfo: { name: 'getRegistryPackage test' }, paths: ['/some/test/path'], }, + expectedReturnValue: { + packageInfo: { name: 'getRegistryPackage test' }, + paths: ['/some/test/path'], + }, }; break; case testKeys[4]: @@ -122,7 +130,14 @@ function getTest( args: [pkg, paths], spy: jest.spyOn(epmTransformsInstall, 'installTransform'), spyArgs: [pkg, paths, mocks.esClient, mocks.soClient, mocks.logger], - spyResponse: [ + spyResponse: { + installedTransforms: [ + { + name: 'package name', + }, + ], + }, + expectedReturnValue: [ { name: 'package name', }, @@ -176,10 +191,13 @@ describe('PackageService', () => { soClient: mockSoClient, logger: mockLogger, }; - const { method, args, spy, spyArgs, spyResponse } = getTest(mockClients, testKey); + const { method, args, spy, spyArgs, spyResponse, expectedReturnValue } = getTest( + mockClients, + testKey + ); spy.mockResolvedValue(spyResponse); - await expect(method(...args)).resolves.toEqual(spyResponse); + await expect(method(...args)).resolves.toEqual(expectedReturnValue); expect(spy).toHaveBeenCalledWith(...spyArgs); }); }); @@ -193,10 +211,13 @@ describe('PackageService', () => { soClient: mockSoClient, logger: mockLogger, }; - const { method, args, spy, spyArgs, spyResponse } = getTest(mockClients, testKey); + const { method, args, spy, spyArgs, spyResponse, expectedReturnValue } = getTest( + mockClients, + testKey + ); spy.mockResolvedValue(spyResponse); - await expect(method(...args)).resolves.toEqual(spyResponse); + await expect(method(...args)).resolves.toEqual(expectedReturnValue); expect(spy).toHaveBeenCalledWith(...spyArgs); }); }); diff --git a/x-pack/plugins/fleet/server/services/epm/package_service.ts b/x-pack/plugins/fleet/server/services/epm/package_service.ts index 573ca3508e947..e16d4954f0b9d 100644 --- a/x-pack/plugins/fleet/server/services/epm/package_service.ts +++ b/x-pack/plugins/fleet/server/services/epm/package_service.ts @@ -146,14 +146,15 @@ class PackageClientImpl implements PackageClient { return installedAssets; } - #reinstallTransforms(packageInfo: InstallablePackage, paths: string[]) { - return installTransform( + async #reinstallTransforms(packageInfo: InstallablePackage, paths: string[]) { + const { installedTransforms } = await installTransform( packageInfo, paths, this.internalEsClient, this.internalSoClient, this.logger ); + return installedTransforms; } #runPreflight() { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts index c0e4404345902..db9803ea70f3a 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts @@ -21,16 +21,15 @@ jest.mock('./install'); jest.mock('./get'); import { updateCurrentWriteIndices } from '../elasticsearch/template/template'; -import { installKibanaAssets } from '../kibana/assets/install'; +import { installKibanaAssetsAndReferences } from '../kibana/assets/install'; import { _installPackage } from './_install_package'; const mockedUpdateCurrentWriteIndices = updateCurrentWriteIndices as jest.MockedFunction< typeof updateCurrentWriteIndices >; -const mockedGetKibanaAssets = installKibanaAssets as jest.MockedFunction< - typeof installKibanaAssets ->; +const mockedInstallKibanaAssetsAndReferences = + installKibanaAssetsAndReferences as jest.MockedFunction; function sleep(millis: number) { return new Promise((resolve) => setTimeout(resolve, millis)); @@ -50,7 +49,7 @@ describe('_installPackage', () => { }); it('handles errors from installKibanaAssets', async () => { // force errors from this function - mockedGetKibanaAssets.mockImplementation(async () => { + mockedInstallKibanaAssetsAndReferences.mockImplementation(async () => { throw new Error('mocked async error A: should be caught'); }); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts index 796269eee38b1..24c324e6b7cd0 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts @@ -29,9 +29,8 @@ import { isTopLevelPipeline, deletePreviousPipelines, } from '../elasticsearch/ingest_pipeline'; -import { getAllTemplateRefs } from '../elasticsearch/template/install'; import { installILMPolicy } from '../elasticsearch/ilm/install'; -import { installKibanaAssets, getKibanaAssets } from '../kibana/assets/install'; +import { installKibanaAssetsAndReferences } from '../kibana/assets/install'; import { updateCurrentWriteIndices } from '../elasticsearch/template/template'; import { installTransform } from '../elasticsearch/transform/install'; import { installMlModel } from '../elasticsearch/ml_model'; @@ -40,8 +39,7 @@ import { saveArchiveEntries } from '../archive/storage'; import { ConcurrentInstallOperationError } from '../../../errors'; import { packagePolicyService } from '../..'; -import { createInstallation, saveKibanaAssetsRefs, updateVersion } from './install'; -import { deleteKibanaSavedObjectsAssets } from './remove'; +import { createInstallation } from './install'; import { withPackageSpan } from './utils'; // this is only exported for testing @@ -106,47 +104,59 @@ export async function _installPackage({ }); } - const installedKibanaAssetsRefs = await withPackageSpan('Install Kibana assets', async () => { - const kibanaAssets = await getKibanaAssets(paths); - if (installedPkg) await deleteKibanaSavedObjectsAssets({ savedObjectsClient, installedPkg }); - // save new kibana refs before installing the assets - const assetRefs = await saveKibanaAssetsRefs(savedObjectsClient, pkgName, kibanaAssets); - - await installKibanaAssets({ - logger, + const kibanaAssetPromise = withPackageSpan('Install Kibana assets', () => + installKibanaAssetsAndReferences({ + savedObjectsClient, savedObjectsImporter, pkgName, - kibanaAssets, - }); + paths, + installedPkg, + logger, + }) + ); + // Necessary to avoid async promise rejection warning + // See https://stackoverflow.com/questions/40920179/should-i-refrain-from-handling-promise-rejection-asynchronously + kibanaAssetPromise.catch(() => {}); - return assetRefs; - }); + // Use a shared array that is updated by each operation. This allows each operation to accurately update the + // installation object with it's references without requiring a refresh of the SO index on each update (faster). + let esReferences = installedPkg?.attributes.installed_es ?? []; // the rest of the installation must happen in sequential order // currently only the base package has an ILM policy // at some point ILM policies can be installed/modified // per data stream and we should then save them - await withPackageSpan('Install ILM policies', () => - installILMPolicy(packageInfo, paths, esClient, logger) + esReferences = await withPackageSpan('Install ILM policies', () => + installILMPolicy(packageInfo, paths, esClient, savedObjectsClient, logger, esReferences) ); - const installedDataStreamIlm = await withPackageSpan('Install Data Stream ILM policies', () => - installIlmForDataStream(packageInfo, paths, esClient, savedObjectsClient, logger) - ); + ({ esReferences } = await withPackageSpan('Install Data Stream ILM policies', () => + installIlmForDataStream( + packageInfo, + paths, + esClient, + savedObjectsClient, + logger, + esReferences + ) + )); // installs ml models - const installedMlModel = await withPackageSpan('Install ML models', () => - installMlModel(packageInfo, paths, esClient, savedObjectsClient, logger) + esReferences = await withPackageSpan('Install ML models', () => + installMlModel(packageInfo, paths, esClient, savedObjectsClient, logger, esReferences) ); // installs versionized pipelines without removing currently installed ones - const installedPipelines = await withPackageSpan('Install ingest pipelines', () => - installPipelines(packageInfo, paths, esClient, savedObjectsClient, logger) + esReferences = await withPackageSpan('Install ingest pipelines', () => + installPipelines(packageInfo, paths, esClient, savedObjectsClient, logger, esReferences) ); + // install or update the templates referencing the newly installed pipelines - const installedTemplates = await withPackageSpan('Install index templates', () => - installTemplates(packageInfo, esClient, logger, paths, savedObjectsClient) - ); + const { installedTemplates, installedEsReferences: esReferencesAfterTemplates } = + await withPackageSpan('Install index templates', () => + installTemplates(packageInfo, esClient, logger, paths, savedObjectsClient, esReferences) + ); + esReferences = esReferencesAfterTemplates; try { await removeLegacyTemplates({ packageInfo, esClient, logger }); @@ -159,9 +169,9 @@ export async function _installPackage({ updateCurrentWriteIndices(esClient, logger, installedTemplates) ); - const installedTransforms = await withPackageSpan('Install transforms', () => - installTransform(packageInfo, paths, esClient, savedObjectsClient, logger) - ); + ({ esReferences } = await withPackageSpan('Install transforms', () => + installTransform(packageInfo, paths, esClient, savedObjectsClient, logger, esReferences) + )); // If this is an update or retrying an update, delete the previous version's pipelines // Top-level pipeline assets will not be removed on upgrade as of ml model package addition which requires previous @@ -171,28 +181,30 @@ export async function _installPackage({ (installType === 'update' || installType === 'reupdate') && installedPkg ) { - await withPackageSpan('Delete previous ingest pipelines', () => + esReferences = await withPackageSpan('Delete previous ingest pipelines', () => deletePreviousPipelines( esClient, savedObjectsClient, pkgName, - installedPkg.attributes.version + installedPkg!.attributes.version, + esReferences ) ); } // pipelines from a different version may have installed during a failed update if (installType === 'rollback' && installedPkg) { - await await withPackageSpan('Delete previous ingest pipelines', () => + esReferences = await withPackageSpan('Delete previous ingest pipelines', () => deletePreviousPipelines( esClient, savedObjectsClient, pkgName, - installedPkg.attributes.install_version + installedPkg!.attributes.install_version, + esReferences ) ); } - const installedTemplateRefs = getAllTemplateRefs(installedTemplates); + const installedKibanaAssetsRefs = await kibanaAssetPromise; const packageAssetResults = await withPackageSpan('Update archive entries', () => saveArchiveEntries({ savedObjectsClient, @@ -208,11 +220,9 @@ export async function _installPackage({ }) ); - // update to newly installed version when all assets are successfully installed - if (installedPkg) await updateVersion(savedObjectsClient, pkgName, pkgVersion); - const updatedPackage = await withPackageSpan('Update install status', () => savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { + version: pkgVersion, install_version: pkgVersion, install_status: 'installed', package_assets: packageAssetRefs, @@ -233,14 +243,7 @@ export async function _installPackage({ }); } - return [ - ...installedKibanaAssetsRefs, - ...installedPipelines, - ...installedDataStreamIlm, - ...installedTemplateRefs, - ...installedTransforms, - ...installedMlModel, - ]; + return [...installedKibanaAssetsRefs, ...esReferences]; } catch (err) { if (savedObjectsClient.errors.isConflictError(err)) { throw new ConcurrentInstallOperationError( diff --git a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts index c939ce093a65c..0621d05d21497 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts @@ -17,7 +17,7 @@ import type { ArchiveEntry } from '../archive'; // and different package and version structure export function getAssets( - packageInfo: PackageInfo, + packageInfo: Pick, filter = (path: string): boolean => true, datasetName?: string ): string[] { @@ -52,7 +52,7 @@ export function getAssets( // ASK: Does getAssetsData need an installSource now? // if so, should it be an Installation vs InstallablePackage or add another argument? export async function getAssetsData( - packageInfo: PackageInfo, + packageInfo: Pick, filter = (path: string): boolean => true, datasetName?: string ): Promise { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index 9ae549982399c..c7fc01c89eb06 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -17,6 +17,8 @@ import type { import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common/constants'; +import pRetry from 'p-retry'; + import { generateESIndexPatterns } from '../elasticsearch/template/template'; import type { BulkInstallPackageInfo, @@ -29,13 +31,7 @@ import { IngestManagerError, PackageOutdatedError } from '../../../errors'; import { PACKAGES_SAVED_OBJECT_TYPE, MAX_TIME_COMPLETE_INSTALL } from '../../../constants'; import type { KibanaAssetType } from '../../../types'; import { licenseService } from '../..'; -import type { - Installation, - AssetType, - EsAssetReference, - InstallType, - InstallResult, -} from '../../../types'; +import type { Installation, EsAssetReference, InstallType, InstallResult } from '../../../types'; import { appContextService } from '../../app_context'; import * as Registry from '../registry'; import { @@ -271,10 +267,13 @@ async function installPackageFromRegistry({ installType, }); - // get latest package version - const latestPackage = await Registry.fetchFindLatestPackageOrThrow(pkgName, { - ignoreConstraints, - }); + // get latest package version and requested version in parallel for performance + const [latestPackage, { paths, packageInfo }] = await Promise.all([ + Registry.fetchFindLatestPackageOrThrow(pkgName, { + ignoreConstraints, + }), + Registry.getRegistryPackage(pkgName, pkgVersion), + ]); // let the user install if using the force flag or needing to reinstall or install a previous version due to failed update const installOutOfDateVersionOk = @@ -319,9 +318,6 @@ async function installPackageFromRegistry({ ); } - // get package info - const { paths, packageInfo } = await Registry.getRegistryPackage(pkgName, pkgVersion); - if (!licenseService.hasAtLeast(packageInfo.license || 'basic')) { const err = new Error(`Requires ${packageInfo.license} license`); sendEvent({ @@ -632,22 +628,60 @@ export const saveKibanaAssetsRefs = async ( kibanaAssets: Record ) => { const assetRefs = Object.values(kibanaAssets).flat().map(toAssetReference); - await savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { - installed_kibana: assetRefs, - }); + // Because Kibana assets are installed in parallel with ES assets with refresh: false, we almost always run into an + // issue that causes a conflict error due to this issue: https://github.com/elastic/kibana/issues/126240. This is safe + // to retry constantly until it succeeds to optimize this critical user journey path as much as possible. + pRetry( + () => + savedObjectsClient.update( + PACKAGES_SAVED_OBJECT_TYPE, + pkgName, + { + installed_kibana: assetRefs, + }, + { refresh: false } + ), + { retries: 20 } // Use a number of retries higher than the number of es asset update operations + ); + return assetRefs; }; -export const saveInstalledEsRefs = async ( +/** + * Utility function for updating the installed_es field of a package + */ +export const updateEsAssetReferences = async ( savedObjectsClient: SavedObjectsClientContract, pkgName: string, - installedAssets: EsAssetReference[] -) => { - const installedPkg = await getInstallationObject({ savedObjectsClient, pkgName }); - const installedAssetsToSave = installedPkg?.attributes.installed_es.concat(installedAssets); + currentAssets: EsAssetReference[], + { + assetsToAdd = [], + assetsToRemove = [], + refresh = false, + }: { + assetsToAdd?: EsAssetReference[]; + assetsToRemove?: EsAssetReference[]; + /** + * Whether or not the update should force a refresh on the SO index. + * Defaults to `false` for faster updates, should only be `wait_for` if the update needs to be queried back from ES + * immediately. + */ + refresh?: 'wait_for' | false; + } +): Promise => { + const withAssetsRemoved = currentAssets.filter(({ type, id }) => { + if ( + assetsToRemove.some( + ({ type: removeType, id: removeId }) => removeType === type && removeId === id + ) + ) { + return false; + } + return true; + }); const deduplicatedAssets = - installedAssetsToSave?.reduce((acc, currentAsset) => { + [...withAssetsRemoved, ...assetsToAdd].reduce((acc, currentAsset) => { const foundAsset = acc.find((asset: EsAssetReference) => asset.id === currentAsset.id); if (!foundAsset) { return acc.concat([currentAsset]); @@ -656,27 +690,30 @@ export const saveInstalledEsRefs = async ( } }, [] as EsAssetReference[]) || []; - await savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { - installed_es: deduplicatedAssets, - }); - return installedAssets; -}; - -export const removeAssetTypesFromInstalledEs = async ( - savedObjectsClient: SavedObjectsClientContract, - pkgName: string, - assetTypes: AssetType[] -) => { - const installedPkg = await getInstallationObject({ savedObjectsClient, pkgName }); - const installedAssets = installedPkg?.attributes.installed_es; - if (!installedAssets?.length) return; - const installedAssetsToSave = installedAssets?.filter( - (asset) => !assetTypes.includes(asset.type) - ); + const { + attributes: { installed_es: updatedAssets }, + } = + // Because Kibana assets are installed in parallel with ES assets with refresh: false, we almost always run into an + // issue that causes a conflict error due to this issue: https://github.com/elastic/kibana/issues/126240. This is safe + // to retry constantly until it succeeds to optimize this critical user journey path as much as possible. + await pRetry( + () => + savedObjectsClient.update( + PACKAGES_SAVED_OBJECT_TYPE, + pkgName, + { + installed_es: deduplicatedAssets, + }, + { + refresh, + } + ), + // Use a lower number of retries for ES assets since they're installed in serial and can only conflict with + // the single Kibana update call. + { retries: 5 } + ); - return savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { - installed_es: installedAssetsToSave, - }); + return updatedAssets ?? []; }; export async function ensurePackagesCompletedInstall( diff --git a/x-pack/plugins/fleet/server/services/epm/packages/remove.ts b/x-pack/plugins/fleet/server/services/epm/packages/remove.ts index 7edf5b6020be8..95e65acfebef6 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/remove.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/remove.ts @@ -130,6 +130,8 @@ function deleteESAssets( return deleteTransforms(esClient, [id]); } else if (assetType === ElasticsearchAssetType.dataStreamIlmPolicy) { return deleteIlms(esClient, [id]); + } else if (assetType === ElasticsearchAssetType.ilmPolicy) { + return deleteIlms(esClient, [id]); } else if (assetType === ElasticsearchAssetType.mlModel) { return deleteMlModel(esClient, [id]); } diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts index 2ae531f63379d..1074e975d3f6f 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts @@ -152,7 +152,8 @@ export async function fetchFindLatestPackageOrUndefined( export async function fetchInfo(pkgName: string, pkgVersion: string): Promise { const registryUrl = getRegistryUrl(); try { - const res = await fetchUrl(`${registryUrl}/package/${pkgName}/${pkgVersion}`).then(JSON.parse); + // Trailing slash avoids 301 redirect / extra hop + const res = await fetchUrl(`${registryUrl}/package/${pkgName}/${pkgVersion}/`).then(JSON.parse); return res; } catch (err) { diff --git a/x-pack/plugins/graph/README.md b/x-pack/plugins/graph/README.md index a0d7eb25ff987..b17f114a8f01f 100644 --- a/x-pack/plugins/graph/README.md +++ b/x-pack/plugins/graph/README.md @@ -10,8 +10,8 @@ Graph shows only up in the side bar if your server is running on a platinum or t * Run type check `node scripts/type_check.js --project=x-pack/tsconfig.json` * Run linter `node scripts/eslint.js x-pack/plugins/graph` * Run functional tests (make sure to stop dev server) - * Server `cd x-pack && node ./scripts/functional_tests_server.js` - * Tests `cd x-pack && node ../scripts/functional_test_runner.js --config ./test/functional/config.js --grep=graph` + * Server `node ./scripts/functional_tests_server.js --config x-pack/test/functional/apps/graph/config.ts` + * Tests `node scripts/functional_test_runner.js --config x-pack/test/functional/apps/graph/config.ts` ## Folder structure diff --git a/x-pack/plugins/infra/server/lib/metrics/make_get_metric_indices.test.ts b/x-pack/plugins/infra/server/lib/metrics/make_get_metric_indices.test.ts new file mode 100644 index 0000000000000..9dedf9b5afaa0 --- /dev/null +++ b/x-pack/plugins/infra/server/lib/metrics/make_get_metric_indices.test.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 { savedObjectsClientMock } from '@kbn/core/server/mocks'; +import { defaultSourceConfiguration, InfraSource } from '../sources'; +import { createInfraSourcesMock } from '../sources/mocks'; +import { makeGetMetricIndices } from './make_get_metric_indices'; + +describe('getMetricIndices', () => { + it('should return the indices from a resolved configuration', async () => { + const sourceConfiguration: InfraSource = { + id: 'default', + origin: 'stored', + configuration: defaultSourceConfiguration, + }; + const infraSourcesMock = createInfraSourcesMock(); + infraSourcesMock.getSourceConfiguration.mockResolvedValueOnce(sourceConfiguration); + + const getMetricIndices = makeGetMetricIndices(infraSourcesMock); + + const savedObjectsClient = savedObjectsClientMock.create(); + const metricIndices = await getMetricIndices(savedObjectsClient); + + expect(metricIndices).toEqual(defaultSourceConfiguration.metricAlias); + }); +}); diff --git a/x-pack/plugins/infra/server/lib/metrics/make_get_metric_indices.ts b/x-pack/plugins/infra/server/lib/metrics/make_get_metric_indices.ts new file mode 100644 index 0000000000000..a6ff7e96a55a0 --- /dev/null +++ b/x-pack/plugins/infra/server/lib/metrics/make_get_metric_indices.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SavedObjectsClientContract } from '@kbn/core/server'; +import type { IInfraSources } from '../sources'; + +export function makeGetMetricIndices(metricSources: IInfraSources) { + return async (savedObjectsClient: SavedObjectsClientContract, sourceId: string = 'default') => { + const source = await metricSources.getSourceConfiguration(savedObjectsClient, sourceId); + return source.configuration.metricAlias; + }; +} diff --git a/x-pack/plugins/infra/server/plugin.ts b/x-pack/plugins/infra/server/plugin.ts index 8eb2bac57dc56..bfd7113ec4dc0 100644 --- a/x-pack/plugins/infra/server/plugin.ts +++ b/x-pack/plugins/infra/server/plugin.ts @@ -7,8 +7,6 @@ import { Server } from '@hapi/hapi'; import { schema } from '@kbn/config-schema'; -import { i18n } from '@kbn/i18n'; -import { Logger } from '@kbn/logging'; import { CoreStart, Plugin, @@ -16,6 +14,8 @@ import { PluginInitializerContext, } from '@kbn/core/server'; import { handleEsError } from '@kbn/es-ui-shared-plugin/server'; +import { i18n } from '@kbn/i18n'; +import { Logger } from '@kbn/logging'; import { LOGS_FEATURE_ID, METRICS_FEATURE_ID } from '../common/constants'; import { defaultLogViewsStaticConfig } from '../common/log_views'; import { publicConfigKeys } from '../common/plugin_config_types'; @@ -35,6 +35,7 @@ import { InfraFieldsDomain } from './lib/domains/fields_domain'; import { InfraLogEntriesDomain } from './lib/domains/log_entries_domain'; import { InfraMetricsDomain } from './lib/domains/metrics_domain'; import { InfraBackendLibs, InfraDomainLibs } from './lib/infra_types'; +import { makeGetMetricIndices } from './lib/metrics/make_get_metric_indices'; import { infraSourceConfigurationSavedObjectType, InfraSources } from './lib/sources'; import { InfraSourceStatus } from './lib/source_status'; import { logViewSavedObjectType } from './saved_objects'; @@ -236,6 +237,7 @@ export class InfraServerPlugin return { logViews, + getMetricIndices: makeGetMetricIndices(this.libs.sources), }; } diff --git a/x-pack/plugins/infra/server/types.ts b/x-pack/plugins/infra/server/types.ts index e3792c8977cfe..108575c0f8324 100644 --- a/x-pack/plugins/infra/server/types.ts +++ b/x-pack/plugins/infra/server/types.ts @@ -5,7 +5,11 @@ * 2.0. */ -import type { CoreSetup, CustomRequestHandlerContext } from '@kbn/core/server'; +import type { + CoreSetup, + CustomRequestHandlerContext, + SavedObjectsClientContract, +} from '@kbn/core/server'; import type { SearchRequestHandlerContext } from '@kbn/data-plugin/server'; import type { MlPluginSetup } from '@kbn/ml-plugin/server'; import type { InfraStaticSourceConfiguration } from '../common/source_configuration/source_configuration'; @@ -27,6 +31,10 @@ export interface InfraPluginSetup { export interface InfraPluginStart { logViews: LogViewsServiceStart; + getMetricIndices: ( + savedObjectsClient: SavedObjectsClientContract, + sourceId?: string + ) => Promise; } export type MlSystem = ReturnType; diff --git a/x-pack/plugins/lens/common/embeddable_factory/index.ts b/x-pack/plugins/lens/common/embeddable_factory/index.ts index c4b03ae280778..8ddddf654b017 100644 --- a/x-pack/plugins/lens/common/embeddable_factory/index.ts +++ b/x-pack/plugins/lens/common/embeddable_factory/index.ts @@ -7,9 +7,10 @@ import { SerializableRecord, Serializable } from '@kbn/utility-types'; import { SavedObjectReference } from '@kbn/core/types'; -import { EmbeddableStateWithType } from '@kbn/embeddable-plugin/common'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { EmbeddableRegistryDefinition } from '@kbn/embeddable-plugin/server'; +import type { + EmbeddableStateWithType, + EmbeddableRegistryDefinition, +} from '@kbn/embeddable-plugin/common'; export type LensEmbeddablePersistableState = EmbeddableStateWithType & { attributes: SerializableRecord; diff --git a/x-pack/plugins/lens/common/expressions/counter_rate/counter_rate.test.ts b/x-pack/plugins/lens/common/expressions/counter_rate/counter_rate.test.ts index 32a37e0cf949e..9f19b5d052c68 100644 --- a/x-pack/plugins/lens/common/expressions/counter_rate/counter_rate.test.ts +++ b/x-pack/plugins/lens/common/expressions/counter_rate/counter_rate.test.ts @@ -7,8 +7,7 @@ import { counterRate, CounterRateArgs } from '.'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { Datatable } from '@kbn/expressions-plugin/public'; +import { Datatable } from '@kbn/expressions-plugin/common'; import { functionWrapper } from '@kbn/expressions-plugin/common/expression_functions/specs/tests/utils'; describe('lens_counter_rate', () => { diff --git a/x-pack/plugins/lens/common/expressions/format_column/format_column.test.ts b/x-pack/plugins/lens/common/expressions/format_column/format_column.test.ts index 63e32ffbf1df6..d0db49f4afaae 100644 --- a/x-pack/plugins/lens/common/expressions/format_column/format_column.test.ts +++ b/x-pack/plugins/lens/common/expressions/format_column/format_column.test.ts @@ -5,8 +5,7 @@ * 2.0. */ -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { Datatable, DatatableColumn } from '@kbn/expressions-plugin/public'; +import type { Datatable, DatatableColumn } from '@kbn/expressions-plugin/common'; import { functionWrapper } from '@kbn/expressions-plugin/common/expression_functions/specs/tests/utils'; import { formatColumn } from '.'; diff --git a/x-pack/plugins/lens/common/expressions/merge_tables/merge_tables.test.ts b/x-pack/plugins/lens/common/expressions/merge_tables/merge_tables.test.ts index 4c8a3bf9aa310..4558bdfe68661 100644 --- a/x-pack/plugins/lens/common/expressions/merge_tables/merge_tables.test.ts +++ b/x-pack/plugins/lens/common/expressions/merge_tables/merge_tables.test.ts @@ -7,8 +7,7 @@ import moment from 'moment'; import { mergeTables } from '.'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ExpressionValueSearchContext } from '@kbn/data-plugin/public'; +import type { ExpressionValueSearchContext } from '@kbn/data-plugin/common'; import { Datatable, ExecutionContext, diff --git a/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts b/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts index dd3e18c720c0a..e7fdd720d075c 100644 --- a/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts +++ b/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts @@ -6,10 +6,8 @@ */ import moment from 'moment'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import type { Datatable } from '@kbn/expressions-plugin/public'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import type { TimeRange } from '@kbn/data-plugin/public'; +import type { Datatable } from '@kbn/expressions-plugin/common'; +import type { TimeRange } from '@kbn/data-plugin/common'; import { functionWrapper } from '@kbn/expressions-plugin/common/expression_functions/specs/tests/utils'; // mock the specific inner variable: diff --git a/x-pack/plugins/lens/common/types.ts b/x-pack/plugins/lens/common/types.ts index f4111d51e2918..f85c8ba88a076 100644 --- a/x-pack/plugins/lens/common/types.ts +++ b/x-pack/plugins/lens/common/types.ts @@ -57,8 +57,7 @@ export type CustomPaletteParamsConfig = CustomPaletteParams & { export type LayerType = typeof layerTypes[keyof typeof layerTypes]; -// Shared by XY Chart and Heatmap as for now -export type ValueLabelConfig = 'hide' | 'inside' | 'outside'; +export type ValueLabelConfig = 'hide' | 'show'; export type PieChartType = $Values; export type CategoryDisplayType = $Values; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx index e404faacb8f97..c577bf89d6bd1 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx @@ -145,8 +145,6 @@ export function LayerPanel( const isEmptyLayer = !groups.some((d) => d.accessors.length > 0); const { activeId, activeGroup } = activeDimension; - const { setDimension, removeDimension } = activeVisualization; - const allAccessors = groups.flatMap((group) => group.accessors.map((accessor) => accessor.columnId) ); @@ -209,7 +207,7 @@ export function LayerPanel( previousColumn = typeof dropResult === 'object' ? dropResult.deleted : undefined; } } - const newVisState = setDimension({ + const newVisState = activeVisualization.setDimension({ columnId, groupId, layerId: targetLayerId, @@ -221,7 +219,7 @@ export function LayerPanel( if (typeof dropResult === 'object') { // When a column is moved, we delete the reference to the old updateVisualization( - removeDimension({ + activeVisualization.removeDimension({ columnId: dropResult.deleted, layerId: targetLayerId, prevState: newVisState, @@ -234,7 +232,7 @@ export function LayerPanel( } } else { if (dropType === 'duplicate_compatible' || dropType === 'reorder') { - const newVisState = setDimension({ + const newVisState = activeVisualization.setDimension({ columnId, groupId, layerId: targetLayerId, @@ -247,16 +245,15 @@ export function LayerPanel( } }; }, [ - framePublicAPI, + layerDatasource, + setNextFocusedButtonId, groups, layerDatasourceOnDrop, + layerDatasourceDropProps, + activeVisualization, props.visualizationState, + framePublicAPI, updateVisualization, - setDimension, - removeDimension, - layerDatasourceDropProps, - setNextFocusedButtonId, - layerDatasource, ]); const isDimensionPanelOpen = Boolean(activeId); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/expression_helpers.ts b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/expression_helpers.ts index cecf75cd58676..b5fa32cd8e306 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/expression_helpers.ts +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/expression_helpers.ts @@ -9,11 +9,10 @@ import { Ast, AstFunction, fromExpression } from '@kbn/interpreter'; import { DatasourceStates } from '../../state_management'; import { Visualization, DatasourceMap, DatasourceLayers } from '../../types'; -export function prependDatasourceExpression( - visualizationExpression: Ast | string | null, +export function getDatasourceExpressionsByLayers( datasourceMap: DatasourceMap, datasourceStates: DatasourceStates -): Ast | null { +): null | Record { const datasourceExpressions: Array<[string, Ast | string]> = []; Object.entries(datasourceMap).forEach(([datasourceId, datasource]) => { @@ -28,19 +27,41 @@ export function prependDatasourceExpression( }); }); - if (datasourceExpressions.length === 0 || visualizationExpression === null) { + if (datasourceExpressions.length === 0) { return null; } - const parsedDatasourceExpressions: Array<[string, Ast]> = datasourceExpressions.map( - ([layerId, expr]) => [layerId, typeof expr === 'string' ? fromExpression(expr) : expr] + + return datasourceExpressions.reduce( + (exprs, [layerId, expr]) => ({ + ...exprs, + [layerId]: typeof expr === 'string' ? fromExpression(expr) : expr, + }), + {} ); +} + +export function prependDatasourceExpression( + visualizationExpression: Ast | string | null, + datasourceMap: DatasourceMap, + datasourceStates: DatasourceStates +): Ast | null { + const datasourceExpressionsByLayers = getDatasourceExpressionsByLayers( + datasourceMap, + datasourceStates + ); + + if (datasourceExpressionsByLayers === null || visualizationExpression === null) { + return null; + } + + const parsedDatasourceExpressions = Object.entries(datasourceExpressionsByLayers); const datafetchExpression: AstFunction = { type: 'function', function: 'lens_merge_tables', arguments: { layerIds: parsedDatasourceExpressions.map(([id]) => id), - tables: parsedDatasourceExpressions.map(([id, expr]) => expr), + tables: parsedDatasourceExpressions.map(([, expr]) => expr), }, }; @@ -79,16 +100,32 @@ export function buildExpression({ if (visualization === null) { return null; } + + if (visualization.shouldBuildDatasourceExpressionManually?.()) { + const datasourceExpressionsByLayers = getDatasourceExpressionsByLayers( + datasourceMap, + datasourceStates + ); + + const visualizationExpression = visualization.toExpression( + visualizationState, + datasourceLayers, + { + title, + description, + }, + datasourceExpressionsByLayers ?? undefined + ); + + return typeof visualizationExpression === 'string' + ? fromExpression(visualizationExpression) + : visualizationExpression; + } + const visualizationExpression = visualization.toExpression(visualizationState, datasourceLayers, { title, description, }); - const completeExpression = prependDatasourceExpression( - visualizationExpression, - datasourceMap, - datasourceStates - ); - - return completeExpression; + return prependDatasourceExpression(visualizationExpression, datasourceMap, datasourceStates); } diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx index 770d25be5388f..dc36e0a671cf0 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx @@ -22,7 +22,7 @@ import { EuiText, } from '@elastic/eui'; import { IconType } from '@elastic/eui/src/components/icon/icon'; -import { Ast, toExpression } from '@kbn/interpreter'; +import { Ast, fromExpression, toExpression } from '@kbn/interpreter'; import { i18n } from '@kbn/i18n'; import classNames from 'classnames'; import { ExecutionContextSearch } from '@kbn/data-plugin/public'; @@ -39,7 +39,10 @@ import { DatasourceLayers, } from '../../types'; import { getSuggestions, switchToSuggestion } from './suggestion_helpers'; -import { prependDatasourceExpression } from './expression_helpers'; +import { + getDatasourceExpressionsByLayers, + prependDatasourceExpression, +} from './expression_helpers'; import { trackUiEvent, trackSuggestionEvent } from '../../lens_ui_telemetry'; import { getMissingIndexPattern, @@ -485,6 +488,7 @@ function getPreviewExpression( visualizableState: VisualizableState, visualization: Visualization, datasources: Record, + datasourceStates: DatasourceStates, frame: FramePublicAPI ) { if (!visualization.toPreviewExpression) { @@ -518,6 +522,19 @@ function getPreviewExpression( }); } + if (visualization.shouldBuildDatasourceExpressionManually?.()) { + const datasourceExpressionsByLayers = getDatasourceExpressionsByLayers( + datasources, + datasourceStates + ); + + return visualization.toPreviewExpression( + visualizableState.visualizationState, + suggestionFrameApi.datasourceLayers, + datasourceExpressionsByLayers ?? undefined + ); + } + return visualization.toPreviewExpression( visualizableState.visualizationState, suggestionFrameApi.datasourceLayers @@ -534,10 +551,25 @@ function preparePreviewExpression( const suggestionDatasourceId = visualizableState.datasourceId; const suggestionDatasourceState = visualizableState.datasourceState; + const datasourceStatesWithSuggestions = suggestionDatasourceId + ? { + ...datasourceStates, + [suggestionDatasourceId]: { + isLoading: false, + state: suggestionDatasourceState, + }, + } + : datasourceStates; + + const previewExprDatasourcesStates = visualization.shouldBuildDatasourceExpressionManually?.() + ? datasourceStatesWithSuggestions + : datasourceStates; + const expression = getPreviewExpression( visualizableState, visualization, datasourceMap, + previewExprDatasourcesStates, framePublicAPI ); @@ -545,19 +577,9 @@ function preparePreviewExpression( return; } - const expressionWithDatasource = prependDatasourceExpression( - expression, - datasourceMap, - suggestionDatasourceId - ? { - ...datasourceStates, - [suggestionDatasourceId]: { - isLoading: false, - state: suggestionDatasourceState, - }, - } - : datasourceStates - ); + if (visualization.shouldBuildDatasourceExpressionManually?.()) { + return typeof expression === 'string' ? fromExpression(expression) : expression; + } - return expressionWithDatasource; + return prependDatasourceExpression(expression, datasourceMap, datasourceStatesWithSuggestions); } diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx index fe26e635542aa..56a24458bbdc0 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx @@ -348,6 +348,7 @@ export class Embeddable if (!this.savedVis || !this.savedVis.visualizationType) { return []; } + return this.deps.visualizationMap[this.savedVis.visualizationType]?.triggers || []; } @@ -458,6 +459,7 @@ export class Embeddable this.embeddableTitle = this.getTitle(); isDirty = true; } + return isDirty; } @@ -529,6 +531,7 @@ export class Embeddable interactive={!input.disableTriggers} renderMode={input.renderMode} syncColors={input.syncColors} + syncTooltips={input.syncTooltips} hasCompatibleActions={this.hasCompatibleActions} className={input.className} style={input.style} diff --git a/x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx b/x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx index c2b9d1d2dbb31..27094d154efd2 100644 --- a/x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx +++ b/x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx @@ -38,6 +38,7 @@ export interface ExpressionWrapperProps { onRender$: () => void; renderMode?: RenderMode; syncColors?: boolean; + syncTooltips?: boolean; hasCompatibleActions?: ReactExpressionRendererProps['hasCompatibleActions']; style?: React.CSSProperties; className?: string; @@ -110,6 +111,7 @@ export function ExpressionWrapper({ onRender$, renderMode, syncColors, + syncTooltips, hasCompatibleActions, style, className, @@ -138,6 +140,7 @@ export function ExpressionWrapper({ inspectorAdapters={lensInspector.adapters} renderMode={renderMode} syncColors={syncColors} + syncTooltips={syncTooltips} executionContext={executionContext} renderError={(errorMessage, error) => { onRuntimeError(); diff --git a/x-pack/plugins/lens/public/heatmap_visualization/toolbar_component.tsx b/x-pack/plugins/lens/public/heatmap_visualization/toolbar_component.tsx index cb6e6e030eaac..a8d94b743adf8 100644 --- a/x-pack/plugins/lens/public/heatmap_visualization/toolbar_component.tsx +++ b/x-pack/plugins/lens/public/heatmap_visualization/toolbar_component.tsx @@ -62,11 +62,11 @@ export const HeatmapToolbar = memo( buttonDataTestSubj="lnsVisualOptionsButton" > { setState({ ...state, - gridConfig: { ...state.gridConfig, isCellLabelVisible: newMode === 'inside' }, + gridConfig: { ...state.gridConfig, isCellLabelVisible: newMode === 'show' }, }); }} /> diff --git a/x-pack/plugins/lens/public/index.ts b/x-pack/plugins/lens/public/index.ts index 942df72957fc7..b8d00e7ff61b8 100644 --- a/x-pack/plugins/lens/public/index.ts +++ b/x-pack/plugins/lens/public/index.ts @@ -15,6 +15,7 @@ export type { XYState, XYReferenceLineLayerConfig, XYLayerConfig, + ValidLayer, XYDataLayerConfig, XYAnnotationLayerConfig, } from './xy_visualization/types'; @@ -70,7 +71,7 @@ export type { } from './indexpattern_datasource/types'; export type { XYArgs, - YConfig, + ExtendedYConfig, XYRender, LayerType, YAxisMode, @@ -80,28 +81,27 @@ export type { YScaleType, XScaleType, AxisConfig, - ValidLayer, XYCurveType, XYChartProps, LegendConfig, IconPosition, - YConfigResult, + ExtendedYConfigResult, DataLayerArgs, LensMultiTable, ValueLabelMode, AxisExtentMode, + DataLayerConfig, FittingFunction, AxisExtentConfig, LegendConfigResult, AxesSettingsConfig, GridlinesConfigResult, - DataLayerConfigResult, TickLabelsConfigResult, AxisExtentConfigResult, ReferenceLineLayerArgs, LabelsOrientationConfig, + ReferenceLineLayerConfig, LabelsOrientationConfigResult, - ReferenceLineLayerConfigResult, AxisTitlesVisibilityConfigResult, } from '@kbn/expression-xy-plugin/common'; export type { LensEmbeddableInput } from './embeddable'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx index 3ab3633725678..7f21cf21000b1 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx @@ -635,7 +635,7 @@ describe('IndexPatternDimensionEditorPanel', () => { act(() => { wrapper - .find('input[data-test-subj="indexPattern-label-edit"]') + .find('input[data-test-subj="column-label-edit"]') .simulate('change', { target: { value: 'New Label' } }); }); @@ -739,7 +739,7 @@ describe('IndexPatternDimensionEditorPanel', () => { act(() => { wrapper - .find('input[data-test-subj="indexPattern-label-edit"]') + .find('input[data-test-subj="column-label-edit"]') .simulate('change', { target: { value: 'Sum of bytes' } }); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx index b72519c2191be..bfa28b1d1c1ae 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx @@ -235,6 +235,7 @@ export function getIndexPatternDatasource({ if (staticValue == null) { return state; } + return mergeLayer({ state, layerId, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.test.tsx index d4491fbba00cf..e1e5f39a8cc48 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import type { DateHistogramIndexPatternColumn } from './date_histogram'; import { dateHistogramOperation } from '.'; -import { shallow } from 'enzyme'; +import { mount, shallow } from 'enzyme'; import { EuiSwitch } from '@elastic/eui'; import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; import type { IUiSettingsClient, SavedObjectsClientContract, HttpSetup } from '@kbn/core/public'; @@ -18,6 +18,7 @@ import { dataPluginMock, getCalculateAutoTimeExpression } from '@kbn/data-plugin import { createMockedIndexPattern } from '../../mocks'; import type { IndexPatternLayer, IndexPattern } from '../../types'; import { getFieldByNameFactory } from '../../pure_helpers'; +import { act } from 'react-dom/test-utils'; const dataStart = dataPluginMock.createStartContract(); const unifiedSearchStart = unifiedSearchPluginMock.createStartContract(); @@ -312,8 +313,9 @@ describe('date_histogram', () => { /> ); - expect(instance.find('[data-test-subj="lensDateHistogramValue"]').prop('value')).toEqual(42); - expect(instance.find('[data-test-subj="lensDateHistogramUnit"]').prop('value')).toEqual('w'); + expect( + instance.find('[data-test-subj="lensDateHistogramInterval"]').prop('selectedOptions') + ).toEqual([expect.objectContaining({ label: '42w' })]); }); it('should render current value for other index pattern', () => { @@ -348,11 +350,12 @@ describe('date_histogram', () => { /> ); - expect(instance.find('[data-test-subj="lensDateHistogramValue"]').prop('value')).toEqual(''); - expect(instance.find('[data-test-subj="lensDateHistogramUnit"]').prop('value')).toEqual('d'); + expect( + instance.find('[data-test-subj="lensDateHistogramInterval"]').prop('selectedOptions') + ).toEqual([expect.objectContaining({ key: 'd' })]); }); - it('should render disabled switch and no time interval control for auto interval', () => { + it('should render time interval control set to auto for auto interval', () => { const thirdLayer: IndexPatternLayer = { indexPatternId: '1', columnOrder: ['col1'], @@ -382,9 +385,9 @@ describe('date_histogram', () => { indexPattern={indexPattern1} /> ); - expect(instance.find('[data-test-subj="lensDateHistogramValue"]').exists()).toBeFalsy(); - expect(instance.find('[data-test-subj="lensDateHistogramUnit"]').exists()).toBeFalsy(); - expect(instance.find(EuiSwitch).at(1).prop('checked')).toBe(false); + expect( + instance.find('[data-test-subj="lensDateHistogramInterval"]').prop('selectedOptions') + ).toEqual([expect.objectContaining({ key: 'auto' })]); }); it('should allow switching to manual interval', () => { @@ -461,7 +464,7 @@ describe('date_histogram', () => { ); instance .find(EuiSwitch) - .at(2) + .at(1) .simulate('change', { target: { checked: false }, }); @@ -502,16 +505,14 @@ describe('date_histogram', () => { indexPattern={{ ...indexPattern1, timeFieldName: undefined }} /> ); - instance - .find(EuiSwitch) - .at(1) - .simulate('change', { - target: { checked: false }, - }); + ( + instance + .find('[data-test-subj="lensDateHistogramInterval"]') + .prop('onChange') as unknown as (v: Array<{ key: string }>) => void + )([{ key: 'auto' }]); expect(updateLayerSpy).toHaveBeenCalled(); const newLayer = updateLayerSpy.mock.calls[0][0]; expect(newLayer).toHaveProperty('columns.col1.params.ignoreTimeRange', false); - expect(newLayer).toHaveProperty('columns.col1.params.interval', 'auto'); }); it('turns off drop partial bucket on tuning off time range ignore', () => { @@ -560,12 +561,14 @@ describe('date_histogram', () => { currentColumn={layer.columns.col1 as DateHistogramIndexPatternColumn} /> ); - instance.find('[data-test-subj="lensDateHistogramValue"]').simulate('change', { - target: { - value: '2', - }, - }); - expect(updateLayerSpy).toHaveBeenCalledWith(layerWithInterval('1w')); + ( + instance.find('[data-test-subj="lensDateHistogramInterval"]').prop('onCreateOption') as ( + s: string + ) => void + )('2w'); + expect( + instance.find('[data-test-subj="lensDateHistogramInterval"]').prop('isInvalid') + ).toBeTruthy(); }); it('should display error if an invalid interval is specified', () => { @@ -580,7 +583,9 @@ describe('date_histogram', () => { currentColumn={testLayer.columns.col1 as DateHistogramIndexPatternColumn} /> ); - expect(instance.find('[data-test-subj="lensDateHistogramError"]').exists()).toBeTruthy(); + expect( + instance.find('[data-test-subj="lensDateHistogramInterval"]').prop('isInvalid') + ).toBeTruthy(); }); it('should not display error if interval value is blank', () => { @@ -595,7 +600,9 @@ describe('date_histogram', () => { currentColumn={testLayer.columns.col1 as DateHistogramIndexPatternColumn} /> ); - expect(instance.find('[data-test-subj="lensDateHistogramError"]').exists()).toBeFalsy(); + expect( + instance.find('[data-test-subj="lensDateHistogramInterval"]').prop('isInvalid') + ).toBeFalsy(); }); it('should display error if interval value is 0', () => { @@ -610,12 +617,14 @@ describe('date_histogram', () => { currentColumn={testLayer.columns.col1 as DateHistogramIndexPatternColumn} /> ); - expect(instance.find('[data-test-subj="lensDateHistogramError"]').exists()).toBeTruthy(); + expect( + instance.find('[data-test-subj="lensDateHistogramInterval"]').prop('isInvalid') + ).toBeTruthy(); }); - it('should update the unit', () => { + it('should update the unit', async () => { const updateLayerSpy = jest.fn(); - const instance = shallow( + const instance = mount( { currentColumn={layer.columns.col1 as DateHistogramIndexPatternColumn} /> ); - instance.find('[data-test-subj="lensDateHistogramUnit"]').simulate('change', { - target: { - value: 'd', - }, + act(() => { + ( + instance + .find('[data-test-subj="lensDateHistogramInterval"]') + .at(0) + .prop('onCreateOption') as (s: string) => void + )('42d'); }); - expect(updateLayerSpy).toHaveBeenCalledWith(layerWithInterval('42d')); + expect(updateLayerSpy.mock.calls[0][0](layer)).toEqual(layerWithInterval('42d')); }); it('should update the value', () => { const updateLayerSpy = jest.fn(); const testLayer = layerWithInterval('42d'); - const instance = shallow( + const instance = mount( { currentColumn={testLayer.columns.col1 as DateHistogramIndexPatternColumn} /> ); - instance.find('[data-test-subj="lensDateHistogramValue"]').simulate('change', { - target: { - value: '9', - }, - }); - expect(updateLayerSpy).toHaveBeenCalledWith(layerWithInterval('9d')); + act(() => + ( + instance + .find('[data-test-subj="lensDateHistogramInterval"]') + .at(0) + .prop('onCreateOption') as (s: string) => void + )('9d') + ); + expect(updateLayerSpy.mock.calls[0][0](layer)).toEqual(layerWithInterval('9d')); }); it('should not render options if they are restricted', () => { @@ -695,7 +710,7 @@ describe('date_histogram', () => { /> ); - expect(instance.find('[data-test-subj="lensDateHistogramValue"]').exists()).toBeFalsy(); + expect(instance.find('[data-test-subj="lensDateHistogramInterval"]').exists()).toBeFalsy(); }); it('should allow the drop of partial buckets', () => { @@ -735,7 +750,7 @@ describe('date_histogram', () => { target: { checked: true }, }); expect(updateLayerSpy).toHaveBeenCalled(); - const newLayer = updateLayerSpy.mock.calls[0][0]; + const newLayer = updateLayerSpy.mock.calls[0][0](layer); expect(newLayer).toHaveProperty('columns.col1.params.dropPartials', true); }); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx index 56b82dc03101c..3b6d75879640d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx @@ -5,31 +5,27 @@ * 2.0. */ -import React, { useCallback } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiBasicTable, EuiCode, - EuiFieldNumber, - EuiFlexGroup, - EuiFlexItem, + EuiComboBox, EuiFormRow, EuiIconTip, - EuiSelect, - EuiSpacer, EuiSwitch, EuiSwitchEvent, - EuiTextColor, } from '@elastic/eui'; import { AggFunctionsMapping, + AggParamOption, IndexPatternAggRestrictions, search, UI_SETTINGS, } from '@kbn/data-plugin/public'; -import { extendedBoundsToAst } from '@kbn/data-plugin/common'; +import { extendedBoundsToAst, intervalOptions } from '@kbn/data-plugin/common'; import { buildExpressionFunction } from '@kbn/expressions-plugin/public'; import { updateColumnParam } from '../layer_helpers'; import { OperationDefinition, ParamEditorProps } from '.'; @@ -184,54 +180,81 @@ export const dateHistogramOperation: OperationDefinition< const intervalIsRestricted = field!.aggregationRestrictions && field!.aggregationRestrictions.date_histogram; - const interval = parseInterval(currentColumn.params.interval); + const [intervalInput, setIntervalInput] = useState(currentColumn.params.interval); + const interval = intervalInput === autoInterval ? autoInterval : parseInterval(intervalInput); // We force the interval value to 1 if it's empty, since that is the ES behavior, // and the isValidInterval function doesn't handle the empty case properly. Fixing // isValidInterval involves breaking changes in other areas. - const isValid = isValidInterval( - `${interval.value === '' ? '1' : interval.value}${interval.unit}`, - restrictedInterval(field!.aggregationRestrictions) - ); + const isValid = + (!currentColumn.params.ignoreTimeRange && intervalInput === autoInterval) || + (interval !== autoInterval && + intervalInput !== '' && + isValidInterval( + `${interval.value === '' ? '1' : interval.value}${interval.unit}`, + restrictedInterval(field!.aggregationRestrictions) + )); - const onChangeAutoInterval = useCallback( + const onChangeDropPartialBuckets = useCallback( (ev: EuiSwitchEvent) => { - const { fromDate, toDate } = dateRange; - const value = ev.target.checked - ? data.search.aggs.calculateAutoTimeExpression({ from: fromDate, to: toDate }) || '1h' - : autoInterval; - updateLayer( + updateLayer((newLayer) => updateColumnParam({ - layer: updateColumnParam({ layer, columnId, paramName: 'interval', value }), + layer: newLayer, columnId, - paramName: 'ignoreTimeRange', - value: false, + paramName: 'dropPartials', + value: ev.target.checked, }) ); }, - [dateRange, data.search.aggs, updateLayer, layer, columnId] + [columnId, updateLayer] ); - const onChangeDropPartialBuckets = useCallback( - (ev: EuiSwitchEvent) => { - updateLayer( - updateColumnParam({ - layer, - columnId, - paramName: 'dropPartials', - value: ev.target.checked, - }) + const setInterval = useCallback( + (newInterval: typeof interval) => { + const isCalendarInterval = + newInterval !== autoInterval && calendarOnlyIntervals.has(newInterval.unit); + const value = + newInterval === autoInterval + ? autoInterval + : `${isCalendarInterval ? '1' : newInterval.value}${newInterval.unit || 'd'}`; + + updateLayer((newLayer) => + updateColumnParam({ layer: newLayer, columnId, paramName: 'interval', value }) ); }, - [columnId, layer, updateLayer] + [columnId, updateLayer] ); - const setInterval = (newInterval: typeof interval) => { - const isCalendarInterval = calendarOnlyIntervals.has(newInterval.unit); - const value = `${isCalendarInterval ? '1' : newInterval.value}${newInterval.unit || 'd'}`; + const options = (intervalOptions || []) + .filter((option) => option.val !== autoInterval) + .map((option: AggParamOption) => { + return { label: option.display, key: option.val }; + }, []); - updateLayer(updateColumnParam({ layer, columnId, paramName: 'interval', value })); - }; + options.unshift({ + label: i18n.translate('xpack.lens.indexPattern.autoIntervalLabel', { + defaultMessage: 'Auto ({interval})', + values: { + interval: + data.search.aggs.calculateAutoTimeExpression({ + from: dateRange.fromDate, + to: dateRange.toDate, + }) || '1h', + }, + }), + key: autoInterval, + }); + + const definedOption = options.find((o) => o.key === intervalInput); + const selectedOptions = definedOption + ? [definedOption] + : [{ label: intervalInput, key: intervalInput }]; + + useEffect(() => { + if (isValid && intervalInput !== currentColumn.params.interval) { + setInterval(parseInterval(intervalInput)); + } + }, [intervalInput, isValid, currentColumn.params.interval, setInterval]); const bindToGlobalTimePickerValue = indexPattern.timeFieldName === field?.name || !currentColumn.params.ignoreTimeRange; @@ -260,187 +283,122 @@ export const dateHistogramOperation: OperationDefinition< /> - {!intervalIsRestricted && ( - - + {intervalIsRestricted ? ( + - - )} - {currentColumn.params.interval !== autoInterval && ( - <> - - {intervalIsRestricted ? ( - - ) : ( - <> - - - { - const newInterval = { - ...interval, - value: e.target.value, - }; - setInterval(newInterval); - }} - step={1} - /> - - - { - const newInterval = { - ...interval, - unit: e.target.value, - }; - setInterval(newInterval); - }} - isInvalid={!isValid} - options={[ - { - value: 'ms', - text: i18n.translate( - 'xpack.lens.indexPattern.dateHistogram.milliseconds', - { - defaultMessage: 'milliseconds', - } - ), - }, - { - value: 's', - text: i18n.translate('xpack.lens.indexPattern.dateHistogram.seconds', { - defaultMessage: 'seconds', - }), - }, - { - value: 'm', - text: i18n.translate('xpack.lens.indexPattern.dateHistogram.minutes', { - defaultMessage: 'minutes', - }), - }, - { - value: 'h', - text: i18n.translate('xpack.lens.indexPattern.dateHistogram.hours', { - defaultMessage: 'hours', - }), - }, - { - value: 'd', - text: i18n.translate('xpack.lens.indexPattern.dateHistogram.days', { - defaultMessage: 'days', - }), - }, - { - value: 'w', - text: i18n.translate('xpack.lens.indexPattern.dateHistogram.week', { - defaultMessage: 'week', - }), - }, - { - value: 'M', - text: i18n.translate('xpack.lens.indexPattern.dateHistogram.month', { - defaultMessage: 'month', - }), - }, - // Quarterly intervals appear to be unsupported by esaggs - { - value: 'y', - text: i18n.translate('xpack.lens.indexPattern.dateHistogram.year', { - defaultMessage: 'year', - }), - }, - ]} - /> - - - {!isValid && ( - <> - - - {i18n.translate('xpack.lens.indexPattern.invalidInterval', { - defaultMessage: 'Invalid interval value', - })} - - - )} - - )} - - - - {i18n.translate( - 'xpack.lens.indexPattern.dateHistogram.bindToGlobalTimePicker', - { - defaultMessage: 'Bind to global time picker', - } - )}{' '} - - - } - disabled={indexPattern.timeFieldName === field?.name} - checked={bindToGlobalTimePickerValue} - onChange={() => { + ) : ( + { + const newValue = opts.length ? opts[0].key! : ''; + setIntervalInput(newValue); + if (newValue === autoInterval && currentColumn.params.ignoreTimeRange) { updateLayer( updateColumnParam({ layer, columnId, paramName: 'ignoreTimeRange', - value: !currentColumn.params.ignoreTimeRange, + value: false, }) ); - }} - compressed - /> - - - )} + } + }} + onCreateOption={(customValue: string) => setIntervalInput(customValue.trim())} + options={options} + selectedOptions={selectedOptions} + singleSelection={{ asPlainText: true }} + placeholder={i18n.translate( + 'xpack.lens.indexPattern.dateHistogram.selectIntervalPlaceholder', + { + defaultMessage: 'Select an interval', + } + )} + /> + )} + + + + {i18n.translate('xpack.lens.indexPattern.dateHistogram.bindToGlobalTimePicker', { + defaultMessage: 'Bind to global time picker', + })}{' '} + + + } + disabled={indexPattern.timeFieldName === field?.name} + checked={bindToGlobalTimePickerValue} + onChange={() => { + let newLayer = updateColumnParam({ + layer, + columnId, + paramName: 'ignoreTimeRange', + value: !currentColumn.params.ignoreTimeRange, + }); + if ( + !currentColumn.params.ignoreTimeRange && + currentColumn.params.interval === autoInterval + ) { + const newFixedInterval = + data.search.aggs.calculateAutoTimeExpression({ + from: dateRange.fromDate, + to: dateRange.toDate, + }) || '1h'; + newLayer = updateColumnParam({ + layer: newLayer, + columnId, + paramName: 'interval', + value: newFixedInterval, + }); + setIntervalInput(newFixedInterval); + } + updateLayer(newLayer); + }} + compressed + /> + ; export const createMockFramePublicAPI = (): FrameMock => ({ datasourceLayers: {}, - dateRange: { fromDate: 'now-7d', toDate: 'now' }, + dateRange: { fromDate: '2022-03-17T08:25:00.000Z', toDate: '2022-04-17T08:25:00.000Z' }, }); export type FrameDatasourceMock = jest.Mocked; export const createMockFrameDatasourceAPI = (): FrameDatasourceMock => ({ datasourceLayers: {}, - dateRange: { fromDate: 'now-7d', toDate: 'now' }, + dateRange: { fromDate: '2022-03-17T08:25:00.000Z', toDate: '2022-04-17T08:25:00.000Z' }, query: { query: '', language: 'lucene' }, filters: [], }); diff --git a/x-pack/plugins/lens/public/shared_components/legend_location_settings.tsx b/x-pack/plugins/lens/public/shared_components/legend_location_settings.tsx index 7372b727268bd..5e4ef239b4295 100644 --- a/x-pack/plugins/lens/public/shared_components/legend_location_settings.tsx +++ b/x-pack/plugins/lens/public/shared_components/legend_location_settings.tsx @@ -30,11 +30,11 @@ export interface LegendLocationSettingsProps { /** * Sets the vertical alignment for legend inside chart */ - verticalAlignment?: VerticalAlignment; + verticalAlignment?: typeof VerticalAlignment.Top | typeof VerticalAlignment.Bottom; /** * Sets the vertical alignment for legend inside chart */ - horizontalAlignment?: HorizontalAlignment; + horizontalAlignment?: typeof HorizontalAlignment.Left | typeof HorizontalAlignment.Right; /** * Callback on horizontal alignment option change */ diff --git a/x-pack/plugins/lens/public/shared_components/legend_settings_popover.tsx b/x-pack/plugins/lens/public/shared_components/legend_settings_popover.tsx index 560a695eaa089..944c55fb56091 100644 --- a/x-pack/plugins/lens/public/shared_components/legend_settings_popover.tsx +++ b/x-pack/plugins/lens/public/shared_components/legend_settings_popover.tsx @@ -58,11 +58,11 @@ export interface LegendSettingsPopoverProps { /** * Sets the vertical alignment for legend inside chart */ - verticalAlignment?: VerticalAlignment; + verticalAlignment?: typeof VerticalAlignment.Top | typeof VerticalAlignment.Bottom; /** * Sets the vertical alignment for legend inside chart */ - horizontalAlignment?: HorizontalAlignment; + horizontalAlignment?: typeof HorizontalAlignment.Left | typeof HorizontalAlignment.Right; /** * Callback on horizontal alignment option change */ @@ -225,13 +225,15 @@ export const LegendSettingsPopover: React.FunctionComponent - + {location !== 'inside' && ( + + )} {location && ( { handleInputChange(e.target.value); diff --git a/x-pack/plugins/lens/public/shared_components/value_labels_settings.test.tsx b/x-pack/plugins/lens/public/shared_components/value_labels_settings.test.tsx index 7f5ebcf7aa281..0d01463d333b0 100644 --- a/x-pack/plugins/lens/public/shared_components/value_labels_settings.test.tsx +++ b/x-pack/plugins/lens/public/shared_components/value_labels_settings.test.tsx @@ -38,7 +38,7 @@ describe('Value labels Settings', () => { }); it('should render the passed value if given', () => { - const component = shallow(); + const component = shallow(); expect( component.find('[data-test-subj="lens-value-labels-visibility-btn"]').prop('idSelected') ).toEqual(`value_labels_inside`); diff --git a/x-pack/plugins/lens/public/shared_components/value_labels_settings.tsx b/x-pack/plugins/lens/public/shared_components/value_labels_settings.tsx index 64d9f5475379a..f5378a2e3ba01 100644 --- a/x-pack/plugins/lens/public/shared_components/value_labels_settings.tsx +++ b/x-pack/plugins/lens/public/shared_components/value_labels_settings.tsx @@ -26,7 +26,7 @@ const valueLabelsOptions: Array<{ }, { id: `value_labels_inside`, - value: 'inside', + value: 'show', label: i18n.translate('xpack.lens.shared.valueLabelsVisibility.inside', { defaultMessage: 'Show', }), diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index 22d794e803df1..8c6c6d9af22dc 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -525,7 +525,7 @@ export interface OperationDescriptor extends Operation { export interface VisualizationConfigProps { layerId: string; - frame: Pick; + frame: FramePublicAPI; state: T; } @@ -588,7 +588,7 @@ export type VisualizationDimensionGroupConfig = SharedDimensionProps & { labels?: { buttonAriaLabel: string; buttonLabel: string }; }; -interface VisualizationDimensionChangeProps { +export interface VisualizationDimensionChangeProps { layerId: string; columnId: string; prevState: T; @@ -887,7 +887,8 @@ export interface Visualization { toExpression: ( state: T, datasourceLayers: DatasourceLayers, - attributes?: Partial<{ title: string; description: string }> + attributes?: Partial<{ title: string; description: string }>, + datasourceExpressionsByLayers?: Record ) => ExpressionAstExpression | string | null; /** * Expression to render a preview version of the chart in very constrained space. @@ -895,7 +896,8 @@ export interface Visualization { */ toPreviewExpression?: ( state: T, - datasourceLayers: DatasourceLayers + datasourceLayers: DatasourceLayers, + datasourceExpressionsByLayers?: Record ) => ExpressionAstExpression | string | null; /** * The frame will call this function on all visualizations at few stages (pre-build/build error) in order @@ -920,6 +922,12 @@ export interface Visualization { * On Edit events the frame will call this to know what's going to be the next visualization state */ onEditAction?: (state: T, event: LensEditEvent) => T; + + /** + * `datasourceExpressionsByLayers` will be passed to the params of `toExpression` and `toPreviewExpression` + * functions and datasource expressions will not be appended to the expression automatically. + */ + shouldBuildDatasourceExpressionManually?: () => boolean; } export interface LensFilterEvent { diff --git a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/to_expression.test.ts.snap b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/to_expression.test.ts.snap index 256df38ffa5b3..9c4ee0d3b245f 100644 --- a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/to_expression.test.ts.snap +++ b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/to_expression.test.ts.snap @@ -30,9 +30,6 @@ Object { "curveType": Array [ "LINEAR", ], - "description": Array [ - "", - ], "emphasizeFitting": Array [ true, ], @@ -135,6 +132,18 @@ Object { "splitAccessor": Array [ "d", ], + "table": Array [ + Object { + "chain": Array [ + Object { + "arguments": Object {}, + "function": "kibana", + "type": "function", + }, + ], + "type": "expression", + }, + ], "xAccessor": Array [ "a", ], @@ -146,7 +155,7 @@ Object { "linear", ], }, - "function": "dataLayer", + "function": "extendedDataLayer", "type": "function", }, ], @@ -204,9 +213,6 @@ Object { "type": "expression", }, ], - "title": Array [ - "", - ], "valueLabels": Array [ "hide", ], @@ -263,7 +269,7 @@ Object { "", ], }, - "function": "xyVis", + "function": "layeredXyVis", "type": "function", }, ], diff --git a/x-pack/plugins/lens/public/xy_visualization/annotations/helpers.tsx b/x-pack/plugins/lens/public/xy_visualization/annotations/helpers.tsx index fe120dc71b17a..f9f4b9da5342a 100644 --- a/x-pack/plugins/lens/public/xy_visualization/annotations/helpers.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/annotations/helpers.tsx @@ -7,7 +7,11 @@ import { i18n } from '@kbn/i18n'; import moment from 'moment'; -import { defaultAnnotationColor } from '@kbn/event-annotation-plugin/public'; +import { + defaultAnnotationColor, + defaultAnnotationRangeColor, + isRangeAnnotation, +} from '@kbn/event-annotation-plugin/public'; import { layerTypes } from '../../../common'; import type { FramePublicAPI, Visualization } from '../../types'; import { isHorizontalChart } from '../state_helpers'; @@ -29,6 +33,13 @@ export const defaultAnnotationLabel = i18n.translate('xpack.lens.xyChart.default defaultMessage: 'Event', }); +export const defaultRangeAnnotationLabel = i18n.translate( + 'xpack.lens.xyChart.defaultRangeAnnotationLabel', + { + defaultMessage: 'Event range', + } +); + export function getStaticDate(dataLayers: XYDataLayerConfig[], frame: FramePublicAPI) { const dataLayersId = dataLayers.map(({ layerId }) => layerId); const { activeData, dateRange } = frame; @@ -124,6 +135,7 @@ export const setAnnotationsDimension: Visualization['setDimension'] = ( : undefined; let resultAnnotations = [...inputAnnotations] as XYAnnotationLayerConfig['annotations']; + if (!currentConfig) { resultAnnotations.push({ label: defaultAnnotationLabel, @@ -161,7 +173,9 @@ export const getAnnotationsAccessorColorConfig = (layer: XYAnnotationLayerConfig return { columnId: annotation.id, triggerIcon: annotation.isHidden ? ('invisible' as const) : ('color' as const), - color: annotation?.color || defaultAnnotationColor, + color: + annotation?.color || + (isRangeAnnotation(annotation) ? defaultAnnotationRangeColor : defaultAnnotationColor), }; }); }; diff --git a/x-pack/plugins/lens/public/xy_visualization/axes_configuration.test.ts b/x-pack/plugins/lens/public/xy_visualization/axes_configuration.test.ts index db8ae7122c538..73b355bce7ed2 100644 --- a/x-pack/plugins/lens/public/xy_visualization/axes_configuration.test.ts +++ b/x-pack/plugins/lens/public/xy_visualization/axes_configuration.test.ts @@ -5,10 +5,10 @@ * 2.0. */ -import { DataLayerConfigResult } from '@kbn/expression-xy-plugin/common'; import { layerTypes } from '../../common'; import { Datatable } from '@kbn/expressions-plugin/public'; import { getAxesConfiguration } from './axes_configuration'; +import { XYDataLayerConfig } from './types'; describe('axes_configuration', () => { const tables: Record = { @@ -219,8 +219,7 @@ describe('axes_configuration', () => { }, }; - const sampleLayer: DataLayerConfigResult = { - type: 'dataLayer', + const sampleLayer: XYDataLayerConfig = { layerId: 'first', layerType: layerTypes.DATA, seriesType: 'line', diff --git a/x-pack/plugins/lens/public/xy_visualization/reference_line_helpers.tsx b/x-pack/plugins/lens/public/xy_visualization/reference_line_helpers.tsx index c7e615bb29e12..5ddb1fcc043e7 100644 --- a/x-pack/plugins/lens/public/xy_visualization/reference_line_helpers.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/reference_line_helpers.tsx @@ -7,7 +7,7 @@ import { groupBy, partition } from 'lodash'; import { i18n } from '@kbn/i18n'; -import type { YAxisMode, YConfig } from '@kbn/expression-xy-plugin/common'; +import type { YAxisMode, ExtendedYConfig } from '@kbn/expression-xy-plugin/common'; import { Datatable } from '@kbn/expressions-plugin/public'; import { layerTypes } from '../../common'; import type { DatasourceLayers, FramePublicAPI, Visualization } from '../types'; @@ -34,7 +34,7 @@ export interface ReferenceLineBase { * * what groups are current defined in data layers * * what existing reference line are currently defined in reference layers */ -export function getGroupsToShow( +export function getGroupsToShow( referenceLayers: T[], state: XYState | undefined, datasourceLayers: DatasourceLayers, @@ -104,6 +104,7 @@ export function getStaticValue( untouchedDataLayers, accessors, } = getAccessorCriteriaForGroup(groupId, dataLayers, activeData); + if ( groupId === 'x' && filteredLayers.length && @@ -111,6 +112,7 @@ export function getStaticValue( ) { return fallbackValue; } + const computedValue = computeStaticValueForGroup( filteredLayers, accessors, @@ -118,6 +120,7 @@ export function getStaticValue( groupId !== 'x', // histogram axis should compute the min based on the current data groupId !== 'x' ); + return computedValue ?? fallbackValue; } @@ -165,6 +168,7 @@ export function computeOverallDataDomain( const accessorMap = new Set(accessorIds); let min: number | undefined; let max: number | undefined; + const [stacked, unstacked] = partition( dataLayers, ({ seriesType }) => isStackedChart(seriesType) && allowStacking @@ -268,13 +272,17 @@ export const getReferenceSupportedLayer = ( label: 'x' as const, }, ]; + const referenceLineGroups = getGroupsRelatedToData( referenceLineGroupIds, state, frame?.datasourceLayers || {}, frame?.activeData ); - const dataLayers = getDataLayers(state?.layers || []); + + const layers = state?.layers || []; + const dataLayers = getDataLayers(layers); + const filledDataLayers = dataLayers.filter( ({ accessors, xAccessor }) => accessors.length || xAccessor ); @@ -289,7 +297,7 @@ export const getReferenceSupportedLayer = ( groupId: id, columnId: generateId(), dataType: 'number', - label: getAxisName(label, { isHorizontal: isHorizontalChart(state?.layers || []) }), + label: getAxisName(label, { isHorizontal: isHorizontalChart(layers) }), staticValue: getStaticValue( dataLayers, label, @@ -317,6 +325,7 @@ export const getReferenceSupportedLayer = ( initialDimensions, }; }; + export const setReferenceDimension: Visualization['setDimension'] = ({ prevState, layerId, @@ -397,6 +406,7 @@ export const getReferenceConfiguration = ({ return axisMode; } ); + const groupsToShow = getGroupsToShow( [ // When a reference layer panel is added, a static reference line should automatically be included by default @@ -422,7 +432,7 @@ export const getReferenceConfiguration = ({ ], state, frame.datasourceLayers, - frame?.activeData + frame.activeData ); const isHorizontal = isHorizontalChart(state.layers); return { diff --git a/x-pack/plugins/lens/public/xy_visualization/state_helpers.ts b/x-pack/plugins/lens/public/xy_visualization/state_helpers.ts index 06ea897afa1e7..f37ad12f606b1 100644 --- a/x-pack/plugins/lens/public/xy_visualization/state_helpers.ts +++ b/x-pack/plugins/lens/public/xy_visualization/state_helpers.ts @@ -6,7 +6,7 @@ */ import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; -import type { SeriesType, YConfig, ValidLayer } from '@kbn/expression-xy-plugin/common'; +import type { SeriesType, ExtendedYConfig } from '@kbn/expression-xy-plugin/common'; import type { FramePublicAPI, DatasourcePublicAPI } from '../types'; import { visualizationTypes, @@ -58,7 +58,8 @@ export const getSeriesColor = (layer: XYLayerConfig, accessor: string) => { return null; } return ( - layer?.yConfig?.find((yConfig: YConfig) => yConfig.forAccessor === accessor)?.color || null + layer?.yConfig?.find((yConfig: ExtendedYConfig) => yConfig.forAccessor === accessor)?.color || + null ); }; @@ -79,7 +80,7 @@ export const getColumnToLabelMap = ( }; export function hasHistogramSeries( - layers: ValidLayer[] = [], + layers: XYDataLayerConfig[] = [], datasourceLayers?: FramePublicAPI['datasourceLayers'] ) { if (!datasourceLayers) { @@ -87,7 +88,11 @@ export function hasHistogramSeries( } const validLayers = layers.filter(({ accessors }) => accessors.length); - return validLayers.some(({ layerId, xAccessor }: ValidLayer) => { + return validLayers.some(({ layerId, xAccessor }: XYDataLayerConfig) => { + if (!xAccessor) { + return false; + } + const xAxisOperation = datasourceLayers[layerId].getOperationForColumnId(xAccessor); return ( xAxisOperation && 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 7cd9a43540c0a..d39b9914f0eef 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'; +import { Ast, fromExpression } from '@kbn/interpreter'; import { Position } from '@elastic/charts'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { getXyVisualization } from './xy_visualization'; @@ -28,6 +28,8 @@ describe('#toExpression', () => { let mockDatasource: ReturnType; let frame: ReturnType; + let datasourceExpressionsByLayers: Record; + beforeEach(() => { frame = createMockFramePublicAPI(); mockDatasource = createMockDatasource('testDatasource'); @@ -46,6 +48,23 @@ describe('#toExpression', () => { frame.datasourceLayers = { first: mockDatasource.publicAPIMock, }; + + const datasourceExpression = mockDatasource.toExpression( + frame.datasourceLayers.first, + 'first' + ) ?? { + type: 'expression', + chain: [], + }; + const exprAst = + typeof datasourceExpression === 'string' + ? fromExpression(datasourceExpression) + : datasourceExpression; + + datasourceExpressionsByLayers = { + first: exprAst, + referenceLine: exprAst, + }; }); it('should map to a valid AST', () => { @@ -82,7 +101,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) ).toMatchSnapshot(); }); @@ -106,7 +127,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) as Ast ).chain[0].arguments.fittingFunction[0] ).toEqual('None'); @@ -129,7 +152,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) as Ast; expect( (expression.chain[0].arguments.axisTitlesVisibilitySettings[0] as Ast).chain[0].arguments @@ -157,7 +182,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) as Ast; expect((expression.chain[0].arguments.layers[0] as Ast).chain[0].arguments.xAccessor).toEqual( [] @@ -182,7 +209,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) ).toBeNull(); }); @@ -204,7 +233,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers )! as Ast; expect(mockDatasource.publicAPIMock.getOperationForColumnId).toHaveBeenCalledWith('b'); @@ -241,7 +272,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) as Ast; expect( (expression.chain[0].arguments.tickLabelsVisibilitySettings[0] as Ast).chain[0].arguments @@ -269,7 +302,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) as Ast; expect((expression.chain[0].arguments.labelsOrientation[0] as Ast).chain[0].arguments).toEqual({ x: [0], @@ -295,7 +330,9 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) as Ast; expect( (expression.chain[0].arguments.gridlinesVisibilitySettings[0] as Ast).chain[0].arguments @@ -310,7 +347,7 @@ describe('#toExpression', () => { const expression = xyVisualization.toExpression( { legend: { position: Position.Bottom, isVisible: true }, - valueLabels: 'inside', + valueLabels: 'show', preferredSeriesType: 'bar', layers: [ { @@ -323,16 +360,18 @@ describe('#toExpression', () => { }, ], }, - frame.datasourceLayers + frame.datasourceLayers, + undefined, + datasourceExpressionsByLayers ) as Ast; - expect(expression.chain[0].arguments.valueLabels[0] as Ast).toEqual('inside'); + expect(expression.chain[0].arguments.valueLabels[0] as Ast).toEqual('show'); }); it('should compute the correct series color fallback based on the layer type', () => { const expression = xyVisualization.toExpression( { legend: { position: Position.Bottom, isVisible: true }, - valueLabels: 'inside', + valueLabels: 'show', preferredSeriesType: 'bar', layers: [ { @@ -352,7 +391,9 @@ describe('#toExpression', () => { }, ], }, - { ...frame.datasourceLayers, referenceLine: mockDatasource.publicAPIMock } + { ...frame.datasourceLayers, referenceLine: mockDatasource.publicAPIMock }, + undefined, + datasourceExpressionsByLayers ) as Ast; function getYConfigColorForLayer(ast: Ast, index: number) { diff --git a/x-pack/plugins/lens/public/xy_visualization/to_expression.ts b/x-pack/plugins/lens/public/xy_visualization/to_expression.ts index eeb56bd7ee115..1c73c455dfe9e 100644 --- a/x-pack/plugins/lens/public/xy_visualization/to_expression.ts +++ b/x-pack/plugins/lens/public/xy_visualization/to_expression.ts @@ -10,13 +10,15 @@ import { ScaleType } from '@elastic/charts'; import type { PaletteRegistry } from '@kbn/coloring'; import { EventAnnotationServiceType } from '@kbn/event-annotation-plugin/public'; -import type { ValidLayer, YConfig } from '@kbn/expression-xy-plugin/common'; +import type { AxisExtentConfig, ExtendedYConfig, YConfig } from '@kbn/expression-xy-plugin/common'; +import type { ExpressionAstExpression } from '@kbn/expressions-plugin/common'; import { State, XYDataLayerConfig, XYReferenceLineLayerConfig, XYAnnotationLayerConfig, } from './types'; +import type { ValidXYDataLayerConfig } from './types'; import { OperationMetadata, DatasourcePublicAPI, DatasourceLayers } from '../types'; import { getColumnToLabelMap } from './state_helpers'; import { hasIcon } from './xy_config_panel/shared/icon_select'; @@ -28,7 +30,7 @@ import { getReferenceLayers, getAnnotationsLayers, } from './visualization_helpers'; -import { getUniqueLabels, defaultAnnotationLabel } from './annotations/helpers'; +import { getUniqueLabels } from './annotations/helpers'; import { layerTypes } from '../../common'; export const getSortedAccessors = ( @@ -50,6 +52,7 @@ export const toExpression = ( datasourceLayers: DatasourceLayers, paletteService: PaletteRegistry, attributes: Partial<{ title: string; description: string }> = {}, + datasourceExpressionsByLayers: Record, eventAnnotationService: EventAnnotationServiceType ): Ast | null => { if (!state || !state.layers.length) { @@ -73,7 +76,7 @@ export const toExpression = ( metadata, datasourceLayers, paletteService, - attributes, + datasourceExpressionsByLayers, eventAnnotationService ); }; @@ -83,7 +86,7 @@ const simplifiedLayerExpression = { [layerTypes.REFERENCELINE]: (layer: XYReferenceLineLayerConfig) => ({ ...layer, hide: true, - yConfig: layer.yConfig?.map(({ lineWidth, ...rest }) => ({ + yConfig: layer.yConfig?.map(({ ...rest }) => ({ ...rest, lineWidth: 1, icon: undefined, @@ -93,12 +96,6 @@ const simplifiedLayerExpression = { [layerTypes.ANNOTATIONS]: (layer: XYAnnotationLayerConfig) => ({ ...layer, hide: true, - annotations: layer.annotations?.map(({ lineWidth, ...rest }) => ({ - ...rest, - lineWidth: 1, - icon: undefined, - textVisibility: false, - })), }), }; @@ -106,6 +103,7 @@ export function toPreviewExpression( state: State, datasourceLayers: DatasourceLayers, paletteService: PaletteRegistry, + datasourceExpressionsByLayers: Record, eventAnnotationService: EventAnnotationServiceType ) { return toExpression( @@ -122,6 +120,7 @@ export function toPreviewExpression( datasourceLayers, paletteService, {}, + datasourceExpressionsByLayers, eventAnnotationService ); } @@ -157,11 +156,13 @@ export const buildExpression = ( metadata: Record>, datasourceLayers: DatasourceLayers, paletteService: PaletteRegistry, - attributes: Partial<{ title: string; description: string }> = {}, + datasourceExpressionsByLayers: Record, eventAnnotationService: EventAnnotationServiceType ): Ast | null => { - const validDataLayers = getDataLayers(state.layers) - .filter((layer): layer is ValidLayer => Boolean(layer.accessors.length)) + const validDataLayers: ValidXYDataLayerConfig[] = getDataLayers(state.layers) + .filter((layer): layer is ValidXYDataLayerConfig => + Boolean(layer.accessors.length) + ) .map((layer) => ({ ...layer, accessors: getSortedAccessors(datasourceLayers[layer.layerId], layer), @@ -194,10 +195,8 @@ export const buildExpression = ( chain: [ { type: 'function', - function: 'xyVis', + function: 'layeredXyVis', arguments: { - title: [attributes?.title || ''], - description: [attributes?.description || ''], xTitle: [state.xTitle || ''], yTitle: [state.yTitle || ''], yRightTitle: [state.yRightTitle || ''], @@ -213,20 +212,26 @@ export const buildExpression = ( showSingleSeries: state.legend.showSingleSeries ? [state.legend.showSingleSeries] : [], - position: [state.legend.position], + position: !state.legend.isInside ? [state.legend.position] : [], isInside: state.legend.isInside ? [state.legend.isInside] : [], - legendSize: state.legend.legendSize ? [state.legend.legendSize] : [], - horizontalAlignment: state.legend.horizontalAlignment - ? [state.legend.horizontalAlignment] - : [], - verticalAlignment: state.legend.verticalAlignment - ? [state.legend.verticalAlignment] - : [], + legendSize: + !state.legend.isInside && state.legend.legendSize + ? [state.legend.legendSize] + : [], + horizontalAlignment: + state.legend.horizontalAlignment && state.legend.isInside + ? [state.legend.horizontalAlignment] + : [], + verticalAlignment: + state.legend.verticalAlignment && state.legend.isInside + ? [state.legend.verticalAlignment] + : [], // ensure that even if the user types more than 5 columns // we will only show 5 - floatingColumns: state.legend.floatingColumns - ? [Math.min(5, state.legend.floatingColumns)] - : [], + floatingColumns: + state.legend.floatingColumns && state.legend.isInside + ? [Math.min(5, state.legend.floatingColumns)] + : [], maxLines: state.legend.maxLines ? [state.legend.maxLines] : [], shouldTruncate: [ state.legend.shouldTruncate ?? @@ -242,50 +247,8 @@ export const buildExpression = ( emphasizeFitting: [state.emphasizeFitting || false], curveType: [state.curveType || 'LINEAR'], fillOpacity: [state.fillOpacity || 0.3], - yLeftExtent: [ - { - type: 'expression', - chain: [ - { - type: 'function', - function: 'axisExtentConfig', - arguments: { - mode: [state?.yLeftExtent?.mode || 'full'], - lowerBound: - state?.yLeftExtent?.lowerBound !== undefined - ? [state?.yLeftExtent?.lowerBound] - : [], - upperBound: - state?.yLeftExtent?.upperBound !== undefined - ? [state?.yLeftExtent?.upperBound] - : [], - }, - }, - ], - }, - ], - yRightExtent: [ - { - type: 'expression', - chain: [ - { - type: 'function', - function: 'axisExtentConfig', - arguments: { - mode: [state?.yRightExtent?.mode || 'full'], - lowerBound: - state?.yRightExtent?.lowerBound !== undefined - ? [state?.yRightExtent?.lowerBound] - : [], - upperBound: - state?.yRightExtent?.upperBound !== undefined - ? [state?.yRightExtent?.upperBound] - : [], - }, - }, - ], - }, - ], + yLeftExtent: [axisExtentConfigToExpression(state.yLeftExtent, validDataLayers)], + yRightExtent: [axisExtentConfigToExpression(state.yRightExtent, validDataLayers)], axisTitlesVisibilitySettings: [ { type: 'expression', @@ -359,13 +322,15 @@ export const buildExpression = ( layer, datasourceLayers[layer.layerId], metadata, - paletteService + paletteService, + datasourceExpressionsByLayers[layer.layerId] ) ), ...validReferenceLayers.map((layer) => referenceLineLayerToExpression( layer, - datasourceLayers[(layer as XYReferenceLineLayerConfig).layerId] + datasourceLayers[(layer as XYReferenceLineLayerConfig).layerId], + datasourceExpressionsByLayers[layer.layerId] ) ), ...validAnnotationsLayers.map((layer) => @@ -378,25 +343,32 @@ export const buildExpression = ( }; }; +const buildTableExpression = (datasourceExpression: Ast): ExpressionAstExpression => ({ + type: 'expression', + chain: [{ type: 'function', function: 'kibana', arguments: {} }, ...datasourceExpression.chain], +}); + const referenceLineLayerToExpression = ( layer: XYReferenceLineLayerConfig, - datasourceLayer: DatasourcePublicAPI + datasourceLayer: DatasourcePublicAPI, + datasourceExpression: Ast ): Ast => { return { type: 'expression', chain: [ { type: 'function', - function: 'referenceLineLayer', + function: 'extendedReferenceLineLayer', arguments: { layerId: [layer.layerId], yConfig: layer.yConfig ? layer.yConfig.map((yConfig) => - yConfigToExpression(yConfig, defaultReferenceLineColor) + extendedYConfigToExpression(yConfig, defaultReferenceLineColor) ) : [], accessors: layer.accessors, columnToLabel: [JSON.stringify(getColumnToLabelMap(layer, datasourceLayer))], + ...(datasourceExpression ? { table: [buildTableExpression(datasourceExpression)] } : {}), }, }, ], @@ -412,24 +384,12 @@ const annotationLayerToExpression = ( chain: [ { type: 'function', - function: 'annotationLayer', + function: 'extendedAnnotationLayer', arguments: { hide: [Boolean(layer.hide)], layerId: [layer.layerId], annotations: layer.annotations - ? layer.annotations.map( - (ann): Ast => - eventAnnotationService.toExpression({ - time: ann.key.timestamp, - label: ann.label || defaultAnnotationLabel, - textVisibility: ann.textVisibility, - icon: ann.icon, - lineStyle: ann.lineStyle, - lineWidth: ann.lineWidth, - color: ann.color, - isHidden: Boolean(ann.isHidden), - }) - ) + ? layer.annotations.map((ann): Ast => eventAnnotationService.toExpression(ann)) : [], }, }, @@ -438,10 +398,11 @@ const annotationLayerToExpression = ( }; const dataLayerToExpression = ( - layer: ValidLayer, + layer: ValidXYDataLayerConfig, datasourceLayer: DatasourcePublicAPI, metadata: Record>, - paletteService: PaletteRegistry + paletteService: PaletteRegistry, + datasourceExpression: Ast ): Ast => { const columnToLabel = getColumnToLabelMap(layer, datasourceLayer); @@ -459,7 +420,7 @@ const dataLayerToExpression = ( chain: [ { type: 'function', - function: 'dataLayer', + function: 'extendedDataLayer', arguments: { layerId: [layer.layerId], hide: [Boolean(layer.hide)], @@ -476,6 +437,7 @@ const dataLayerToExpression = ( seriesType: [layer.seriesType], accessors: layer.accessors, columnToLabel: [JSON.stringify(columnToLabel)], + ...(datasourceExpression ? { table: [buildTableExpression(datasourceExpression)] } : {}), palette: [ { type: 'expression', @@ -514,6 +476,23 @@ const yConfigToExpression = (yConfig: YConfig, defaultColor?: string): Ast => { { type: 'function', function: 'yConfig', + arguments: { + forAccessor: [yConfig.forAccessor], + axisMode: yConfig.axisMode ? [yConfig.axisMode] : [], + color: yConfig.color ? [yConfig.color] : defaultColor ? [defaultColor] : [], + }, + }, + ], + }; +}; + +const extendedYConfigToExpression = (yConfig: ExtendedYConfig, defaultColor?: string): Ast => { + return { + type: 'expression', + chain: [ + { + type: 'function', + function: 'extendedYConfig', arguments: { forAccessor: [yConfig.forAccessor], axisMode: yConfig.axisMode ? [yConfig.axisMode] : [], @@ -532,3 +511,21 @@ const yConfigToExpression = (yConfig: YConfig, defaultColor?: string): Ast => { ], }; }; + +const axisExtentConfigToExpression = ( + extent: AxisExtentConfig | undefined, + layers: ValidXYDataLayerConfig[] +): Ast => ({ + type: 'expression', + chain: [ + { + type: 'function', + function: 'axisExtentConfig', + arguments: { + mode: [extent?.mode ?? 'full'], + lowerBound: extent?.lowerBound !== undefined ? [extent?.lowerBound] : [], + upperBound: extent?.upperBound !== undefined ? [extent?.upperBound] : [], + }, + }, + ], +}); diff --git a/x-pack/plugins/lens/public/xy_visualization/types.ts b/x-pack/plugins/lens/public/xy_visualization/types.ts index 276e338807a35..b96ddf1aaee2d 100644 --- a/x-pack/plugins/lens/public/xy_visualization/types.ts +++ b/x-pack/plugins/lens/public/xy_visualization/types.ts @@ -16,7 +16,10 @@ import type { FittingFunction, LabelsOrientationConfig, EndValue, + ExtendedYConfig, YConfig, + YScaleType, + XScaleType, } from '@kbn/expression-xy-plugin/common'; import { EventAnnotationConfig } from '@kbn/event-annotation-plugin/common'; import { LensIconChartArea } from '../assets/chart_area'; @@ -43,12 +46,16 @@ export interface XYDataLayerConfig { yConfig?: YConfig[]; splitAccessor?: string; palette?: PaletteOutput; + yScaleType?: YScaleType; + xScaleType?: XScaleType; + isHistogram?: boolean; + columnToLabel?: string; } export interface XYReferenceLineLayerConfig { layerId: string; accessors: string[]; - yConfig?: YConfig[]; + yConfig?: ExtendedYConfig[]; layerType: 'referenceLine'; } @@ -64,6 +71,13 @@ export type XYLayerConfig = | XYReferenceLineLayerConfig | XYAnnotationLayerConfig; +export interface ValidXYDataLayerConfig extends XYDataLayerConfig { + xAccessor: NonNullable; + layerId: string; +} + +export type ValidLayer = ValidXYDataLayerConfig | XYReferenceLineLayerConfig; + // Persisted parts of the state export interface XYState { preferredSeriesType: SeriesType; diff --git a/x-pack/plugins/lens/public/xy_visualization/visualization.tsx b/x-pack/plugins/lens/public/xy_visualization/visualization.tsx index d67adb3b860e3..97bac36a93465 100644 --- a/x-pack/plugins/lens/public/xy_visualization/visualization.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/visualization.tsx @@ -16,7 +16,12 @@ import { ThemeServiceStart } from '@kbn/core/public'; import { EventAnnotationServiceType } from '@kbn/event-annotation-plugin/public'; import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; -import { FillStyle, SeriesType, YAxisMode, YConfig } from '@kbn/expression-xy-plugin/common'; +import { + FillStyle, + SeriesType, + YAxisMode, + ExtendedYConfig, +} from '@kbn/expression-xy-plugin/common'; import { getSuggestions } from './xy_suggestions'; import { XyToolbar } from './xy_config_panel'; import { DimensionEditor } from './xy_config_panel/dimension_editor'; @@ -61,7 +66,7 @@ import { } from './visualization_helpers'; import { groupAxesByType } from './axes_configuration'; import { XYState } from './types'; -import { ReferenceLinePanel } from './xy_config_panel/reference_line_panel'; +import { ReferenceLinePanel } from './xy_config_panel/reference_line_config_panel'; import { AnnotationsPanel } from './xy_config_panel/annotations_config_panel'; import { DimensionTrigger } from '../shared_components/dimension_trigger'; import { defaultAnnotationLabel } from './annotations/helpers'; @@ -295,6 +300,7 @@ export const getXyVisualization = ({ setDimension(props) { const { prevState, layerId, columnId, groupId } = props; + const foundLayer: XYLayerConfig | undefined = prevState.layers.find( (l) => l.layerId === layerId ); @@ -333,7 +339,7 @@ export const getXyVisualization = ({ } const isReferenceLine = metrics.some((metric) => metric.agg === 'static_value'); const axisMode = axisPosition as YAxisMode; - const yConfig = metrics.map((metric, idx) => { + const yConfig = metrics.map((metric, idx) => { return { color: metric.color, forAccessor: metric.accessor ?? foundLayer.accessors[idx], @@ -444,7 +450,7 @@ export const getXyVisualization = ({ const groupsAvailable = getGroupsAvailableInData( getDataLayers(prevState.layers), frame.datasourceLayers, - frame?.activeData + frame.activeData ); if ( @@ -508,10 +514,26 @@ export const getXyVisualization = ({ ); }, - toExpression: (state, layers, attributes) => - toExpression(state, layers, paletteService, attributes, eventAnnotationService), - toPreviewExpression: (state, layers) => - toPreviewExpression(state, layers, paletteService, eventAnnotationService), + shouldBuildDatasourceExpressionManually: () => true, + + toExpression: (state, layers, attributes, datasourceExpressionsByLayers = {}) => + toExpression( + state, + layers, + paletteService, + attributes, + datasourceExpressionsByLayers, + eventAnnotationService + ), + + toPreviewExpression: (state, layers, datasourceExpressionsByLayers = {}) => + toPreviewExpression( + state, + layers, + paletteService, + datasourceExpressionsByLayers, + eventAnnotationService + ), getErrorMessages(state, datasourceLayers) { // Data error handling below here @@ -592,10 +614,12 @@ export const getXyVisualization = ({ ...getDataLayers(state.layers), ...getReferenceLayers(state.layers), ].filter(({ accessors }) => accessors.length > 0); + const accessorsWithArrayValues = []; + for (const layer of filteredLayers) { const { layerId, accessors } = layer; - const rows = frame.activeData[layerId] && frame.activeData[layerId].rows; + const rows = frame.activeData?.[layerId] && frame.activeData[layerId].rows; if (!rows) { break; } @@ -607,6 +631,7 @@ export const getXyVisualization = ({ } } } + return accessorsWithArrayValues.map((label) => ( { + return new Color(transparentize(color, 0.1)).hexa(); +}; + +export const toLineAnnotationColor = (color = defaultAnnotationRangeColor) => { + return new Color(transparentize(color, 1)).hex(); +}; + +export const getEndTimestamp = ( + startTime: string, + { activeData, dateRange }: FramePublicAPI, + dataLayers: XYDataLayerConfig[] +) => { + const startTimeNumber = moment(startTime).valueOf(); + const dateRangeFraction = + (moment(dateRange.toDate).valueOf() - moment(dateRange.fromDate).valueOf()) * 0.1; + const fallbackValue = moment(startTimeNumber + dateRangeFraction).toISOString(); + const dataLayersId = dataLayers.map(({ layerId }) => layerId); + if ( + !dataLayersId.length || + !activeData || + Object.entries(activeData) + .filter(([key]) => dataLayersId.includes(key)) + .every(([, { rows }]) => !rows || !rows.length) + ) { + return fallbackValue; + } + const xColumn = activeData?.[dataLayersId[0]].columns.find( + (column) => column.id === dataLayers[0].xAccessor + ); + if (!xColumn) { + return fallbackValue; + } + + const dateInterval = search.aggs.getDateHistogramMetaDataByDatatableColumn(xColumn)?.interval; + if (!dateInterval) return fallbackValue; + const intervalDuration = search.aggs.parseInterval(dateInterval); + if (!intervalDuration) return fallbackValue; + return moment(startTimeNumber + 3 * intervalDuration.as('milliseconds')).toISOString(); +}; + +const sanitizeProperties = (annotation: EventAnnotationConfig) => { + if (isRangeAnnotation(annotation)) { + const rangeAnnotation: RangeEventAnnotationConfig = pick(annotation, [ + 'label', + 'key', + 'id', + 'isHidden', + 'color', + 'outside', + ]); + return rangeAnnotation; + } else { + const lineAnnotation: PointInTimeEventAnnotationConfig = pick(annotation, [ + 'id', + 'label', + 'key', + 'isHidden', + 'lineStyle', + 'lineWidth', + 'color', + 'icon', + 'textVisibility', + ]); + return lineAnnotation; + } +}; + +export const AnnotationsPanel = ( + props: VisualizationDimensionEditorProps & { + formatFactory: FormatFactory; + paletteService: PaletteRegistry; + } +) => { + const { state, setState, layerId, accessor, frame } = props; + const isHorizontal = isHorizontalChart(state.layers); + + const { inputValue: localState, handleInputChange: setLocalState } = useDebouncedValue({ + value: state, + onChange: setState, + }); + + const index = localState.layers.findIndex((l) => l.layerId === layerId); + const localLayer = localState.layers.find( + (l) => l.layerId === layerId + ) as XYAnnotationLayerConfig; + + const currentAnnotation = localLayer.annotations?.find((c) => c.id === accessor); + + const isRange = isRangeAnnotation(currentAnnotation); + + const setAnnotations = useCallback( + (annotation) => { + if (annotation == null) { + return; + } + const newConfigs = [...(localLayer.annotations || [])]; + const existingIndex = newConfigs.findIndex((c) => c.id === accessor); + if (existingIndex !== -1) { + newConfigs[existingIndex] = sanitizeProperties({ + ...newConfigs[existingIndex], + ...annotation, + }); + } else { + throw new Error( + 'should never happen because annotation is created before config panel is opened' + ); + } + setLocalState(updateLayer(localState, { ...localLayer, annotations: newConfigs }, index)); + }, + [accessor, index, localState, localLayer, setLocalState] + ); + + return ( + <> + + {isRange ? ( + <> + { + if (date) { + const currentEndTime = moment(currentAnnotation?.key.endTimestamp).valueOf(); + if (currentEndTime < date.valueOf()) { + const currentStartTime = moment(currentAnnotation?.key.timestamp).valueOf(); + const dif = currentEndTime - currentStartTime; + setAnnotations({ + key: { + ...(currentAnnotation?.key || { type: 'range' }), + timestamp: date.toISOString(), + endTimestamp: moment(date.valueOf() + dif).toISOString(), + }, + }); + } else { + setAnnotations({ + key: { + ...(currentAnnotation?.key || { type: 'range' }), + timestamp: date.toISOString(), + }, + }); + } + } + }} + label={i18n.translate('xpack.lens.xyChart.annotationDate', { + defaultMessage: 'Annotation date', + })} + /> + { + if (date) { + const currentStartTime = moment(currentAnnotation?.key.timestamp).valueOf(); + if (currentStartTime > date.valueOf()) { + const currentEndTime = moment(currentAnnotation?.key.endTimestamp).valueOf(); + const dif = currentEndTime - currentStartTime; + setAnnotations({ + key: { + ...(currentAnnotation?.key || { type: 'range' }), + endTimestamp: date.toISOString(), + timestamp: moment(date.valueOf() - dif).toISOString(), + }, + }); + } else { + setAnnotations({ + key: { + ...(currentAnnotation?.key || { type: 'range' }), + endTimestamp: date.toISOString(), + }, + }); + } + } + }} + /> + + ) : ( + { + if (date) { + setAnnotations({ + key: { + ...(currentAnnotation?.key || { type: 'point_in_time' }), + timestamp: date.toISOString(), + }, + }); + } + }} + /> + )} + + + + + { + setAnnotations({ label: value }); + }} + /> + {!isRange && ( + + )} + {!isRange && ( + + )} + {!isRange && ( + + )} + + {isRange && ( + + { + setAnnotations({ + outside: id === `lens_xyChart_fillStyle_outside`, + }); + }} + isFullWidth + /> + + )} + + + setAnnotations({ isHidden: ev.target.checked })} + /> + + + ); +}; + +const ConfigPanelApplyAsRangeSwitch = ({ + annotation, + onChange, + frame, + state, +}: { + annotation?: EventAnnotationConfig; + onChange: (annotations: Partial | undefined) => void; + frame: FramePublicAPI; + state: XYState; +}) => { + const isRange = isRangeAnnotation(annotation); + return ( + + + {i18n.translate('xpack.lens.xyChart.applyAsRange', { + defaultMessage: 'Apply as range', + })} + + } + checked={isRange} + onChange={() => { + if (isRange) { + const newPointAnnotation: PointInTimeEventAnnotationConfig = { + key: { + type: 'point_in_time', + timestamp: annotation.key.timestamp, + }, + id: annotation.id, + label: + annotation.label === defaultRangeAnnotationLabel + ? defaultAnnotationLabel + : annotation.label, + color: toLineAnnotationColor(annotation.color), + isHidden: annotation.isHidden, + }; + onChange(newPointAnnotation); + } else if (annotation) { + const fromTimestamp = moment(annotation?.key.timestamp); + const dataLayers = getDataLayers(state.layers); + const newRangeAnnotation: RangeEventAnnotationConfig = { + key: { + type: 'range', + timestamp: annotation.key.timestamp, + endTimestamp: getEndTimestamp(fromTimestamp.toISOString(), frame, dataLayers), + }, + id: annotation.id, + label: + annotation.label === defaultAnnotationLabel + ? defaultRangeAnnotationLabel + : annotation.label, + color: toRangeAnnotationColor(annotation.color), + isHidden: annotation.isHidden, + }; + onChange(newRangeAnnotation); + } + }} + compressed + /> + + ); +}; + +const ConfigPanelRangeDatePicker = ({ + value, + label, + prependLabel, + onChange, + dataTestSubj = 'lnsXY_annotation_date_picker', +}: { + value: moment.Moment; + prependLabel?: string; + label?: string; + onChange: (val: moment.Moment | null) => void; + dataTestSubj?: string; +}) => { + return ( + + {prependLabel ? ( + {prependLabel} + } + > + + + ) : ( + + )} + + ); +}; + +const ConfigPanelHideSwitch = ({ + value, + onChange, +}: { + value: boolean; + onChange: (event: EuiSwitchEvent) => void; +}) => { + return ( + + + + ); +}; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/icon_set.ts b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/icon_set.ts index 87813ec12913e..32721285a4477 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/icon_set.ts +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/icon_set.ts @@ -4,10 +4,13 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + import { i18n } from '@kbn/i18n'; +import { AvailableAnnotationIcon } from '@kbn/event-annotation-plugin/common'; import { IconTriangle, IconCircle } from '../../../assets/annotation_icons'; +import { IconSet } from '../shared/icon_select'; -export const annotationsIconSet = [ +export const annotationsIconSet: IconSet = [ { value: 'asterisk', label: i18n.translate('xpack.lens.xyChart.iconSelect.asteriskIconLabel', { diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.scss b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.scss new file mode 100644 index 0000000000000..3a0f4b944aa6c --- /dev/null +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.scss @@ -0,0 +1,12 @@ +.lnsRowCompressedMargin+.lnsRowCompressedMargin { + margin-top: $euiSizeS; +} + +.lnsConfigPanelNoPadding { + padding: 0; +} + +.lnsConfigPanelDate__label { + min-width: 56px; // makes both labels ("from" and "to") the same width + text-align: center; +} \ No newline at end of file diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.test.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.test.tsx new file mode 100644 index 0000000000000..f97b4009e3e3e --- /dev/null +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.test.tsx @@ -0,0 +1,222 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { mountWithIntl as mount } from '@kbn/test-jest-helpers'; +import { AnnotationsPanel } from '.'; +import { FramePublicAPI } from '../../../types'; +import { layerTypes } from '../../..'; +import { createMockFramePublicAPI } from '../../../mocks'; +import { State } from '../../types'; +import { Position } from '@elastic/charts'; +import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; +import moment from 'moment'; + +jest.mock('lodash', () => { + const original = jest.requireActual('lodash'); + + return { + ...original, + debounce: (fn: unknown) => fn, + }; +}); + +const customLineStaticAnnotation = { + id: 'ann1', + key: { type: 'point_in_time' as const, timestamp: '2022-03-18T08:25:00.000Z' }, + label: 'Event', + icon: 'triangle' as const, + color: 'red', + lineStyle: 'dashed' as const, + lineWidth: 3, +}; + +describe('AnnotationsPanel', () => { + let frame: FramePublicAPI; + + function testState(): State { + return { + legend: { isVisible: true, position: Position.Right }, + valueLabels: 'hide', + preferredSeriesType: 'bar', + layers: [ + { + layerType: layerTypes.ANNOTATIONS, + layerId: 'annotation', + annotations: [customLineStaticAnnotation], + }, + ], + }; + } + + beforeEach(() => { + frame = createMockFramePublicAPI(); + frame.datasourceLayers = {}; + }); + describe('Dimension Editor', () => { + test('shows correct options for line annotations', () => { + const state = testState(); + const component = mount( + + ); + + expect( + component.find('EuiDatePicker[data-test-subj="lns-xyAnnotation-time"]').prop('selected') + ).toEqual(moment('2022-03-18T08:25:00.000Z')); + expect( + component.find('EuiDatePicker[data-test-subj="lns-xyAnnotation-fromTime"]').exists() + ).toBeFalsy(); + expect( + component.find('EuiDatePicker[data-test-subj="lns-xyAnnotation-toTime"]').exists() + ).toBeFalsy(); + expect( + component.find('EuiSwitch[data-test-subj="lns-xyAnnotation-rangeSwitch"]').prop('checked') + ).toEqual(false); + expect( + component.find('EuiFieldText[data-test-subj="column-label-edit"]').prop('value') + ).toEqual('Event'); + expect( + component.find('EuiComboBox[data-test-subj="lns-icon-select"]').prop('selectedOptions') + ).toEqual([{ label: 'Triangle', value: 'triangle' }]); + expect(component.find('TextDecorationSetting').exists()).toBeTruthy(); + expect(component.find('LineStyleSettings').exists()).toBeTruthy(); + expect( + component.find('EuiButtonGroup[data-test-subj="lns-xyAnnotation-fillStyle"]').exists() + ).toBeFalsy(); + }); + test('shows correct options for range annotations', () => { + const state = testState(); + state.layers[0] = { + annotations: [ + { + color: 'red', + icon: 'triangle', + id: 'ann1', + isHidden: undefined, + key: { + endTimestamp: '2022-03-21T10:49:00.000Z', + timestamp: '2022-03-18T08:25:00.000Z', + type: 'range', + }, + label: 'Event range', + lineStyle: 'dashed', + lineWidth: 3, + }, + ], + layerId: 'annotation', + layerType: 'annotations', + }; + const component = mount( + + ); + + expect( + component.find('EuiDatePicker[data-test-subj="lns-xyAnnotation-fromTime"]').prop('selected') + ).toEqual(moment('2022-03-18T08:25:00.000Z')); + expect( + component.find('EuiDatePicker[data-test-subj="lns-xyAnnotation-toTime"]').prop('selected') + ).toEqual(moment('2022-03-21T10:49:00.000Z')); + expect( + component.find('EuiDatePicker[data-test-subj="lns-xyAnnotation-time"]').exists() + ).toBeFalsy(); + expect( + component.find('EuiSwitch[data-test-subj="lns-xyAnnotation-rangeSwitch"]').prop('checked') + ).toEqual(true); + expect( + component.find('EuiFieldText[data-test-subj="column-label-edit"]').prop('value') + ).toEqual('Event range'); + expect(component.find('EuiComboBox[data-test-subj="lns-icon-select"]').exists()).toBeFalsy(); + expect(component.find('TextDecorationSetting').exists()).toBeFalsy(); + expect(component.find('LineStyleSettings').exists()).toBeFalsy(); + expect(component.find('[data-test-subj="lns-xyAnnotation-fillStyle"]').exists()).toBeTruthy(); + }); + + test('calculates correct endTimstamp and transparent color when switching for range annotation and back', () => { + const state = testState(); + const setState = jest.fn(); + const component = mount( + + ); + component.find('button[data-test-subj="lns-xyAnnotation-rangeSwitch"]').simulate('click'); + + expect(setState).toBeCalledWith({ + ...state, + layers: [ + { + annotations: [ + { + color: '#FF00001A', + id: 'ann1', + isHidden: undefined, + label: 'Event range', + key: { + endTimestamp: '2022-03-21T10:49:00.000Z', + timestamp: '2022-03-18T08:25:00.000Z', + type: 'range', + }, + }, + ], + layerId: 'annotation', + layerType: 'annotations', + }, + ], + }); + component.find('button[data-test-subj="lns-xyAnnotation-rangeSwitch"]').simulate('click'); + expect(setState).toBeCalledWith({ + ...state, + layers: [ + { + annotations: [ + { + color: '#FF0000', + id: 'ann1', + isHidden: undefined, + key: { + timestamp: '2022-03-18T08:25:00.000Z', + type: 'point_in_time', + }, + label: 'Event', + }, + ], + layerId: 'annotation', + layerType: 'annotations', + }, + ], + }); + }); + }); +}); diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.tsx index 6435f4c7ba2b8..bd63354936703 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/annotations_config_panel/index.tsx @@ -5,183 +5,4 @@ * 2.0. */ -import React, { useCallback } from 'react'; -import { i18n } from '@kbn/i18n'; -import { EuiDatePicker, EuiFormRow, EuiSwitch, EuiSwitchEvent } from '@elastic/eui'; -import type { PaletteRegistry } from '@kbn/coloring'; -import moment from 'moment'; -import { EventAnnotationConfig } from '@kbn/event-annotation-plugin/common/types'; -import type { VisualizationDimensionEditorProps } from '../../../types'; -import { State, XYState, XYAnnotationLayerConfig } from '../../types'; -import { FormatFactory } from '../../../../common'; -import { DimensionEditorSection, NameInput, useDebouncedValue } from '../../../shared_components'; -import { isHorizontalChart } from '../../state_helpers'; -import { defaultAnnotationLabel } from '../../annotations/helpers'; -import { ColorPicker } from '../color_picker'; -import { IconSelectSetting, TextDecorationSetting } from '../shared/marker_decoration_settings'; -import { LineStyleSettings } from '../shared/line_style_settings'; -import { updateLayer } from '..'; -import { annotationsIconSet } from './icon_set'; - -export const AnnotationsPanel = ( - props: VisualizationDimensionEditorProps & { - formatFactory: FormatFactory; - paletteService: PaletteRegistry; - } -) => { - const { state, setState, layerId, accessor } = props; - const isHorizontal = isHorizontalChart(state.layers); - - const { inputValue: localState, handleInputChange: setLocalState } = useDebouncedValue({ - value: state, - onChange: setState, - }); - - const index = localState.layers.findIndex((l) => l.layerId === layerId); - const localLayer = localState.layers.find( - (l) => l.layerId === layerId - ) as XYAnnotationLayerConfig; - - const currentAnnotations = localLayer.annotations?.find((c) => c.id === accessor); - - const setAnnotations = useCallback( - (annotations: Partial | undefined) => { - if (annotations == null) { - return; - } - const newConfigs = [...(localLayer.annotations || [])]; - const existingIndex = newConfigs.findIndex((c) => c.id === accessor); - if (existingIndex !== -1) { - newConfigs[existingIndex] = { ...newConfigs[existingIndex], ...annotations }; - } else { - return; // that should never happen because annotations are created before annotations panel is opened - } - setLocalState(updateLayer(localState, { ...localLayer, annotations: newConfigs }, index)); - }, - [accessor, index, localState, localLayer, setLocalState] - ); - - return ( - <> - - { - if (date) { - setAnnotations({ - key: { - ...(currentAnnotations?.key || { type: 'point_in_time' }), - timestamp: date.toISOString(), - }, - }); - } - }} - label={i18n.translate('xpack.lens.xyChart.annotationDate', { - defaultMessage: 'Annotation date', - })} - /> - - - { - setAnnotations({ label: value }); - }} - /> - - - - - setAnnotations({ isHidden: ev.target.checked })} - /> - - - ); -}; - -const ConfigPanelDatePicker = ({ - value, - label, - onChange, -}: { - value: moment.Moment; - label: string; - onChange: (val: moment.Moment | null) => void; -}) => { - return ( - - - - ); -}; - -const ConfigPanelHideSwitch = ({ - value, - onChange, -}: { - value: boolean; - onChange: (event: EuiSwitchEvent) => void; -}) => { - return ( - - - - ); -}; +export { AnnotationsPanel } from './annotations_panel'; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/color_picker.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/color_picker.tsx index 37ee50f527d43..00f03f261ef7b 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/color_picker.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/color_picker.tsx @@ -5,23 +5,26 @@ * 2.0. */ -import React, { useMemo, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; +import chroma from 'chroma-js'; import { i18n } from '@kbn/i18n'; -import { EuiFormRow, EuiColorPicker, EuiColorPickerProps, EuiToolTip, EuiIcon } from '@elastic/eui'; +import { + EuiFormRow, + EuiColorPicker, + EuiColorPickerProps, + EuiToolTip, + EuiIcon, + euiPaletteColorBlind, +} from '@elastic/eui'; import type { PaletteRegistry } from '@kbn/coloring'; -import { defaultAnnotationColor } from '@kbn/event-annotation-plugin/public'; import type { VisualizationDimensionEditorProps } from '../../types'; -import { State, XYDataLayerConfig } from '../types'; +import { State } from '../types'; import { FormatFactory } from '../../../common'; import { getSeriesColor } from '../state_helpers'; -import { - defaultReferenceLineColor, - getAccessorColorConfig, - getColorAssignments, -} from '../color_assignment'; +import { getAccessorColorConfig, getColorAssignments } from '../color_assignment'; import { getSortedAccessors } from '../to_expression'; import { TooltipWrapper } from '../../shared_components'; -import { isReferenceLayer, isAnnotationsLayer, getDataLayers } from '../visualization_helpers'; +import { getDataLayers, isDataLayer } from '../visualization_helpers'; const tooltipContent = { auto: i18n.translate('xpack.lens.configPanel.color.tooltip.auto', { @@ -47,6 +50,8 @@ export const ColorPicker = ({ disableHelpTooltip, disabled, setConfig, + showAlpha, + defaultColor, }: VisualizationDimensionEditorProps & { formatFactory: FormatFactory; paletteService: PaletteRegistry; @@ -54,6 +59,8 @@ export const ColorPicker = ({ disableHelpTooltip?: boolean; disabled?: boolean; setConfig: (config: { color?: string }) => void; + showAlpha?: boolean; + defaultColor?: string; }) => { const index = state.layers.findIndex((l) => l.layerId === layerId); const layer = state.layers[index]; @@ -61,38 +68,47 @@ export const ColorPicker = ({ const overwriteColor = getSeriesColor(layer, accessor); const currentColor = useMemo(() => { if (overwriteColor || !frame.activeData) return overwriteColor; - if (isReferenceLayer(layer)) { - return defaultReferenceLineColor; - } else if (isAnnotationsLayer(layer)) { - return defaultAnnotationColor; + if (defaultColor) { + return defaultColor; } - - const dataLayer: XYDataLayerConfig = layer; - const sortedAccessors: string[] = getSortedAccessors( - frame.datasourceLayers[layer.layerId] ?? layer.accessors, - layer - ); - - const colorAssignments = getColorAssignments( - getDataLayers(state.layers), - { tables: frame.activeData }, - formatFactory - ); - const mappedAccessors = getAccessorColorConfig( - colorAssignments, - frame, - { - ...dataLayer, - accessors: sortedAccessors.filter((sorted) => dataLayer.accessors.includes(sorted)), - }, - paletteService - ); - - return mappedAccessors.find((a) => a.columnId === accessor)?.color || null; - }, [overwriteColor, frame, paletteService, state.layers, accessor, formatFactory, layer]); + if (isDataLayer(layer)) { + const sortedAccessors: string[] = getSortedAccessors( + frame.datasourceLayers[layer.layerId] ?? layer.accessors, + layer + ); + const colorAssignments = getColorAssignments( + getDataLayers(state.layers), + { tables: frame.activeData ?? {} }, + formatFactory + ); + const mappedAccessors = getAccessorColorConfig( + colorAssignments, + frame, + { + ...layer, + accessors: sortedAccessors.filter((sorted) => layer.accessors.includes(sorted)), + }, + paletteService + ); + return mappedAccessors.find((a) => a.columnId === accessor)?.color || null; + } + }, [ + overwriteColor, + frame, + paletteService, + state.layers, + accessor, + formatFactory, + layer, + defaultColor, + ]); const [color, setColor] = useState(currentColor); + useEffect(() => { + setColor(currentColor); + }, [currentColor]); + const handleColor: EuiColorPickerProps['onChange'] = (text, output) => { setColor(text); if (output.isValid || text === '') { @@ -107,8 +123,11 @@ export const ColorPicker = ({ defaultMessage: 'Series color', }); + const currentColorAlpha = color ? chroma(color).alpha() : 1; + const colorPicker = ( chroma(c).alpha(currentColorAlpha).hex()) + } /> ); diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/dimension_editor.tsx index 39d08e4c710bd..eec3335c5b44c 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/dimension_editor.tsx @@ -9,7 +9,7 @@ import React, { useCallback } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonGroup, EuiFormRow, htmlIdGenerator } from '@elastic/eui'; import type { PaletteRegistry } from '@kbn/coloring'; -import { YAxisMode, YConfig } from '@kbn/expression-xy-plugin/common'; +import { YAxisMode, ExtendedYConfig } from '@kbn/expression-xy-plugin/common'; import type { VisualizationDimensionEditorProps } from '../../types'; import { State, XYState, XYDataLayerConfig } from '../types'; import { FormatFactory } from '../../../common'; @@ -17,7 +17,7 @@ import { isHorizontalChart } from '../state_helpers'; import { ColorPicker } from './color_picker'; import { PalettePicker, useDebouncedValue } from '../../shared_components'; import { isAnnotationsLayer, isReferenceLayer } from '../visualization_helpers'; -import { ReferenceLinePanel } from './reference_line_panel'; +import { ReferenceLinePanel } from './reference_line_config_panel'; import { AnnotationsPanel } from './annotations_config_panel'; type UnwrapArray = T extends Array ? P : T; @@ -57,7 +57,7 @@ export function DimensionEditor( const axisMode = localYConfig?.axisMode || 'auto'; const setConfig = useCallback( - (yConfig: Partial | undefined) => { + (yConfig: Partial | undefined) => { if (yConfig == null) { return; } diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/index.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/index.tsx index b61f4694f8a91..00c4e9c8eaeb2 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/index.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/index.tsx @@ -7,7 +7,7 @@ import React, { memo, useCallback } from 'react'; import { i18n } from '@kbn/i18n'; -import { Position, ScaleType, VerticalAlignment, HorizontalAlignment } from '@elastic/charts'; +import { Position, ScaleType } from '@elastic/charts'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { AxesSettingsConfig, AxisExtentConfig } from '@kbn/expression-xy-plugin/common'; import type { VisualizationToolbarProps, FramePublicAPI } from '../../types'; @@ -21,6 +21,7 @@ import { getScaleType } from '../to_expression'; import { TooltipWrapper } from '../../shared_components'; import { getDefaultVisualValuesForLayer } from '../../shared_components/datasource_default_values'; import { getDataLayers } from '../visualization_helpers'; +import { LegendSettingsPopoverProps } from '../../shared_components/legend_settings_popover'; type UnwrapArray = T extends Array ? P : T; type AxesSettingsConfigKeys = keyof AxesSettingsConfig; @@ -380,8 +381,10 @@ export const XyToolbar = memo(function XyToolbar( }} onAlignmentChange={(value) => { const [vertical, horizontal] = value.split('_'); - const verticalAlignment = vertical as VerticalAlignment; - const horizontalAlignment = horizontal as HorizontalAlignment; + const verticalAlignment = vertical as LegendSettingsPopoverProps['verticalAlignment']; + const horizontalAlignment = + horizontal as LegendSettingsPopoverProps['horizontalAlignment']; + setState({ ...state, legend: { ...state.legend, verticalAlignment, horizontalAlignment }, diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/layer_header.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/layer_header.tsx index 367785da2d6b1..1fbb2af8f1e98 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/layer_header.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/layer_header.tsx @@ -11,14 +11,14 @@ import { EuiIcon, EuiPopover, EuiSelectable, EuiText, EuiPopoverTitle } from '@e import { SeriesType } from '@kbn/expression-xy-plugin/common'; import { ToolbarButton } from '@kbn/kibana-react-plugin/public'; import type { VisualizationLayerWidgetProps, VisualizationType } from '../../types'; -import { State, visualizationTypes, XYDataLayerConfig } from '../types'; +import { State, visualizationTypes } from '../types'; import { isHorizontalChart, isHorizontalSeries } from '../state_helpers'; import { trackUiEvent } from '../../lens_ui_telemetry'; import { StaticHeader } from '../../shared_components'; import { LensIconChartBarReferenceLine } from '../../assets/chart_bar_reference_line'; import { LensIconChartBarAnnotations } from '../../assets/chart_bar_annotations'; import { updateLayer } from '.'; -import { isAnnotationsLayer, isReferenceLayer } from '../visualization_helpers'; +import { isAnnotationsLayer, isDataLayer, isReferenceLayer } from '../visualization_helpers'; export function LayerHeader(props: VisualizationLayerWidgetProps) { const layer = props.state.layers.find((l) => l.layerId === props.layerId); @@ -58,7 +58,7 @@ function AnnotationsLayerHeader() { function DataLayerHeader(props: VisualizationLayerWidgetProps) { const [isPopoverOpen, setPopoverIsOpen] = useState(false); const { state, layerId } = props; - const layers = state.layers as XYDataLayerConfig[]; + const layers = state.layers.filter(isDataLayer); const index = layers.findIndex((l) => l.layerId === layerId); const layer = layers[index]; const currentVisType = visualizationTypes.find(({ id }) => id === layer.seriesType)!; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/icon_set.ts b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/icon_set.ts new file mode 100644 index 0000000000000..eda5d06cd3ef1 --- /dev/null +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/icon_set.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 { i18n } from '@kbn/i18n'; +import { AvailableReferenceLineIcon } from '@kbn/expression-xy-plugin/common'; +import { IconSet } from '../shared/icon_select'; + +export const referenceLineIconsSet: IconSet = [ + { + value: 'empty', + label: i18n.translate('xpack.lens.xyChart.iconSelect.noIconLabel', { + defaultMessage: 'None', + }), + }, + { + value: 'asterisk', + label: i18n.translate('xpack.lens.xyChart.iconSelect.asteriskIconLabel', { + defaultMessage: 'Asterisk', + }), + }, + { + value: 'bell', + label: i18n.translate('xpack.lens.xyChart.iconSelect.bellIconLabel', { + defaultMessage: 'Bell', + }), + }, + { + value: 'bolt', + label: i18n.translate('xpack.lens.xyChart.iconSelect.boltIconLabel', { + defaultMessage: 'Bolt', + }), + }, + { + value: 'bug', + label: i18n.translate('xpack.lens.xyChart.iconSelect.bugIconLabel', { + defaultMessage: 'Bug', + }), + }, + { + value: 'editorComment', + label: i18n.translate('xpack.lens.xyChart.iconSelect.commentIconLabel', { + defaultMessage: 'Comment', + }), + }, + { + value: 'alert', + label: i18n.translate('xpack.lens.xyChart.iconSelect.alertIconLabel', { + defaultMessage: 'Alert', + }), + }, + { + value: 'flag', + label: i18n.translate('xpack.lens.xyChart.iconSelect.flagIconLabel', { + defaultMessage: 'Flag', + }), + }, + { + value: 'tag', + label: i18n.translate('xpack.lens.xyChart.iconSelect.tagIconLabel', { + defaultMessage: 'Tag', + }), + }, +]; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/index.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/index.tsx new file mode 100644 index 0000000000000..4297f7d35cd6c --- /dev/null +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/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 { ReferenceLinePanel } from './reference_line_panel'; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_panel.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx similarity index 80% rename from x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_panel.tsx rename to x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx index d5a3e8ffd7a46..e25c191d2bec1 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_panel.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx @@ -9,22 +9,24 @@ import React, { useCallback } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonGroup, EuiFormRow } from '@elastic/eui'; import type { PaletteRegistry } from '@kbn/coloring'; -import { FillStyle, YConfig } from '@kbn/expression-xy-plugin/common'; -import type { VisualizationDimensionEditorProps } from '../../types'; -import { State, XYState, XYReferenceLineLayerConfig } from '../types'; -import { FormatFactory } from '../../../common'; +import { FillStyle, ExtendedYConfig } from '@kbn/expression-xy-plugin/common'; +import type { VisualizationDimensionEditorProps } from '../../../types'; +import { State, XYState, XYReferenceLineLayerConfig } from '../../types'; +import { FormatFactory } from '../../../../common'; -import { ColorPicker } from './color_picker'; -import { updateLayer } from '.'; -import { useDebouncedValue } from '../../shared_components'; -import { idPrefix } from './dimension_editor'; -import { isHorizontalChart } from '../state_helpers'; +import { ColorPicker } from '../color_picker'; +import { updateLayer } from '..'; +import { useDebouncedValue } from '../../../shared_components'; +import { idPrefix } from '../dimension_editor'; +import { isHorizontalChart } from '../../state_helpers'; import { IconSelectSetting, MarkerDecorationPosition, TextDecorationSetting, -} from './shared/marker_decoration_settings'; -import { LineStyleSettings } from './shared/line_style_settings'; +} from '../shared/marker_decoration_settings'; +import { LineStyleSettings } from '../shared/line_style_settings'; +import { referenceLineIconsSet } from './icon_set'; +import { defaultReferenceLineColor } from '../../color_assignment'; export const ReferenceLinePanel = ( props: VisualizationDimensionEditorProps & { @@ -50,7 +52,7 @@ export const ReferenceLinePanel = ( ); const setConfig = useCallback( - (yConfig: Partial | undefined) => { + (yConfig: Partial | undefined) => { if (yConfig == null) { return; } @@ -74,7 +76,11 @@ export const ReferenceLinePanel = ( return ( <> - + | undefined) => void; + currentConfig?: ExtendedYConfig; + setConfig: (yConfig: Partial | undefined) => void; isHorizontal: boolean; }) => { return ( diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/shared/icon_select.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/shared/icon_select.tsx index e2b5923e81031..74eb23e3e8297 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/shared/icon_select.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/shared/icon_select.tsx @@ -6,71 +6,20 @@ */ import React from 'react'; -import { i18n } from '@kbn/i18n'; import { EuiComboBox, EuiFlexGroup, EuiFlexItem, EuiIcon, IconType } from '@elastic/eui'; +import { AvailableReferenceLineIcon } from '@kbn/expression-xy-plugin/common'; export function hasIcon(icon: string | undefined): icon is string { return icon != null && icon !== 'empty'; } -export type IconSet = Array<{ value: string; label: string; icon?: IconType }>; - -export const euiIconsSet = [ - { - value: 'empty', - label: i18n.translate('xpack.lens.xyChart.iconSelect.noIconLabel', { - defaultMessage: 'None', - }), - }, - { - value: 'asterisk', - label: i18n.translate('xpack.lens.xyChart.iconSelect.asteriskIconLabel', { - defaultMessage: 'Asterisk', - }), - }, - { - value: 'bell', - label: i18n.translate('xpack.lens.xyChart.iconSelect.bellIconLabel', { - defaultMessage: 'Bell', - }), - }, - { - value: 'bolt', - label: i18n.translate('xpack.lens.xyChart.iconSelect.boltIconLabel', { - defaultMessage: 'Bolt', - }), - }, - { - value: 'bug', - label: i18n.translate('xpack.lens.xyChart.iconSelect.bugIconLabel', { - defaultMessage: 'Bug', - }), - }, - { - value: 'editorComment', - label: i18n.translate('xpack.lens.xyChart.iconSelect.commentIconLabel', { - defaultMessage: 'Comment', - }), - }, - { - value: 'alert', - label: i18n.translate('xpack.lens.xyChart.iconSelect.alertIconLabel', { - defaultMessage: 'Alert', - }), - }, - { - value: 'flag', - label: i18n.translate('xpack.lens.xyChart.iconSelect.flagIconLabel', { - defaultMessage: 'Flag', - }), - }, - { - value: 'tag', - label: i18n.translate('xpack.lens.xyChart.iconSelect.tagIconLabel', { - defaultMessage: 'Tag', - }), - }, -]; +export type IconSet = Array<{ + value: T; + label: string; + icon?: T | IconType; + shouldRotate?: boolean; + canFill?: boolean; +}>; const IconView = (props: { value?: string; label: string; icon?: IconType }) => { if (!props.value) return null; @@ -84,24 +33,33 @@ const IconView = (props: { value?: string; label: string; icon?: IconType }) => ); }; -export const IconSelect = ({ +export function IconSelect({ value, onChange, - customIconSet = euiIconsSet, + customIconSet, + defaultIcon = 'empty', }: { - value?: string; - onChange: (newIcon: string) => void; - customIconSet?: IconSet; -}) => { + value?: Icon; + onChange: (newIcon: Icon) => void; + customIconSet: IconSet; + defaultIcon?: string; +}) { const selectedIcon = customIconSet.find((option) => value === option.value) || - customIconSet.find((option) => option.value === 'empty')!; + customIconSet.find((option) => option.value === defaultIcon)!; return ( { onChange(selection[0].value!); }} @@ -115,4 +73,4 @@ export const IconSelect = ({ } /> ); -}; +} diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/shared/marker_decoration_settings.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/shared/marker_decoration_settings.tsx index b780737877388..64b00ef246161 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/shared/marker_decoration_settings.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/shared/marker_decoration_settings.tsx @@ -71,22 +71,22 @@ function getIconPositionOptions({ isHorizontal, axisMode }: LabelConfigurationOp ]; } -interface MarkerDecorationConfig { +export interface MarkerDecorationConfig { axisMode?: YAxisMode; - icon?: string; + icon?: T; iconPosition?: IconPosition; textVisibility?: boolean; } -export const TextDecorationSetting = ({ +export function TextDecorationSetting({ currentConfig, setConfig, customIconSet, }: { - currentConfig?: MarkerDecorationConfig; - setConfig: (config: MarkerDecorationConfig) => void; - customIconSet?: IconSet; -}) => { + currentConfig?: MarkerDecorationConfig; + setConfig: (config: MarkerDecorationConfig) => void; + customIconSet?: IconSet; +}) { return ( ); -}; +} -export const IconSelectSetting = ({ +export function IconSelectSetting({ currentConfig, setConfig, customIconSet, + defaultIcon = 'empty', }: { - currentConfig?: MarkerDecorationConfig; - setConfig: (config: MarkerDecorationConfig) => void; - customIconSet?: IconSet; -}) => { + currentConfig?: MarkerDecorationConfig; + setConfig: (config: MarkerDecorationConfig) => void; + customIconSet: IconSet; + defaultIcon?: string; +}) { return ( { @@ -154,17 +157,17 @@ export const IconSelectSetting = ({ /> ); -}; +} -export const MarkerDecorationPosition = ({ +export function MarkerDecorationPosition({ currentConfig, setConfig, isHorizontal, }: { - currentConfig?: MarkerDecorationConfig; - setConfig: (config: MarkerDecorationConfig) => void; + currentConfig?: MarkerDecorationConfig; + setConfig: (config: MarkerDecorationConfig) => void; isHorizontal: boolean; -}) => { +}) { return ( <> {hasIcon(currentConfig?.icon) || currentConfig?.textVisibility ? ( @@ -210,4 +213,4 @@ export const MarkerDecorationPosition = ({ ) : null} ); -}; +} diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/visual_options_popover/index.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/visual_options_popover/index.tsx index d4edb960e70f7..ba8a246043bf2 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/visual_options_popover/index.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel/visual_options_popover/index.tsx @@ -7,7 +7,6 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { ValidLayer } from '@kbn/expression-xy-plugin/common'; import { ToolbarPopover, TooltipWrapper, ValueLabelsSettings } from '../../../shared_components'; import { MissingValuesOptions } from './missing_values_option'; import { LineCurveOption } from './line_curve_option'; @@ -67,9 +66,7 @@ export const VisualOptionsPopover: React.FC = ({ ['area_stacked', 'area', 'area_percentage_stacked'].includes(seriesType) ); - const isHistogramSeries = Boolean( - hasHistogramSeries(dataLayers as ValidLayer[], datasourceLayers) - ); + const isHistogramSeries = Boolean(hasHistogramSeries(dataLayers, datasourceLayers)); const isValueLabelsEnabled = !hasNonBarSeries && hasBarNotStacked && !isHistogramSeries; const isFittingEnabled = hasNonBarSeries; diff --git a/x-pack/plugins/lens/readme.md b/x-pack/plugins/lens/readme.md index c85005c09754e..84cea6feead06 100644 --- a/x-pack/plugins/lens/readme.md +++ b/x-pack/plugins/lens/readme.md @@ -14,8 +14,9 @@ Run all tests from the `x-pack` root directory - Unit tests: `yarn test:jest x-pack/plugins/lens` - Functional tests: - Run `node scripts/functional_tests_server` - - Run `node ../scripts/functional_test_runner.js --config ./test/functional/config.js --grep="lens app"` - - You may want to comment out all imports except for Lens in the config file. + - Run `node ../scripts/functional_test_runner.js --config ./test/functional/apps/lens/group1/config.ts` + - Run `node ../scripts/functional_test_runner.js --config ./test/functional/apps/lens/group2/config.ts` + - Run `node ../scripts/functional_test_runner.js --config ./test/functional/apps/lens/group3/config.ts` - API Functional tests: - Run `node scripts/functional_tests_server` - Run `node ../scripts/functional_test_runner.js --config ./test/api_integration/config.ts --grep=Lens` diff --git a/x-pack/plugins/lens/server/embeddable/make_lens_embeddable_factory.ts b/x-pack/plugins/lens/server/embeddable/make_lens_embeddable_factory.ts index 0f996e428ed2c..215f080d3dbdf 100644 --- a/x-pack/plugins/lens/server/embeddable/make_lens_embeddable_factory.ts +++ b/x-pack/plugins/lens/server/embeddable/make_lens_embeddable_factory.ts @@ -14,6 +14,7 @@ import { import { DOC_TYPE } from '../../common'; import { commonEnhanceTableRowHeight, + commonFixValueLabelsInXY, commonLockOldMetricVisSettings, commonMakeReversePaletteAsCustom, commonRemoveTimezoneDateHistogramParam, @@ -34,7 +35,9 @@ import { LensDocShapePre712, VisState716, VisState810, + VisState820, VisStatePre715, + VisStatePre830, } from '../migrations/types'; import { extract, inject } from '../../common/embeddable_factory'; @@ -95,18 +98,26 @@ export const makeLensEmbeddableFactory = } as unknown as SerializableRecord; }, '8.2.0': (state) => { - const lensState = state as unknown as { attributes: LensDocShape810 }; + const lensState = state as unknown as { + attributes: LensDocShape810; + }; let migratedLensState = commonSetLastValueShowArrayValues(lensState.attributes); - migratedLensState = commonEnhanceTableRowHeight(migratedLensState); + migratedLensState = commonEnhanceTableRowHeight( + migratedLensState as LensDocShape810 + ); migratedLensState = commonSetIncludeEmptyRowsDateHistogram(migratedLensState); + return { ...lensState, attributes: migratedLensState, } as unknown as SerializableRecord; }, '8.3.0': (state) => { - const lensState = state as unknown as { attributes: LensDocShape810 }; - const migratedLensState = commonLockOldMetricVisSettings(lensState.attributes); + const lensState = state as unknown as { attributes: LensDocShape810 }; + let migratedLensState = commonLockOldMetricVisSettings(lensState.attributes); + migratedLensState = commonFixValueLabelsInXY( + migratedLensState as LensDocShape810 + ); return { ...lensState, attributes: migratedLensState, diff --git a/x-pack/plugins/lens/server/migrations/common_migrations.ts b/x-pack/plugins/lens/server/migrations/common_migrations.ts index df0ce94abca84..7cafa41f569d4 100644 --- a/x-pack/plugins/lens/server/migrations/common_migrations.ts +++ b/x-pack/plugins/lens/server/migrations/common_migrations.ts @@ -25,8 +25,11 @@ import { VisState716, VisState810, VisState820, + VisState830, CustomVisualizationMigrations, LensDocShape810, + LensDocShape830, + VisStatePre830, } from './types'; import { DOCUMENT_FIELD_NAME, layerTypes, MetricState } from '../../common'; import { LensDocShape } from './saved_object_migrations'; @@ -194,9 +197,7 @@ export const commonRenameFilterReferences = (attributes: LensDocShape715): LensD return newAttributes as LensDocShape810; }; -export const commonSetLastValueShowArrayValues = ( - attributes: LensDocShape810 -): LensDocShape810 => { +export const commonSetLastValueShowArrayValues = (attributes: LensDocShape810): LensDocShape810 => { const newAttributes = cloneDeep(attributes); for (const layer of Object.values(newAttributes.state.datasourceStates.indexpattern.layers)) { for (const column of Object.values(layer.columns)) { @@ -215,19 +216,19 @@ export const commonEnhanceTableRowHeight = ( attributes: LensDocShape810 ): LensDocShape810 => { if (attributes.visualizationType !== 'lnsDatatable') { - return attributes; + return attributes as LensDocShape810; } const visState810 = attributes.state.visualization as VisState810; const newAttributes = cloneDeep(attributes); const vizState = newAttributes.state.visualization as VisState820; vizState.rowHeight = visState810.fitRowToContent ? 'auto' : 'single'; vizState.rowHeightLines = visState810.fitRowToContent ? 2 : 1; - return newAttributes; + return newAttributes as LensDocShape810; }; export const commonSetIncludeEmptyRowsDateHistogram = ( attributes: LensDocShape810 -): LensDocShape810 => { +): LensDocShape810 => { const newAttributes = cloneDeep(attributes); for (const layer of Object.values(newAttributes.state.datasourceStates.indexpattern.layers)) { for (const column of Object.values(layer.columns)) { @@ -241,17 +242,17 @@ export const commonSetIncludeEmptyRowsDateHistogram = ( export const commonLockOldMetricVisSettings = ( attributes: LensDocShape810 -): LensDocShape810 => { +): LensDocShape830 => { const newAttributes = cloneDeep(attributes); if (newAttributes.visualizationType !== 'lnsMetric') { - return newAttributes; + return newAttributes as LensDocShape830; } const visState = newAttributes.state.visualization as MetricState; visState.textAlign = visState.textAlign ?? 'center'; visState.titlePosition = visState.titlePosition ?? 'bottom'; visState.size = visState.size ?? 'xl'; - return newAttributes; + return newAttributes as LensDocShape830; }; const getApplyCustomVisualizationMigrationToLens = (id: string, migration: MigrateFunction) => { @@ -343,3 +344,25 @@ export const fixLensTopValuesCustomFormatting = (attributes: LensDocShape810): L ); return newAttributes as LensDocShape810; }; + +export const commonFixValueLabelsInXY = ( + attributes: LensDocShape830 +): LensDocShape830 => { + if (attributes.visualizationType !== 'lnsXY') { + return attributes as LensDocShape830; + } + + const newAttributes: LensDocShape830 = cloneDeep(attributes); + const { visualization } = newAttributes.state; + const { valueLabels } = visualization; + return { + ...newAttributes, + state: { + ...newAttributes.state, + visualization: { + ...visualization, + valueLabels: valueLabels && valueLabels !== 'hide' ? 'show' : valueLabels, + }, + }, + }; +}; diff --git a/x-pack/plugins/lens/server/migrations/saved_object_migrations.test.ts b/x-pack/plugins/lens/server/migrations/saved_object_migrations.test.ts index 7fb9c350a0fa5..af68c5020e420 100644 --- a/x-pack/plugins/lens/server/migrations/saved_object_migrations.test.ts +++ b/x-pack/plugins/lens/server/migrations/saved_object_migrations.test.ts @@ -21,6 +21,7 @@ import { VisStatePre715, VisState810, VisState820, + VisState830, } from './types'; import { layerTypes, MetricState } from '../../common'; import { Filter } from '@kbn/es-query'; @@ -2113,4 +2114,52 @@ describe('Lens migrations', () => { expect(visState.size).toBe('s'); }); }); + + describe('8.3.0 valueLabels in XY', () => { + const context = { log: { warning: () => {} } } as unknown as SavedObjectMigrationContext; + const example = { + type: 'lens', + id: 'mocked-saved-object-id', + attributes: { + savedObjectId: '1', + title: 'MyRenamedOps', + description: '', + visualizationType: 'lnsXY', + state: { + visualization: { + valueLabels: 'inside', + }, + }, + }, + } as unknown as SavedObjectUnsanitizedDoc; + + it('migrates valueLabels from `inside` to `show`', () => { + const result = migrations['8.3.0'](example, context) as ReturnType< + SavedObjectMigrationFn + >; + const visState = result.attributes.state.visualization as VisState830; + expect(visState.valueLabels).toBe('show'); + }); + + it("doesn't migrate valueLabels with `hide` value", () => { + const result = migrations['8.3.0']( + { + ...example, + attributes: { + ...example.attributes, + state: { + ...example.attributes.state, + visualization: { + ...(example.attributes.state.visualization as Record), + valueLabels: 'hide', + }, + }, + }, + }, + context + ) as ReturnType>; + const visState = result.attributes.state.visualization as VisState830; + expect(visState.valueLabels).toBe('hide'); + }); + }); }); diff --git a/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts b/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts index f5fa4b27447ac..00ec6c29154e3 100644 --- a/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts +++ b/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts @@ -13,9 +13,7 @@ import { SavedObjectReference, SavedObjectUnsanitizedDoc, } from '@kbn/core/server'; -import { Filter } from '@kbn/es-query'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { Query } from '@kbn/data-plugin/public'; +import type { Query, Filter } from '@kbn/es-query'; import { mergeSavedObjectMigrationMaps } from '@kbn/core/server'; import { MigrateFunctionsObject } from '@kbn/kibana-utils-plugin/common'; import { PersistableFilter } from '../../common'; @@ -30,6 +28,11 @@ import { VisState716, CustomVisualizationMigrations, LensDocShape810, + LensDocShape830, + XYVisualizationStatePre830, + XYVisualizationState830, + VisState810, + VisState820, } from './types'; import { commonRenameOperationsForFormula, @@ -44,6 +47,7 @@ import { commonSetLastValueShowArrayValues, commonEnhanceTableRowHeight, commonSetIncludeEmptyRowsDateHistogram, + commonFixValueLabelsInXY, commonLockOldMetricVisSettings, } from './common_migrations'; @@ -475,7 +479,10 @@ const setLastValueShowArrayValues: SavedObjectMigrationFn = (doc) => { +const enhanceTableRowHeight: SavedObjectMigrationFn< + LensDocShape810, + LensDocShape810 +> = (doc) => { const newDoc = cloneDeep(doc); return { ...newDoc, attributes: commonEnhanceTableRowHeight(newDoc.attributes) }; }; @@ -486,6 +493,14 @@ const setIncludeEmptyRowsDateHistogram: SavedObjectMigrationFn, + LensDocShape830 +> = (doc) => { + const newDoc = cloneDeep(doc); + return { ...newDoc, attributes: commonFixValueLabelsInXY(newDoc.attributes) }; +}; + const lockOldMetricVisSettings: SavedObjectMigrationFn = ( doc ) => ({ ...doc, attributes: commonLockOldMetricVisSettings(doc.attributes) }); @@ -509,7 +524,7 @@ const lensMigrations: SavedObjectMigrationMap = { setIncludeEmptyRowsDateHistogram, enhanceTableRowHeight ), - '8.3.0': lockOldMetricVisSettings, + '8.3.0': flow(lockOldMetricVisSettings, fixValueLabelsInXY), }; export const getAllMigrations = ( diff --git a/x-pack/plugins/lens/server/migrations/types.ts b/x-pack/plugins/lens/server/migrations/types.ts index 9b66f7023cdeb..6b38bb4b4f631 100644 --- a/x-pack/plugins/lens/server/migrations/types.ts +++ b/x-pack/plugins/lens/server/migrations/types.ts @@ -6,11 +6,9 @@ */ import type { PaletteOutput, CustomPaletteParams } from '@kbn/coloring'; -import { Filter } from '@kbn/es-query'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { Query } from '@kbn/data-plugin/public'; +import type { Query, Filter } from '@kbn/es-query'; import type { MigrateFunctionsObject } from '@kbn/kibana-utils-plugin/common'; -import type { LayerType, PersistableFilter } from '../../common'; +import type { LayerType, PersistableFilter, ValueLabelConfig } from '../../common'; export type CustomVisualizationMigrations = Record MigrateFunctionsObject>; @@ -204,7 +202,7 @@ export type LensDocShape810 = Omit< 'filters' | 'state' > & { filters: Filter[]; - state: Omit & { + state: Omit['state'], 'datasourceStates'> & { datasourceStates: { indexpattern: Omit & { layers: Record< @@ -258,3 +256,16 @@ export interface VisState820 { rowHeight: 'auto' | 'single' | 'custom'; rowHeightLines: number; } + +export type LensDocShape830 = LensDocShape810; + +export interface XYVisualizationStatePre830 extends VisState820 { + valueLabels: 'hide' | 'inside' | 'outside'; +} + +export interface XYVisualizationState830 extends VisState820 { + valueLabels: ValueLabelConfig; +} + +export type VisStatePre830 = XYVisualizationStatePre830; +export type VisState830 = XYVisualizationState830; diff --git a/x-pack/plugins/maps/README.md b/x-pack/plugins/maps/README.md index 729cba26f72ab..de683af8ac627 100644 --- a/x-pack/plugins/maps/README.md +++ b/x-pack/plugins/maps/README.md @@ -10,4 +10,7 @@ Run all tests from the `x-pack` root directory - Unit tests: `yarn test:jest x-pack/plugins/maps --watch` - Functional tests: - Run `node scripts/functional_tests_server` - - Run `node ../scripts/functional_test_runner.js --config ./test/functional/config.js --grep="maps app"` \ No newline at end of file + - Run `node ../scripts/functional_test_runner.js --config ./test/functional/apps/maps/group1/config.ts` + - Run `node ../scripts/functional_test_runner.js --config ./test/functional/apps/maps/group2/config.ts` + - Run `node ../scripts/functional_test_runner.js --config ./test/functional/apps/maps/group3/config.ts` + - Run `node ../scripts/functional_test_runner.js --config ./test/functional/apps/maps/group4/config.ts` \ No newline at end of file diff --git a/x-pack/plugins/maps/common/descriptor_types/layer_descriptor_types.ts b/x-pack/plugins/maps/common/descriptor_types/layer_descriptor_types.ts index 1cd8b254f9e14..996e3d7303b82 100644 --- a/x-pack/plugins/maps/common/descriptor_types/layer_descriptor_types.ts +++ b/x-pack/plugins/maps/common/descriptor_types/layer_descriptor_types.ts @@ -35,11 +35,17 @@ export type TileMetaFeature = Feature & { 'hits.total.value': number; // For _mvt requests with "aggs" property in request: aggregation statistics returned in the pattern outined below + // aggregations._count.avg + // aggregations._count.count // aggregations._count.min // aggregations._count.max + // aggregations._count.sum + // aggregations..avg + // aggregations..count // aggregations..min // aggregations..max - [key: string]: number | string; + // aggregations..sum + [key: string]: number | string | boolean; }; }; diff --git a/x-pack/plugins/maps/common/embeddable/extract.ts b/x-pack/plugins/maps/common/embeddable/extract.ts index e73b1566c0289..d329aefe7cff6 100644 --- a/x-pack/plugins/maps/common/embeddable/extract.ts +++ b/x-pack/plugins/maps/common/embeddable/extract.ts @@ -5,8 +5,7 @@ * 2.0. */ -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { EmbeddableRegistryDefinition } from '@kbn/embeddable-plugin/server'; +import { EmbeddableRegistryDefinition } from '@kbn/embeddable-plugin/common'; import { MapEmbeddablePersistableState } from './types'; import { MapSavedObjectAttributes } from '../map_saved_object_type'; import { extractReferences } from '../migrations/references'; diff --git a/x-pack/plugins/maps/common/embeddable/inject.ts b/x-pack/plugins/maps/common/embeddable/inject.ts index 2e1892b95a0f1..4bb26dd00d28d 100644 --- a/x-pack/plugins/maps/common/embeddable/inject.ts +++ b/x-pack/plugins/maps/common/embeddable/inject.ts @@ -5,10 +5,9 @@ * 2.0. */ -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { EmbeddableRegistryDefinition } from '@kbn/embeddable-plugin/server'; -import { MapEmbeddablePersistableState } from './types'; -import { MapSavedObjectAttributes } from '../map_saved_object_type'; +import type { EmbeddableRegistryDefinition } from '@kbn/embeddable-plugin/common'; +import type { MapEmbeddablePersistableState } from './types'; +import type { MapSavedObjectAttributes } from '../map_saved_object_type'; import { extractReferences, injectReferences } from '../migrations/references'; export const inject: EmbeddableRegistryDefinition['inject'] = (state, references) => { diff --git a/x-pack/plugins/maps/public/classes/fields/agg/agg_field.ts b/x-pack/plugins/maps/public/classes/fields/agg/agg_field.ts index 13b40962c5461..9202e09bab67d 100644 --- a/x-pack/plugins/maps/public/classes/fields/agg/agg_field.ts +++ b/x-pack/plugins/maps/public/classes/fields/agg/agg_field.ts @@ -13,6 +13,7 @@ import { isMetricCountable } from '../../util/is_metric_countable'; import { CountAggFieldParams } from './agg_field_types'; import { addFieldToDSL, getField } from '../../../../common/elasticsearch_util'; import { IField } from '../field'; +import { getAggRange } from '../../util/tile_meta_feature_utils'; const TERMS_AGG_SHARD_SIZE = 5; @@ -111,15 +112,6 @@ export class AggField extends CountAggField { } pluckRangeFromTileMetaFeature(metaFeature: TileMetaFeature) { - const minField = `aggregations.${this.getName()}.min`; - const maxField = `aggregations.${this.getName()}.max`; - return metaFeature.properties && - typeof metaFeature.properties[minField] === 'number' && - typeof metaFeature.properties[maxField] === 'number' - ? { - min: metaFeature.properties[minField] as number, - max: metaFeature.properties[maxField] as number, - } - : null; + return getAggRange(metaFeature, this.getName()); } } 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 03c0d3f0791a5..4b136ab950ffa 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 @@ -13,6 +13,7 @@ import { TileMetaFeature } from '../../../../common/descriptor_types'; import { ITooltipProperty, TooltipProperty } from '../../tooltips/tooltip_property'; import { ESAggTooltipProperty } from '../../tooltips/es_agg_tooltip_property'; import { IESAggField, CountAggFieldParams } from './agg_field_types'; +import { getAggRange } from '../../util/tile_meta_feature_utils'; // Agg without field. Essentially a count-aggregation. export class CountAggField implements IESAggField { @@ -116,15 +117,6 @@ export class CountAggField implements IESAggField { } pluckRangeFromTileMetaFeature(metaFeature: TileMetaFeature) { - const minField = `aggregations._count.min`; - const maxField = `aggregations._count.max`; - return metaFeature.properties && - typeof metaFeature.properties[minField] === 'number' && - typeof metaFeature.properties[maxField] === 'number' - ? { - min: metaFeature.properties[minField] as number, - max: metaFeature.properties[maxField] as number, - } - : null; + return getAggRange(metaFeature, '_count'); } } diff --git a/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.test.ts b/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.test.ts index 8b27bacff8ecb..21c9c1f79d970 100644 --- a/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.test.ts +++ b/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.test.ts @@ -6,14 +6,18 @@ */ import { SOURCE_TYPES } from '../../../../common/constants'; -import { DataFilters, XYZTMSSourceDescriptor } from '../../../../common/descriptor_types'; +import { + DataFilters, + LayerDescriptor, + XYZTMSSourceDescriptor, +} from '../../../../common/descriptor_types'; import { ILayer } from '../layer'; import { EmsVectorTileLayer } from './ems_vector_tile_layer'; import { DataRequestContext } from '../../../actions'; import { EMSTMSSource } from '../../sources/ems_tms_source'; describe('EmsVectorTileLayer', () => { - it('should correctly inject tileLayerId in meta', async () => { + test('should correctly inject tileLayerId in meta', async () => { const layer: ILayer = new EmsVectorTileLayer({ source: { getTileLayerId: () => { @@ -50,4 +54,34 @@ describe('EmsVectorTileLayer', () => { expect(actualMeta).toStrictEqual({ tileLayerId: 'myTileLayerId' }); expect(actualErrorMessage).toStrictEqual('network error'); }); + + describe('isInitialDataLoadComplete', () => { + test('should return false when tile loading has not started', () => { + const layer = new EmsVectorTileLayer({ + source: {} as unknown as EMSTMSSource, + layerDescriptor: {} as unknown as LayerDescriptor, + }); + expect(layer.isInitialDataLoadComplete()).toBe(false); + }); + + test('should return false when tiles are loading', () => { + const layer = new EmsVectorTileLayer({ + source: {} as unknown as EMSTMSSource, + layerDescriptor: { + __areTilesLoaded: false, + } as unknown as LayerDescriptor, + }); + expect(layer.isInitialDataLoadComplete()).toBe(false); + }); + + test('should return true when tiles are loaded', () => { + const layer = new EmsVectorTileLayer({ + source: {} as unknown as EMSTMSSource, + layerDescriptor: { + __areTilesLoaded: true, + } as unknown as LayerDescriptor, + }); + expect(layer.isInitialDataLoadComplete()).toBe(true); + }); + }); }); diff --git a/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.tsx b/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.tsx index 428156165c4c3..646ccb3c09acd 100644 --- a/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.tsx +++ b/x-pack/plugins/maps/public/classes/layers/ems_vector_tile_layer/ems_vector_tile_layer.tsx @@ -67,6 +67,10 @@ export class EmsVectorTileLayer extends AbstractLayer { this._style = new TileStyle(); } + isInitialDataLoadComplete(): boolean { + return !!this._descriptor.__areTilesLoaded; + } + getSource(): EMSTMSSource { return super.getSource() as EMSTMSSource; } diff --git a/x-pack/plugins/maps/public/classes/layers/heatmap_layer/heatmap_layer.ts b/x-pack/plugins/maps/public/classes/layers/heatmap_layer/heatmap_layer.ts index 899db80884bc8..d1247590af2e9 100644 --- a/x-pack/plugins/maps/public/classes/layers/heatmap_layer/heatmap_layer.ts +++ b/x-pack/plugins/maps/public/classes/layers/heatmap_layer/heatmap_layer.ts @@ -11,10 +11,16 @@ import { HeatmapStyle } from '../../styles/heatmap/heatmap_style'; import { LAYER_TYPE } from '../../../../common/constants'; import { HeatmapLayerDescriptor } from '../../../../common/descriptor_types'; import { ESGeoGridSource } from '../../sources/es_geo_grid_source'; -import { syncBoundsData, MvtSourceData, syncMvtSourceData } from '../vector_layer'; +import { + NO_RESULTS_ICON_AND_TOOLTIPCONTENT, + syncBoundsData, + MvtSourceData, + syncMvtSourceData, +} from '../vector_layer'; import { DataRequestContext } from '../../../actions'; import { buildVectorRequestMeta } from '../build_vector_request_meta'; import { IMvtVectorSource } from '../../sources/vector_source'; +import { getAggsMeta } from '../../util/tile_meta_feature_utils'; export class HeatmapLayer extends AbstractLayer { private readonly _style: HeatmapStyle; @@ -48,6 +54,11 @@ export class HeatmapLayer extends AbstractLayer { } } + getLayerIcon(isTocIcon: boolean) { + const { docCount } = getAggsMeta(this._getMetaFromTiles()); + return docCount === 0 ? NO_RESULTS_ICON_AND_TOOLTIPCONTENT : super.getLayerIcon(isTocIcon); + } + getSource(): ESGeoGridSource { return super.getSource() as ESGeoGridSource; } diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx index 27d377851152e..d9ee5207b29f3 100644 --- a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx +++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx @@ -17,6 +17,8 @@ import { shallow } from 'enzyme'; import { Feature } from 'geojson'; import { MVTSingleLayerVectorSource } from '../../../sources/mvt_single_layer_vector_source'; +import { IVectorSource } from '../../../sources/vector_source'; +import { InnerJoin } from '../../../joins/inner_join'; import { TiledSingleLayerVectorSourceDescriptor, VectorLayerDescriptor, @@ -93,3 +95,107 @@ describe('getFeatureById', () => { expect(feature).toEqual(null); }); }); + +describe('isInitialDataLoadComplete', () => { + const sourceDataRequestDescriptor = { + data: {}, + dataId: 'source', + dataRequestMeta: {}, + dataRequestMetaAtStart: undefined, + dataRequestToken: undefined, + }; + test('should return false when tile loading has not started', () => { + const layer = new MvtVectorLayer({ + customIcons: [], + layerDescriptor: { + __dataRequests: [sourceDataRequestDescriptor], + } as unknown as VectorLayerDescriptor, + source: {} as unknown as IVectorSource, + }); + expect(layer.isInitialDataLoadComplete()).toBe(false); + }); + + test('should return false when tiles are loading', () => { + const layer = new MvtVectorLayer({ + customIcons: [], + layerDescriptor: { + __areTilesLoaded: false, + __dataRequests: [sourceDataRequestDescriptor], + } as unknown as VectorLayerDescriptor, + source: {} as unknown as IVectorSource, + }); + expect(layer.isInitialDataLoadComplete()).toBe(false); + }); + + test('should return true when tiles are loaded', () => { + const layer = new MvtVectorLayer({ + customIcons: [], + layerDescriptor: { + __areTilesLoaded: true, + __dataRequests: [sourceDataRequestDescriptor], + } as unknown as VectorLayerDescriptor, + source: {} as unknown as IVectorSource, + }); + expect(layer.isInitialDataLoadComplete()).toBe(true); + }); + + test('should return false when tiles are loaded but join is loading', () => { + const layer = new MvtVectorLayer({ + customIcons: [], + joins: [ + { + hasCompleteConfig: () => { + return true; + }, + getSourceDataRequestId: () => { + return 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2'; + }, + } as unknown as InnerJoin, + ], + layerDescriptor: { + __areTilesLoaded: true, + __dataRequests: [ + sourceDataRequestDescriptor, + { + dataId: 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2', + dataRequestMetaAtStart: {}, + dataRequestToken: Symbol('join request'), + }, + ], + } as unknown as VectorLayerDescriptor, + source: {} as unknown as IVectorSource, + }); + expect(layer.isInitialDataLoadComplete()).toBe(false); + }); + + test('should return true when tiles are loaded and joins are loaded', () => { + const layer = new MvtVectorLayer({ + customIcons: [], + joins: [ + { + hasCompleteConfig: () => { + return true; + }, + getSourceDataRequestId: () => { + return 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2'; + }, + } as unknown as InnerJoin, + ], + layerDescriptor: { + __areTilesLoaded: true, + __dataRequests: [ + sourceDataRequestDescriptor, + { + data: {}, + dataId: 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2', + dataRequestMeta: {}, + dataRequestMetaAtStart: undefined, + dataRequestToken: undefined, + }, + ], + } as unknown as VectorLayerDescriptor, + source: {} as unknown as IVectorSource, + }); + expect(layer.isInitialDataLoadComplete()).toBe(true); + }); +}); diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.tsx b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.tsx index a7ec941fceca3..adb211f8f9420 100644 --- a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.tsx +++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.tsx @@ -29,7 +29,6 @@ import { DataRequestContext } from '../../../../actions'; import { DataRequestMeta, StyleMetaDescriptor, - TileMetaFeature, VectorLayerDescriptor, } from '../../../../../common/descriptor_types'; import { ESSearchSource } from '../../../sources/es_search_source'; @@ -39,10 +38,14 @@ import { LayerIcon } from '../../layer'; import { MvtSourceData, syncMvtSourceData } from './mvt_source_data'; import { PropertiesMap } from '../../../../../common/elasticsearch_util'; import { pluckStyleMeta } from './pluck_style_meta'; +import { + ES_MVT_HITS_TOTAL_RELATION, + ES_MVT_HITS_TOTAL_VALUE, + ES_MVT_META_LAYER_NAME, + getAggsMeta, + getHitsMeta, +} from '../../../util/tile_meta_feature_utils'; -export const ES_MVT_META_LAYER_NAME = 'meta'; -const ES_MVT_HITS_TOTAL_RELATION = 'hits.total.relation'; -const ES_MVT_HITS_TOTAL_VALUE = 'hits.total.value'; const MAX_RESULT_WINDOW_DATA_REQUEST_ID = 'maxResultWindow'; export class MvtVectorLayer extends AbstractVectorLayer { @@ -68,6 +71,12 @@ export class MvtVectorLayer extends AbstractVectorLayer { this._source = args.source as IMvtVectorSource; } + isInitialDataLoadComplete(): boolean { + return this._descriptor.__areTilesLoaded === undefined || !this._descriptor.__areTilesLoaded + ? false + : super.isInitialDataLoadComplete(); + } + async getBounds(syncContext: DataRequestContext) { // Add filter to narrow bounds to features with matching join keys let joinKeyFilter; @@ -116,19 +125,15 @@ export class MvtVectorLayer extends AbstractVectorLayer { // // TODO ES MVT specific - move to es_tiled_vector_layer implementation // - - const tileMetaFeatures = this._getMetaFromTiles(); - if (!tileMetaFeatures.length) { - return NO_RESULTS_ICON_AND_TOOLTIPCONTENT; - } - - if (this.getSource().getType() !== SOURCE_TYPES.ES_SEARCH) { - // aggregation ES sources are never trimmed - return { - icon: this.getCurrentStyle().getIcon(false), - tooltipContent: null, - areResultsTrimmed: false, - }; + if (this.getSource().getType() === SOURCE_TYPES.ES_GEO_GRID) { + const { docCount } = getAggsMeta(this._getMetaFromTiles()); + return docCount === 0 + ? NO_RESULTS_ICON_AND_TOOLTIPCONTENT + : { + icon: this.getCurrentStyle().getIcon(false), + tooltipContent: null, + areResultsTrimmed: false, + }; } const maxResultWindow = this._getMaxResultWindow(); @@ -140,28 +145,16 @@ export class MvtVectorLayer extends AbstractVectorLayer { }; } - let totalFeaturesCount = 0; - let tilesWithFeatures = 0; - tileMetaFeatures.forEach((tileMeta: Feature) => { - const count = - tileMeta && tileMeta.properties ? tileMeta.properties[ES_MVT_HITS_TOTAL_VALUE] : 0; - if (count > 0) { - totalFeaturesCount += count; - tilesWithFeatures++; - } - }); + const { totalFeaturesCount, tilesWithFeatures, tilesWithTrimmedResults } = getHitsMeta( + this._getMetaFromTiles(), + maxResultWindow + ); if (totalFeaturesCount === 0) { return NO_RESULTS_ICON_AND_TOOLTIPCONTENT; } - const areResultsTrimmed: boolean = tileMetaFeatures.some((tileMeta: TileMetaFeature) => { - if (tileMeta?.properties?.[ES_MVT_HITS_TOTAL_RELATION] === 'gte') { - return tileMeta?.properties?.[ES_MVT_HITS_TOTAL_VALUE] >= maxResultWindow + 1; - } else { - return false; - } - }); + const areResultsTrimmed = tilesWithTrimmedResults > 0; // Documents may be counted multiple times if geometry crosses tile boundaries. const canMultiCountShapes = diff --git a/x-pack/plugins/maps/public/classes/util/tile_meta_feature_utils.test.ts b/x-pack/plugins/maps/public/classes/util/tile_meta_feature_utils.test.ts new file mode 100644 index 0000000000000..c812dfa6b94f2 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/util/tile_meta_feature_utils.test.ts @@ -0,0 +1,378 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { TileMetaFeature } from '../../../common/descriptor_types'; +import { getAggsMeta, getAggRange, getHitsMeta } from './tile_meta_feature_utils'; + +describe('getAggsMeta', () => { + test('should extract doc_count = 0 from meta features when there are no matches', () => { + const metaFeatures = [ + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-101.25, 31.952162238024968], + [-95.625, 31.952162238024968], + [-95.625, 36.597889133070225], + [-101.25, 36.597889133070225], + [-101.25, 31.952162238024968], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'aggregations._count.count': 0, + 'aggregations._count.sum': 0, + 'hits.total.relation': 'eq', + 'hits.total.value': 0, + timed_out: false, + took: 1, + }, + }, + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-106.875, 31.952162238024968], + [-101.25, 31.952162238024968], + [-101.25, 36.597889133070225], + [-106.875, 36.597889133070225], + [-106.875, 31.952162238024968], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'aggregations._count.count': 0, + 'aggregations._count.sum': 0, + 'hits.total.relation': 'eq', + 'hits.total.value': 0, + timed_out: false, + took: 1, + }, + }, + ] as TileMetaFeature[]; + const { docCount } = getAggsMeta(metaFeatures); + expect(docCount).toBe(0); + }); + + test('should extract doc_count from meta features', () => { + const metaFeatures = [ + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-106.875, 36.597889133070225], + [-101.25, 36.597889133070225], + [-101.25, 40.979898069620134], + [-106.875, 40.979898069620134], + [-106.875, 36.597889133070225], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'aggregations._count.avg': 92.3133514986376, + 'aggregations._count.count': 9175, + 'aggregations._count.max': 8297, + 'aggregations._count.min': 1, + 'aggregations._count.sum': 846975, + 'hits.total.relation': 'gte', + 'hits.total.value': 10000, + timed_out: false, + took: 968, + }, + }, + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-112.5, 36.597889133070225], + [-106.875, 36.597889133070225], + [-106.875, 40.979898069620134], + [-112.5, 40.979898069620134], + [-112.5, 36.597889133070225], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'aggregations._count.avg': 41.19310344827586, + 'aggregations._count.count': 4495, + 'aggregations._count.max': 2398, + 'aggregations._count.min': 1, + 'aggregations._count.sum': 185163, + 'hits.total.relation': 'gte', + 'hits.total.value': 10000, + timed_out: false, + took: 522, + }, + }, + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-106.875, 40.979898069620134], + [-101.25, 40.979898069620134], + [-101.25, 45.08903556483102], + [-106.875, 45.08903556483102], + [-106.875, 40.979898069620134], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'aggregations._count.avg': 9.938271604938272, + 'aggregations._count.count': 81, + 'aggregations._count.max': 96, + 'aggregations._count.min': 1, + 'aggregations._count.sum': 805, + 'hits.total.relation': 'eq', + 'hits.total.value': 792, + timed_out: false, + took: 12, + }, + }, + ] as TileMetaFeature[]; + const { docCount } = getAggsMeta(metaFeatures); + expect(docCount).toBe(1032943); + }); +}); + +test('getAggRange', () => { + const metaFeature = { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-106.875, 40.979898069620134], + [-101.25, 40.979898069620134], + [-101.25, 45.08903556483102], + [-106.875, 45.08903556483102], + [-106.875, 40.979898069620134], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'aggregations._count.avg': 9.938271604938272, + 'aggregations._count.count': 81, + 'aggregations._count.max': 96, + 'aggregations._count.min': 1, + 'aggregations._count.sum': 805, + 'hits.total.relation': 'eq', + 'hits.total.value': 792, + timed_out: false, + took: 12, + }, + } as TileMetaFeature; + expect(getAggRange(metaFeature, '_count')).toEqual({ + max: 96, + min: 1, + }); +}); + +describe('getHitsMeta', () => { + test('should extract 0 total hits from meta features when there are no matches', () => { + const metaFeatures = [ + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-101.25, 31.952162238024968], + [-95.625, 31.952162238024968], + [-95.625, 36.597889133070225], + [-101.25, 36.597889133070225], + [-101.25, 31.952162238024968], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'hits.total.relation': 'eq', + 'hits.total.value': 0, + timed_out: false, + took: 7, + }, + }, + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-106.875, 31.952162238024968], + [-101.25, 31.952162238024968], + [-101.25, 36.597889133070225], + [-106.875, 36.597889133070225], + [-106.875, 31.952162238024968], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'hits.total.relation': 'eq', + 'hits.total.value': 0, + timed_out: false, + took: 7, + }, + }, + ] as TileMetaFeature[]; + expect(getHitsMeta(metaFeatures, 10000)).toEqual({ + tilesWithFeatures: 0, + tilesWithTrimmedResults: 0, + totalFeaturesCount: 0, + }); + }); + + test('should extract hits meta from meta features', () => { + const metaFeatures = [ + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-106.875, 36.99268153210721], + [-102.03826904296875, 36.99268153210721], + [-102.03826904296875, 40.979898069620134], + [-106.875, 40.979898069620134], + [-106.875, 36.99268153210721], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'hits.total.relation': 'gte', + 'hits.total.value': 10001, + timed_out: false, + took: 1571, + }, + }, + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-109.05853271484375, 36.99706886366255], + [-106.875, 36.99706886366255], + [-106.875, 40.95086262813277], + [-109.05853271484375, 40.95086262813277], + [-109.05853271484375, 36.99706886366255], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'hits.total.relation': 'gte', + 'hits.total.value': 10001, + timed_out: false, + took: 1039, + }, + }, + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-101.25, 40.979898069620134], + [-95.625, 40.979898069620134], + [-95.625, 45.08903556483102], + [-101.25, 45.08903556483102], + [-101.25, 40.979898069620134], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'hits.total.relation': 'eq', + 'hits.total.value': 0, + timed_out: false, + took: 7, + }, + }, + { + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-107.7923583984375, 40.991301354803056], + [-107.05078125, 40.991301354803056], + [-107.05078125, 41.0037390532903], + [-107.7923583984375, 41.0037390532903], + [-107.7923583984375, 40.991301354803056], + ], + ], + }, + properties: { + '_shards.failed': 0, + '_shards.skipped': 0, + '_shards.successful': 1, + '_shards.total': 1, + 'hits.total.relation': 'eq', + 'hits.total.value': 28, + timed_out: false, + took: 10, + }, + }, + ] as TileMetaFeature[]; + expect(getHitsMeta(metaFeatures, 10000)).toEqual({ + tilesWithFeatures: 3, + tilesWithTrimmedResults: 2, + totalFeaturesCount: 20030, + }); + }); +}); diff --git a/x-pack/plugins/maps/public/classes/util/tile_meta_feature_utils.ts b/x-pack/plugins/maps/public/classes/util/tile_meta_feature_utils.ts new file mode 100644 index 0000000000000..ac12399a2e011 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/util/tile_meta_feature_utils.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 { TileMetaFeature } from '../../../common/descriptor_types'; + +// Elasticsearch vector tile API returns "meta" layer containing a single metadata feature for each tile request +// This file contains utility methods for pulling values out of metadata features +// Placing logic in a single file to provide a centrialize location and avoid scattering logic throughout plugin + +export const ES_MVT_META_LAYER_NAME = 'meta'; +export const ES_MVT_HITS_TOTAL_RELATION = 'hits.total.relation'; +export const ES_MVT_HITS_TOTAL_VALUE = 'hits.total.value'; + +export function getAggsMeta(metaFeatures: TileMetaFeature[]): { docCount: number } { + let docCount = 0; + metaFeatures.forEach((metaFeature) => { + const count = metaFeature.properties + ? (metaFeature.properties['aggregations._count.sum'] as number) + : 0; + if (count > 0) { + docCount += count; + } + }); + + return { docCount }; +} + +export function getHitsMeta( + metaFeatures: TileMetaFeature[], + maxResultWindow: number +): { totalFeaturesCount: number; tilesWithFeatures: number; tilesWithTrimmedResults: number } { + let totalFeaturesCount = 0; + let tilesWithFeatures = 0; + let tilesWithTrimmedResults = 0; + metaFeatures.forEach((metaFeature) => { + const count = metaFeature.properties ? metaFeature.properties[ES_MVT_HITS_TOTAL_VALUE] : 0; + if (count > 0) { + totalFeaturesCount += count; + tilesWithFeatures++; + } + + if ( + metaFeature?.properties?.[ES_MVT_HITS_TOTAL_RELATION] === 'gte' && + metaFeature?.properties?.[ES_MVT_HITS_TOTAL_VALUE] >= maxResultWindow + 1 + ) { + tilesWithTrimmedResults++; + } + }); + return { totalFeaturesCount, tilesWithFeatures, tilesWithTrimmedResults }; +} + +export function getAggRange( + metaFeature: TileMetaFeature, + subAggName: string +): { min: number; max: number } | null { + const minField = `aggregations.${subAggName}.min`; + const maxField = `aggregations.${subAggName}.max`; + return metaFeature.properties && + typeof metaFeature.properties[minField] === 'number' && + typeof metaFeature.properties[maxField] === 'number' + ? { + min: metaFeature.properties[minField] as number, + max: metaFeature.properties[maxField] as number, + } + : null; +} diff --git a/x-pack/plugins/maps/public/connected_components/mb_map/tile_status_tracker.test.ts b/x-pack/plugins/maps/public/connected_components/mb_map/tile_status_tracker.test.ts index ffc6459262c8b..6485582149db7 100644 --- a/x-pack/plugins/maps/public/connected_components/mb_map/tile_status_tracker.test.ts +++ b/x-pack/plugins/maps/public/connected_components/mb_map/tile_status_tracker.test.ts @@ -113,7 +113,7 @@ describe('TileStatusTracker', () => { expect(loadedMap.get('foo')).toBe(true); expect(loadedMap.get('bar')).toBe(false); // still outstanding tile requests - expect(loadedMap.has('foobar')).toBe(true); // never received tile requests + expect(loadedMap.has('foobar')).toBe(false); // never received tile requests, status should not have been reported for layer (aa11BarTile as { tile: { aborted: boolean } })!.tile.aborted = true; // abort tile mockMbMap.emit('sourcedataloading', createMockMbDataEvent('barsource', 'af1d')); @@ -125,7 +125,7 @@ describe('TileStatusTracker', () => { expect(loadedMap.get('foo')).toBe(false); // still outstanding tile requests expect(loadedMap.get('bar')).toBe(true); // tiles were aborted or errored - expect(loadedMap.has('foobar')).toBe(true); // never received tile requests + expect(loadedMap.has('foobar')).toBe(false); // never received tile requests, status should not have been reported for layer }); test('should cleanup listeners on destroy', async () => { diff --git a/x-pack/plugins/maps/public/connected_components/mb_map/tile_status_tracker.ts b/x-pack/plugins/maps/public/connected_components/mb_map/tile_status_tracker.ts index 94a4344bac009..c349ef0ede3b6 100644 --- a/x-pack/plugins/maps/public/connected_components/mb_map/tile_status_tracker.ts +++ b/x-pack/plugins/maps/public/connected_components/mb_map/tile_status_tracker.ts @@ -29,8 +29,21 @@ interface Tile { } export class TileStatusTracker { - private _tileCache: Tile[]; - private _tileErrorCache: Record; + // Tile cache tracks active tile requests + // 'sourcedataloading' event adds tile request to cache + // 'sourcedata' and 'error' events remove tile request from cache + // Tile requests with 'aborted' status are removed from cache when reporting 'areTilesLoaded' status + private _tileCache: Tile[] = []; + + // Tile error cache tracks tile request errors per layer + // Error cache is cleared when map center tile changes + private _tileErrorCache: Record = {}; + + // Layer cache tracks layers that have requested one or more tiles + // Layer cache is used so that only a layer that has requested one or more tiles reports 'areTilesLoaded' status + // layer cache is never cleared + private _layerCache: Map = new Map(); + private _prevCenterTileKey?: string; private readonly _mbMap: MapboxMap; private readonly _updateTileStatus: ( @@ -48,6 +61,14 @@ export class TileStatusTracker { e.tile && (e.source.type === 'vector' || e.source.type === 'raster') ) { + const targetLayer = this._getCurrentLayerList().find((layer) => { + return layer.ownsMbSourceId(e.sourceId); + }); + const layerId = targetLayer ? targetLayer.getId() : undefined; + if (layerId && !this._layerCache.has(layerId)) { + this._layerCache.set(layerId, true); + } + const tracked = this._tileCache.find((tile) => { return ( tile.mbKey === (e.tile.tileID.key as unknown as string) && tile.mbSourceId === e.sourceId @@ -127,8 +148,6 @@ export class TileStatusTracker { updateTileStatus: (layer: ILayer, areTilesLoaded: boolean, errorMessage?: string) => void; getCurrentLayerList: () => ILayer[]; }) { - this._tileCache = []; - this._tileErrorCache = {}; this._updateTileStatus = updateTileStatus; this._getCurrentLayerList = getCurrentLayerList; @@ -146,6 +165,12 @@ export class TileStatusTracker { const layerList = this._getCurrentLayerList(); for (let i = 0; i < layerList.length; i++) { const layer: ILayer = layerList[i]; + + if (!this._layerCache.has(layer.getId())) { + // do not report status for layers that have not started loading tiles. + continue; + } + let atLeastOnePendingTile = false; for (let j = 0; j < this._tileCache.length; j++) { const tile = this._tileCache[j]; diff --git a/x-pack/plugins/maps/public/connected_components/mb_map/utils.ts b/x-pack/plugins/maps/public/connected_components/mb_map/utils.ts index 5fc9fd62b20c2..552a618e11f7e 100644 --- a/x-pack/plugins/maps/public/connected_components/mb_map/utils.ts +++ b/x-pack/plugins/maps/public/connected_components/mb_map/utils.ts @@ -9,7 +9,7 @@ import type { Map as MbMap } from '@kbn/mapbox-gl'; import { TileMetaFeature } from '../../../common/descriptor_types'; import { isGlDrawLayer } from './sort_layers'; import { ILayer } from '../../classes/layers/layer'; -import { ES_MVT_META_LAYER_NAME } from '../../classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer'; +import { ES_MVT_META_LAYER_NAME } from '../../classes/util/tile_meta_feature_utils'; export function removeOrphanedSourcesAndLayers( mbMap: MbMap, diff --git a/x-pack/plugins/ml/common/constants/locator.ts b/x-pack/plugins/ml/common/constants/locator.ts index ae45bec27deb6..0a1c2638e684a 100644 --- a/x-pack/plugins/ml/common/constants/locator.ts +++ b/x-pack/plugins/ml/common/constants/locator.ts @@ -38,6 +38,7 @@ export const ML_PAGES = { */ DATA_VISUALIZER_INDEX_VIEWER: 'jobs/new_job/datavisualizer', ANOMALY_DETECTION_CREATE_JOB: `jobs/new_job`, + ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: `jobs/new_job/recognize`, ANOMALY_DETECTION_CREATE_JOB_ADVANCED: `jobs/new_job/advanced`, ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: `jobs/new_job/step/job_type`, ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: `jobs/new_job/step/index_or_search`, diff --git a/x-pack/plugins/ml/common/types/anomalies.ts b/x-pack/plugins/ml/common/types/anomalies.ts index 58d5e9df130af..9b6218e8c3f34 100644 --- a/x-pack/plugins/ml/common/types/anomalies.ts +++ b/x-pack/plugins/ml/common/types/anomalies.ts @@ -278,6 +278,11 @@ export interface AnomaliesTableRecord { * which can be plotted by the ML UI in an anomaly chart. */ isTimeSeriesViewRecord?: boolean; + + /** + * Returns true if the anomaly record represented by the table row can be shown in the maps plugin + */ + isGeoRecord?: boolean; } export type PartitionFieldsType = typeof PARTITION_FIELDS[number]; diff --git a/x-pack/plugins/ml/common/types/locator.ts b/x-pack/plugins/ml/common/types/locator.ts index 933862085b3c6..33ec94b825303 100644 --- a/x-pack/plugins/ml/common/types/locator.ts +++ b/x-pack/plugins/ml/common/types/locator.ts @@ -46,6 +46,7 @@ export interface MlGenericUrlPageState extends MlIndexBasedSearchState { export type MlGenericUrlState = MLPageState< | typeof ML_PAGES.DATA_VISUALIZER_INDEX_VIEWER | typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB + | typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER | typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_ADVANCED | typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE | typeof ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX diff --git a/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table_columns.js b/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table_columns.js index 9e84dccf12b28..c24e294b54a5d 100644 --- a/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table_columns.js +++ b/x-pack/plugins/ml/public/application/components/anomalies_table/anomalies_table_columns.js @@ -18,6 +18,7 @@ import { formatHumanReadableDateTime, formatHumanReadableDateTimeSeconds, } from '../../../../common/util/date_utils'; +import { ML_JOB_AGGREGATION } from '../../../../common/constants/aggregation_types'; import { DescriptionCell } from './description_cell'; import { DetectorCell } from './detector_cell'; @@ -47,7 +48,8 @@ function showLinksMenuForItem(item, showViewSeriesLink) { canConfigureRules || (showViewSeriesLink && item.isTimeSeriesViewRecord) || item.entityName === 'mlcategory' || - item.customUrls !== undefined + item.customUrls !== undefined || + item.detector.includes(ML_JOB_AGGREGATION.LAT_LONG) ); } diff --git a/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.tsx b/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.tsx index cb299ee9dba33..ac67dbe35d9ec 100644 --- a/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.tsx +++ b/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.tsx @@ -8,7 +8,9 @@ import { cloneDeep } from 'lodash'; import moment from 'moment'; import rison, { RisonValue } from 'rison-node'; +import { escapeKuery } from '@kbn/es-query'; import React, { FC, useEffect, useMemo, useState } from 'react'; +import { APP_ID as MAPS_APP_ID } from '@kbn/maps-plugin/common'; import { EuiButtonIcon, EuiContextMenuItem, @@ -20,8 +22,10 @@ import { import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { ES_FIELD_TYPES } from '@kbn/field-types'; +import { MAPS_APP_LOCATOR } from '@kbn/maps-plugin/public'; import { mlJobService } from '../../services/job_service'; import { getDataViewIdFromName } from '../../util/index_utils'; +import { getInitialAnomaliesLayers } from '../../../maps/util'; import { formatHumanReadableDateTimeSeconds, timeFormatter, @@ -33,7 +37,7 @@ import { getUrlForRecord, openCustomUrlWindow } from '../../util/custom_url_util import { ML_APP_LOCATOR, ML_PAGES } from '../../../../common/constants/locator'; import { SEARCH_QUERY_LANGUAGE } from '../../../../common/constants/search'; // @ts-ignore -import { escapeDoubleQuotes } from '../../explorer/explorer_utils'; +import { escapeDoubleQuotes, getDateFormatTz } from '../../explorer/explorer_utils'; import { isCategorizationAnomaly, isRuleSupported } from '../../../../common/util/anomaly_utils'; import { checkPermission } from '../../capabilities/check_capabilities'; import type { @@ -49,6 +53,7 @@ import type { AnomaliesTableRecord } from '../../../../common/types/anomalies'; interface LinksMenuProps { anomaly: AnomaliesTableRecord; bounds: TimeRangeBounds; + showMapsLink: boolean; showViewSeriesLink: boolean; isAggregatedData: boolean; interval: 'day' | 'hour' | 'second'; @@ -66,9 +71,39 @@ export const LinksMenuUI = (props: LinksMenuProps) => { const kibana = useMlKibana(); const { - services: { share, application }, + services: { data, share, application }, } = kibana; + const getMapsLink = async (anomaly: AnomaliesTableRecord) => { + const initialLayers = getInitialAnomaliesLayers(anomaly.jobId); + const anomalyBucketStartMoment = moment(anomaly.time).tz(getDateFormatTz()); + const anomalyBucketStart = anomalyBucketStartMoment.toISOString(); + const anomalyBucketEnd = anomalyBucketStartMoment + .add(anomaly.source.bucket_span, 'seconds') + .subtract(1, 'ms') + .toISOString(); + const timeRange = data.query.timefilter.timefilter.getTime(); + + // Set 'from' in timeRange to start bucket time for the specific anomaly + timeRange.from = anomalyBucketStart; + timeRange.to = anomalyBucketEnd; + + const locator = share.url.locators.get(MAPS_APP_LOCATOR); + const location = await locator?.getLocation({ + initialLayers, + timeRange, + ...(anomaly.entityName && anomaly.entityValue + ? { + query: { + language: SEARCH_QUERY_LANGUAGE.KUERY, + query: `${escapeKuery(anomaly.entityName)}:${escapeKuery(anomaly.entityValue)}`, + }, + } + : {}), + }); + return location; + }; + useEffect(() => { let unmounted = false; const discoverLocator = share.url.locators.get('DISCOVER_APP_LOCATOR'); @@ -561,23 +596,44 @@ export const LinksMenuUI = (props: LinksMenuProps) => { ); } - if (showViewSeriesLink === true && anomaly.isTimeSeriesViewRecord === true) { - items.push( - { - closePopover(); - viewSeries(); - }} - data-test-subj="mlAnomaliesListRowActionViewSeriesButton" - > - - - ); + if (showViewSeriesLink === true) { + if (anomaly.isTimeSeriesViewRecord) { + items.push( + { + closePopover(); + viewSeries(); + }} + data-test-subj="mlAnomaliesListRowActionViewSeriesButton" + > + + + ); + } + + if (anomaly.isGeoRecord === true) { + items.push( + { + const mapsLink = await getMapsLink(anomaly); + await application.navigateToApp(MAPS_APP_ID, { path: mapsLink?.path }); + }} + data-test-subj="mlAnomaliesListRowActionViewInMapsButton" + > + + + ); + } } if (application.capabilities.discover?.show && isCategorizationAnomalyRecord) { diff --git a/x-pack/plugins/ml/public/application/components/link_card/link_card.tsx b/x-pack/plugins/ml/public/application/components/link_card/link_card.tsx index ae5c4f0ab9ad9..3b3d6a2fdeb5c 100644 --- a/x-pack/plugins/ml/public/application/components/link_card/link_card.tsx +++ b/x-pack/plugins/ml/public/application/components/link_card/link_card.tsx @@ -39,7 +39,7 @@ export const LinkCard: FC = ({ onClick, href, isDisabled, - 'data-test-subj': dateTestSubj, + 'data-test-subj': dataTestSubj, }) => { const linkHrefAndOnClickProps = { ...(href ? { href } : {}), @@ -58,7 +58,7 @@ export const LinkCard: FC = ({ background: 'transparent', outline: 'none', }} - data-test-subj={dateTestSubj} + data-test-subj={dataTestSubj} color="subdued" {...linkHrefAndOnClickProps} > diff --git a/x-pack/plugins/ml/public/application/datavisualizer/file_based/file_datavisualizer.tsx b/x-pack/plugins/ml/public/application/datavisualizer/file_based/file_datavisualizer.tsx index 4c1d8b478f971..9fcf0df33a0af 100644 --- a/x-pack/plugins/ml/public/application/datavisualizer/file_based/file_datavisualizer.tsx +++ b/x-pack/plugins/ml/public/application/datavisualizer/file_based/file_datavisualizer.tsx @@ -8,7 +8,11 @@ import React, { FC, Fragment, useState, useEffect, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import type { ResultLink, FileDataVisualizerSpec } from '@kbn/data-visualizer-plugin/public'; +import type { + FileDataVisualizerSpec, + GetAdditionalLinksParams, + GetAdditionalLinks, +} from '@kbn/data-visualizer-plugin/public'; import { useTimefilter } from '../../contexts/kibana'; import { HelpMenu } from '../../components/help_menu'; import { useMlKibana, useMlLocator } from '../../contexts/kibana'; @@ -19,11 +23,6 @@ import { mlNodesAvailable, getMlNodeCount } from '../../ml_nodes_check/check_ml_ import { checkPermission } from '../../capabilities/check_capabilities'; import { MlPageHeader } from '../../components/page_header'; -interface GetUrlParams { - indexPatternId: string; - globalState: any; -} - export const FileDataVisualizerPage: FC = () => { useTimefilter({ timeRangeSelector: false, autoRefreshSelector: false }); const { @@ -40,60 +39,62 @@ export const FileDataVisualizerPage: FC = () => { const [FileDataVisualizer, setFileDataVisualizer] = useState(null); - const links: ResultLink[] = useMemo( + const getAdditionalLinks: GetAdditionalLinks = useMemo( () => [ - { - id: 'create_ml_job', - title: i18n.translate('xpack.ml.fileDatavisualizer.actionsPanel.anomalyDetectionTitle', { - defaultMessage: 'Create new ML job', - }), - description: '', - icon: 'machineLearningApp', - type: 'file', - getUrl: async ({ indexPatternId, globalState }: GetUrlParams) => { - return await mlLocator.getUrl({ - page: ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE, - pageState: { - index: indexPatternId, - globalState, - }, - }); - }, - canDisplay: async ({ indexPatternId }) => { - try { - const { timeFieldName } = await getDataView(indexPatternId); - return ( - isFullLicense() && - timeFieldName !== undefined && - checkPermission('canCreateJob') && - mlNodesAvailable() - ); - } catch (error) { - return false; - } + async ({ dataViewId, globalState }: GetAdditionalLinksParams) => [ + { + id: 'create_ml_job', + title: i18n.translate('xpack.ml.fileDatavisualizer.actionsPanel.anomalyDetectionTitle', { + defaultMessage: 'Create ML job', + }), + description: '', + icon: 'machineLearningApp', + type: 'file', + getUrl: async () => { + return await mlLocator.getUrl({ + page: ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE, + pageState: { + index: dataViewId, + globalState, + }, + }); + }, + canDisplay: async () => { + try { + const { timeFieldName } = await getDataView(dataViewId); + return ( + isFullLicense() && + timeFieldName !== undefined && + checkPermission('canCreateJob') && + mlNodesAvailable() + ); + } catch (error) { + return false; + } + }, }, - }, - { - id: 'open_in_data_viz', - title: i18n.translate('xpack.ml.fileDatavisualizer.actionsPanel.dataframeTitle', { - defaultMessage: 'Open in Data Visualizer', - }), - description: '', - icon: 'dataVisualizer', - type: 'file', - getUrl: async ({ indexPatternId, globalState }: GetUrlParams) => { - return await mlLocator.getUrl({ - page: ML_PAGES.DATA_VISUALIZER_INDEX_VIEWER, - pageState: { - index: indexPatternId, - globalState, - }, - }); + { + id: 'open_in_data_viz', + title: i18n.translate('xpack.ml.fileDatavisualizer.actionsPanel.dataframeTitle', { + defaultMessage: 'Open in Data Visualizer', + }), + description: '', + icon: 'dataVisualizer', + type: 'file', + getUrl: async () => { + return await mlLocator.getUrl({ + page: ML_PAGES.DATA_VISUALIZER_INDEX_VIEWER, + pageState: { + index: dataViewId, + globalState, + }, + }); + }, + canDisplay: async () => dataViewId !== '', }, - canDisplay: async ({ indexPatternId }) => indexPatternId !== '', - }, + ], ], - [] + [mlLocator] ); useEffect(() => { @@ -114,7 +115,7 @@ export const FileDataVisualizerPage: FC = () => { defaultMessage="Data Visualizer" /> - + ) : null} diff --git a/x-pack/plugins/ml/public/application/datavisualizer/index_based/index_data_visualizer.tsx b/x-pack/plugins/ml/public/application/datavisualizer/index_based/index_data_visualizer.tsx index 5a041df220df9..ae5c7c9948f18 100644 --- a/x-pack/plugins/ml/public/application/datavisualizer/index_based/index_data_visualizer.tsx +++ b/x-pack/plugins/ml/public/application/datavisualizer/index_based/index_data_visualizer.tsx @@ -5,28 +5,38 @@ * 2.0. */ -import React, { FC, Fragment, useEffect, useState, useMemo } from 'react'; +import React, { FC, Fragment, useEffect, useMemo, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import type { ResultLink, IndexDataVisualizerSpec } from '@kbn/data-visualizer-plugin/public'; +import type { + IndexDataVisualizerSpec, + ResultLink, + GetAdditionalLinks, + GetAdditionalLinksParams, +} from '@kbn/data-visualizer-plugin/public'; import { useMlKibana, useTimefilter, useMlLocator } from '../../contexts/kibana'; import { HelpMenu } from '../../components/help_menu'; import { ML_PAGES } from '../../../../common/constants/locator'; import { isFullLicense } from '../../license'; import { mlNodesAvailable, getMlNodeCount } from '../../ml_nodes_check/check_ml_nodes'; import { checkPermission } from '../../capabilities/check_capabilities'; - import { MlPageHeader } from '../../components/page_header'; -interface GetUrlParams { - indexPatternId: string; - globalState: any; +interface RecognizerModule { + id: string; + title: string; + query: Record; + description: string; + logo: { + icon: string; + }; } export const IndexDataVisualizerPage: FC = () => { useTimefilter({ timeRangeSelector: false, autoRefreshSelector: false }); const { services: { + http, docLinks, dataVisualizer, data: { @@ -48,8 +58,12 @@ export const IndexDataVisualizerPage: FC = () => { } }, []); - const links: ResultLink[] = useMemo( - () => [ + const getAsyncMLCards = async ({ + dataViewId, + dataViewTitle, + globalState, + }: GetAdditionalLinksParams): Promise => { + return [ { id: 'create_ml_ad_job', title: i18n.translate('xpack.ml.indexDatavisualizer.actionsPanel.anomalyDetectionTitle', { @@ -64,18 +78,18 @@ export const IndexDataVisualizerPage: FC = () => { ), icon: 'createAdvancedJob', type: 'file', - getUrl: async ({ indexPatternId, globalState }: GetUrlParams) => { + getUrl: async () => { return await mlLocator.getUrl({ page: ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_ADVANCED, pageState: { - index: indexPatternId, + index: dataViewId, globalState, }, }); }, - canDisplay: async ({ indexPatternId }) => { + canDisplay: async () => { try { - const { timeFieldName } = await getDataView(indexPatternId); + const { timeFieldName } = await getDataView(dataViewId); return ( isFullLicense() && timeFieldName !== undefined && @@ -86,7 +100,7 @@ export const IndexDataVisualizerPage: FC = () => { return false; } }, - dataTestSubj: 'dataVisualizerCreateAdvancedJobCard', + 'data-test-subj': 'dataVisualizerCreateAdvancedJobCard', }, { id: 'create_ml_dfa_job', @@ -101,11 +115,11 @@ export const IndexDataVisualizerPage: FC = () => { ), icon: 'classificationJob', type: 'file', - getUrl: async ({ indexPatternId, globalState }: GetUrlParams) => { + getUrl: async () => { return await mlLocator.getUrl({ page: ML_PAGES.DATA_FRAME_ANALYTICS_CREATE_JOB, pageState: { - index: indexPatternId, + index: dataViewId, globalState, }, }); @@ -115,12 +129,57 @@ export const IndexDataVisualizerPage: FC = () => { isFullLicense() && checkPermission('canCreateDataFrameAnalytics') && mlNodesAvailable() ); }, - dataTestSubj: 'dataVisualizerCreateDataFrameAnalyticsCard', + 'data-test-subj': 'dataVisualizerCreateDataFrameAnalyticsCard', }, - ], - [] - ); + ]; + }; + const getAsyncRecognizedModuleCards = async (params: GetAdditionalLinksParams) => { + const { dataViewId, dataViewTitle } = params; + const modules = await http.fetch( + `/api/ml/modules/recognize/${dataViewTitle}`, + { + method: 'GET', + } + ); + return modules?.map( + (m): ResultLink => ({ + id: m.id, + title: m.title, + description: m.description, + icon: m.logo.icon, + type: 'index', + getUrl: async () => { + return await mlLocator.getUrl({ + page: ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER, + pageState: { + id: m.id, + index: dataViewId, + }, + }); + }, + canDisplay: async () => { + try { + const { timeFieldName } = await getDataView(dataViewId); + return ( + isFullLicense() && + timeFieldName !== undefined && + checkPermission('canCreateJob') && + mlNodesAvailable() + ); + } catch (error) { + return false; + } + }, + 'data-test-subj': m.id, + }) + ); + }; + + const getAdditionalLinks: GetAdditionalLinks = useMemo( + () => [getAsyncRecognizedModuleCards, getAsyncMLCards], + [mlLocator] + ); return IndexDataVisualizer ? ( {IndexDataVisualizer !== null ? ( @@ -131,7 +190,7 @@ export const IndexDataVisualizerPage: FC = () => { defaultMessage="Data Visualizer" /> - + ) : null} diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container.js b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container.js index ddaaa55e7a3a4..d3dc2681cf4c5 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container.js +++ b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container.js @@ -16,7 +16,6 @@ import { EuiFlexItem, EuiIconTip, EuiToolTip, - htmlIdGenerator, } from '@elastic/eui'; import { @@ -36,15 +35,13 @@ import { MlTooltipComponent } from '../../components/chart_tooltip'; import { withKibana } from '@kbn/kibana-react-plugin/public'; import { useMlKibana } from '../../contexts/kibana'; import { ML_JOB_AGGREGATION } from '../../../../common/constants/aggregation_types'; -import { AnomalySource } from '../../../maps/anomaly_source'; -import { CUSTOM_COLOR_RAMP } from '../../../maps/anomaly_layer_wizard_factory'; -import { LAYER_TYPE, APP_ID as MAPS_APP_ID } from '@kbn/maps-plugin/common'; +import { getInitialAnomaliesLayers } from '../../../maps/util'; +import { APP_ID as MAPS_APP_ID } from '@kbn/maps-plugin/common'; import { MAPS_APP_LOCATOR } from '@kbn/maps-plugin/public'; import { ExplorerChartsErrorCallOuts } from './explorer_charts_error_callouts'; import { addItemToRecentlyAccessed } from '../../util/recently_accessed'; import { EmbeddedMapComponentWrapper } from './explorer_chart_embedded_map'; import { useActiveCursor } from '@kbn/charts-plugin/public'; -import { ML_ANOMALY_LAYERS } from '../../../maps/util'; import { Chart, Settings } from '@elastic/charts'; import useObservable from 'react-use/lib/useObservable'; @@ -114,59 +111,7 @@ function ExplorerChartContainer({ const getMapsLink = useCallback(async () => { const { queryString, query } = getEntitiesQuery(series); - const initialLayers = []; - const typicalStyle = { - type: 'VECTOR', - properties: { - fillColor: { - type: 'STATIC', - options: { - color: '#98A2B2', - }, - }, - lineColor: { - type: 'STATIC', - options: { - color: '#fff', - }, - }, - lineWidth: { - type: 'STATIC', - options: { - size: 2, - }, - }, - iconSize: { - type: 'STATIC', - options: { - size: 6, - }, - }, - }, - }; - - const style = { - type: 'VECTOR', - properties: { - fillColor: CUSTOM_COLOR_RAMP, - lineColor: CUSTOM_COLOR_RAMP, - }, - isTimeAware: false, - }; - - for (const layer in ML_ANOMALY_LAYERS) { - if (ML_ANOMALY_LAYERS.hasOwnProperty(layer)) { - initialLayers.push({ - id: htmlIdGenerator()(), - type: LAYER_TYPE.GEOJSON_VECTOR, - sourceDescriptor: AnomalySource.createDescriptor({ - jobId: series.jobId, - typicalActual: ML_ANOMALY_LAYERS[layer], - }), - style: ML_ANOMALY_LAYERS[layer] === ML_ANOMALY_LAYERS.TYPICAL ? typicalStyle : style, - }); - } - } + const initialLayers = getInitialAnomaliesLayers(series.jobId); const locator = share.url.locators.get(MAPS_APP_LOCATOR); const location = await locator.getLocation({ diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_utils.ts b/x-pack/plugins/ml/public/application/explorer/explorer_utils.ts index d2c7c3f1fe2d2..6aa3444c9caaf 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_utils.ts +++ b/x-pack/plugins/ml/public/application/explorer/explorer_utils.ts @@ -19,6 +19,7 @@ import { } from '../../../common/constants/search'; import { EntityField, getEntityFieldList } from '../../../common/util/anomaly_utils'; import { extractErrorMessage } from '../../../common/util/errors'; +import { ML_JOB_AGGREGATION } from '../../../common/constants/aggregation_types'; import { isSourceDataChartableForDetector, isModelPlotChartableForDetector, @@ -495,6 +496,8 @@ export async function loadAnomaliesTableData( } anomaly.isTimeSeriesViewRecord = isChartable; + anomaly.isGeoRecord = + detector !== undefined && detector.function === ML_JOB_AGGREGATION.LAT_LONG; if (mlJobService.customUrlsByJob[jobId] !== undefined) { anomaly.customUrls = mlJobService.customUrlsByJob[jobId]; diff --git a/x-pack/plugins/ml/public/locator/ml_locator.ts b/x-pack/plugins/ml/public/locator/ml_locator.ts index dcc31591208cb..b1ea2549c3347 100644 --- a/x-pack/plugins/ml/public/locator/ml_locator.ts +++ b/x-pack/plugins/ml/public/locator/ml_locator.ts @@ -77,6 +77,7 @@ export class MlLocatorDefinition implements LocatorDefinition { path = formatTrainedModelsNodesManagementUrl('', params.pageState); break; case ML_PAGES.ANOMALY_DETECTION_CREATE_JOB: + case ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: case ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_ADVANCED: case ML_PAGES.DATA_VISUALIZER: case ML_PAGES.DATA_VISUALIZER_FILE: diff --git a/x-pack/plugins/ml/public/maps/anomaly_layer_wizard_factory.tsx b/x-pack/plugins/ml/public/maps/anomaly_layer_wizard_factory.tsx index b40a08fadd128..6b9ee6c2e6332 100644 --- a/x-pack/plugins/ml/public/maps/anomaly_layer_wizard_factory.tsx +++ b/x-pack/plugins/ml/public/maps/anomaly_layer_wizard_factory.tsx @@ -11,13 +11,13 @@ import type { StartServicesAccessor } from '@kbn/core/public'; import { LocatorPublic } from '@kbn/share-plugin/common'; import { SerializableRecord } from '@kbn/utility-types'; import type { LayerWizard, RenderWizardArguments } from '@kbn/maps-plugin/public'; -import { FIELD_ORIGIN, LAYER_TYPE, STYLE_TYPE } from '@kbn/maps-plugin/common'; +import { LAYER_TYPE } from '@kbn/maps-plugin/common'; import { VectorLayerDescriptor, VectorStylePropertiesDescriptor, } from '@kbn/maps-plugin/common/descriptor_types'; -import { SEVERITY_COLOR_RAMP } from '../../common'; import { ML_APP_LOCATOR, ML_PAGES } from '../../common/constants/locator'; +import { CUSTOM_COLOR_RAMP } from './util'; import { CreateAnomalySourceEditor } from './create_anomaly_source_editor'; import { AnomalySource, AnomalySourceDescriptor } from './anomaly_source'; @@ -26,17 +26,6 @@ import type { MlPluginStart, MlStartDependencies } from '../plugin'; import type { MlApiServices } from '../application/services/ml_api_service'; export const ML_ANOMALY = 'ML_ANOMALIES'; -export const CUSTOM_COLOR_RAMP = { - type: STYLE_TYPE.DYNAMIC, - options: { - customColorRamp: SEVERITY_COLOR_RAMP, - field: { - name: 'record_score', - origin: FIELD_ORIGIN.SOURCE, - }, - useCustomColorRamp: true, - }, -}; export class AnomalyLayerWizardFactory { public readonly type = ML_ANOMALY; diff --git a/x-pack/plugins/ml/public/maps/util.ts b/x-pack/plugins/ml/public/maps/util.ts index c1cb3f9efaead..88e9994d303a9 100644 --- a/x-pack/plugins/ml/public/maps/util.ts +++ b/x-pack/plugins/ml/public/maps/util.ts @@ -7,14 +7,19 @@ import { FeatureCollection, Feature, Geometry } from 'geojson'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { htmlIdGenerator } from '@elastic/eui'; +import { FIELD_ORIGIN, STYLE_TYPE } from '@kbn/maps-plugin/common'; import { fromKueryExpression, luceneStringToDsl, toElasticsearchQuery } from '@kbn/es-query'; import { ESSearchResponse } from '@kbn/core/types/elasticsearch'; import { VectorSourceRequestMeta } from '@kbn/maps-plugin/common'; +import { LAYER_TYPE } from '@kbn/maps-plugin/common'; +import { SEVERITY_COLOR_RAMP } from '../../common'; import { formatHumanReadableDateTimeSeconds } from '../../common/util/date_utils'; import type { MlApiServices } from '../application/services/ml_api_service'; import { MLAnomalyDoc } from '../../common/types/anomalies'; import { SEARCH_QUERY_LANGUAGE } from '../../common/constants/search'; import { getIndexPattern } from '../application/explorer/reducers/explorer_reducer/get_index_pattern'; +import { AnomalySource } from './anomaly_source'; export const ML_ANOMALY_LAYERS = { TYPICAL: 'typical', @@ -22,6 +27,57 @@ export const ML_ANOMALY_LAYERS = { TYPICAL_TO_ACTUAL: 'typical to actual', } as const; +export const CUSTOM_COLOR_RAMP = { + type: STYLE_TYPE.DYNAMIC, + options: { + customColorRamp: SEVERITY_COLOR_RAMP, + field: { + name: 'record_score', + origin: FIELD_ORIGIN.SOURCE, + }, + useCustomColorRamp: true, + }, +}; + +export const ACTUAL_STYLE = { + type: 'VECTOR', + properties: { + fillColor: CUSTOM_COLOR_RAMP, + lineColor: CUSTOM_COLOR_RAMP, + }, + isTimeAware: false, +}; + +export const TYPICAL_STYLE = { + type: 'VECTOR', + properties: { + fillColor: { + type: 'STATIC', + options: { + color: '#98A2B2', + }, + }, + lineColor: { + type: 'STATIC', + options: { + color: '#fff', + }, + }, + lineWidth: { + type: 'STATIC', + options: { + size: 2, + }, + }, + iconSize: { + type: 'STATIC', + options: { + size: 6, + }, + }, + }, +}; + export type MlAnomalyLayersType = typeof ML_ANOMALY_LAYERS[keyof typeof ML_ANOMALY_LAYERS]; // Must reverse coordinates here. Map expects [lon, lat] - anomalies are stored as [lat, lon] for lat_lon jobs @@ -32,6 +88,27 @@ function getCoordinates(latLonString: string): number[] { .reverse(); } +export function getInitialAnomaliesLayers(jobId: string) { + const initialLayers = []; + for (const layer in ML_ANOMALY_LAYERS) { + if (ML_ANOMALY_LAYERS.hasOwnProperty(layer)) { + initialLayers.push({ + id: htmlIdGenerator()(), + type: LAYER_TYPE.GEOJSON_VECTOR, + sourceDescriptor: AnomalySource.createDescriptor({ + jobId, + typicalActual: ML_ANOMALY_LAYERS[layer as keyof typeof ML_ANOMALY_LAYERS], + }), + style: + ML_ANOMALY_LAYERS[layer as keyof typeof ML_ANOMALY_LAYERS] === ML_ANOMALY_LAYERS.TYPICAL + ? TYPICAL_STYLE + : ACTUAL_STYLE, + }); + } + } + return initialLayers; +} + export async function getResultsForJobId( mlResultsService: MlApiServices['results'], jobId: string, diff --git a/x-pack/plugins/monitoring/server/alerts/base_rule.ts b/x-pack/plugins/monitoring/server/alerts/base_rule.ts index 9c9d993e0a340..1888265c124f6 100644 --- a/x-pack/plugins/monitoring/server/alerts/base_rule.ts +++ b/x-pack/plugins/monitoring/server/alerts/base_rule.ts @@ -344,6 +344,7 @@ export class BaseRule { if (ccs) { globalState.push(`ccs:${ccs}`); } - return `${Globals.app.url}/app/monitoring#/${link}?_g=(${globalState.toString()})`; + + return `${Globals.app.url ?? ''}/app/monitoring#/${link}?_g=(${globalState.toString()})`; } } diff --git a/x-pack/plugins/monitoring/server/static_globals.ts b/x-pack/plugins/monitoring/server/static_globals.ts index e601dd0c55155..429ec8693a3e7 100644 --- a/x-pack/plugins/monitoring/server/static_globals.ts +++ b/x-pack/plugins/monitoring/server/static_globals.ts @@ -6,7 +6,6 @@ */ import { CoreSetup, ElasticsearchClient, Logger, PluginInitializerContext } from '@kbn/core/server'; -import url from 'url'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { MonitoringConfig } from './config'; import { PluginsSetup } from './types'; @@ -32,7 +31,7 @@ export type EndpointTypes = export type ClientParams = estypes.SearchRequest | undefined; interface IAppGlobals { - url: string; + url?: string; isCloud: boolean; config: MonitoringConfig; getLogger: GetLogger; @@ -79,11 +78,8 @@ export class Globals { return body; }); - const { protocol, hostname, port } = coreSetup.http.getServerInfo(); - const pathname = coreSetup.http.basePath.serverBasePath; - Globals._app = { - url: url.format({ protocol, hostname, port, pathname }), + url: coreSetup.http.basePath.publicBaseUrl, isCloud: setupPlugins.cloud?.isCloudEnabled || false, config, getLogger, diff --git a/x-pack/plugins/observability/public/components/app/observability_status/observability_status_progress.tsx b/x-pack/plugins/observability/public/components/app/observability_status/observability_status_progress.tsx index 04e77669e963c..050da44457969 100644 --- a/x-pack/plugins/observability/public/components/app/observability_status/observability_status_progress.tsx +++ b/x-pack/plugins/observability/public/components/app/observability_status/observability_status_progress.tsx @@ -24,9 +24,11 @@ import { useGuidedSetupProgress } from '../../../hooks/use_guided_setup_progress interface ObservabilityStatusProgressProps { onViewDetailsClick: () => void; + onDismissClick?: () => void; } export function ObservabilityStatusProgress({ onViewDetailsClick, + onDismissClick, }: ObservabilityStatusProgressProps) { const { hasDataMap, isAllRequestsComplete } = useHasData(); const trackMetric = useUiTracker({ app: 'observability-overview' }); @@ -52,8 +54,11 @@ export function ObservabilityStatusProgress({ const dismissGuidedSetup = useCallback(() => { dismissGuidedSetupProgress(); + if (onDismissClick) { + onDismissClick(); + } trackMetric({ metric: 'guided_setup_progress_dismiss' }); - }, [dismissGuidedSetupProgress, trackMetric]); + }, [dismissGuidedSetupProgress, trackMetric, onDismissClick]); const showDetails = () => { onViewDetailsClick(); 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 072f6e42d1cd8..ad06e5b628eea 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 @@ -13,7 +13,7 @@ import type { FieldBasedIndexPatternColumn, SeriesType, OperationType, - YConfig, + ExtendedYConfig, } from '@kbn/lens-plugin/public'; import type { PersistableFilter } from '@kbn/lens-plugin/common'; @@ -71,7 +71,7 @@ export interface SeriesConfig { hasOperationType: boolean; palette?: PaletteOutput; yTitle?: string; - yConfig?: YConfig[]; + yConfig?: ExtendedYConfig[]; query?: { query: string; language: 'kuery' }; } diff --git a/x-pack/plugins/observability/public/hooks/use_fetch_rules.ts b/x-pack/plugins/observability/public/hooks/use_fetch_rules.ts index 00cb58e504bdc..de0127b08213e 100644 --- a/x-pack/plugins/observability/public/hooks/use_fetch_rules.ts +++ b/x-pack/plugins/observability/public/hooks/use_fetch_rules.ts @@ -16,6 +16,7 @@ import { useKibana } from '../utils/kibana_react'; export function useFetchRules({ searchText, ruleLastResponseFilter, + ruleStatusesFilter, typesFilter, setPage, page, @@ -42,7 +43,8 @@ export function useFetchRules({ page, searchText, typesFilter: typesFilter.length > 0 ? typesFilter : OBSERVABILITY_RULE_TYPES, - ruleStatusesFilter: ruleLastResponseFilter, + ruleExecutionStatusesFilter: ruleLastResponseFilter, + ruleStatusesFilter, sort, }); setRulesState((oldState) => ({ @@ -58,6 +60,7 @@ export function useFetchRules({ const isFilterApplied = !( isEmpty(searchText) && isEmpty(ruleLastResponseFilter) && + isEmpty(ruleStatusesFilter) && isEmpty(typesFilter) ); @@ -66,7 +69,16 @@ export function useFetchRules({ setRulesState((oldState) => ({ ...oldState, isLoading: false, error: RULES_LOAD_ERROR })); } setInitialLoad(false); - }, [http, page, setPage, searchText, ruleLastResponseFilter, typesFilter, sort]); + }, [ + http, + page, + setPage, + searchText, + ruleLastResponseFilter, + ruleStatusesFilter, + typesFilter, + sort, + ]); useEffect(() => { fetchRules(); }, [fetchRules]); diff --git a/x-pack/plugins/observability/public/observability_public_plugins_start.mock.ts b/x-pack/plugins/observability/public/observability_public_plugins_start.mock.ts index 930b75f578eb1..50836859a5415 100644 --- a/x-pack/plugins/observability/public/observability_public_plugins_start.mock.ts +++ b/x-pack/plugins/observability/public/observability_public_plugins_start.mock.ts @@ -38,6 +38,7 @@ const triggersActionsUiStartMock = { getAddAlertFlyout: jest.fn(), getRuleStatusDropdown: jest.fn(), getRuleTagBadge: jest.fn(), + getRuleStatusFilter: jest.fn(), ruleTypeRegistry: { has: jest.fn(), register: jest.fn(), diff --git a/x-pack/plugins/observability/public/pages/alerts/containers/alerts_page/alerts_page.tsx b/x-pack/plugins/observability/public/pages/alerts/containers/alerts_page/alerts_page.tsx index 10315af5874a5..e99a3195d0f30 100644 --- a/x-pack/plugins/observability/public/pages/alerts/containers/alerts_page/alerts_page.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/containers/alerts_page/alerts_page.tsx @@ -39,6 +39,7 @@ import { import './styles.scss'; import { AlertsStatusFilter, AlertsDisclaimer, AlertsSearchBar } from '../../components'; import { ObservabilityAppServices } from '../../../../application/types'; +import { OBSERVABILITY_RULE_TYPES } from '../../../rules/config'; interface RuleStatsState { total: number; @@ -115,6 +116,7 @@ function AlertsPage() { try { const response = await loadRuleAggregations({ http, + typesFilter: OBSERVABILITY_RULE_TYPES, }); const { ruleExecutionStatus, ruleMutedStatus, ruleEnabledStatus, ruleSnoozedStatus } = response; diff --git a/x-pack/plugins/observability/public/pages/cases/empty_page.tsx b/x-pack/plugins/observability/public/pages/cases/empty_page.tsx index faeafa6b4730f..5f8be8483c9d3 100644 --- a/x-pack/plugins/observability/public/pages/cases/empty_page.tsx +++ b/x-pack/plugins/observability/public/pages/cases/empty_page.tsx @@ -103,7 +103,7 @@ const EmptyPageComponent = React.memo(({ actions, message, title return ( {title}} body={message &&

{message}

} actions={{renderActions}} diff --git a/x-pack/plugins/observability/public/pages/overview/index.tsx b/x-pack/plugins/observability/public/pages/overview/index.tsx index 6733c90dd0f7a..9ceabf7c3111a 100644 --- a/x-pack/plugins/observability/public/pages/overview/index.tsx +++ b/x-pack/plugins/observability/public/pages/overview/index.tsx @@ -5,16 +5,18 @@ * 2.0. */ import { + EuiButton, + EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, - EuiSpacer, - EuiHorizontalRule, - EuiButton, EuiFlyout, - EuiFlyoutHeader, - EuiTitle, EuiFlyoutBody, + EuiFlyoutHeader, + EuiHorizontalRule, + EuiSpacer, EuiText, + EuiTitle, + EuiTourStep, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -94,6 +96,8 @@ export function OverviewPage({ routeParams }: Props) { const { hasAnyData, isAllRequestsComplete } = useHasData(); const refetch = useRef<() => void>(); + const [isGuidedSetupTourVisible, setGuidedSetupTourVisible] = useState(false); + const hideGuidedSetupTour = useCallback(() => setGuidedSetupTourVisible(false), []); const { isGuidedSetupProgressDismissed } = useGuidedSetupProgress(); const bucketSize = useMemo( @@ -113,9 +117,9 @@ export function OverviewPage({ routeParams }: Props) { if (isGuidedSetupProgressDismissed) { trackMetric({ metric: 'guided_setup_view_details_after_dismiss' }); } - + hideGuidedSetupTour(); setIsFlyoutVisible(true); - }, [trackMetric, isGuidedSetupProgressDismissed]); + }, [trackMetric, isGuidedSetupProgressDismissed, hideGuidedSetupTour]); const onTimeRangeRefresh = useCallback(() => { return refetch.current && refetch.current(); @@ -162,6 +166,8 @@ export function OverviewPage({ routeParams }: Props) { ? { children: ( @@ -173,7 +179,10 @@ export function OverviewPage({ routeParams }: Props) { {hasData && ( <> - setIsFlyoutVisible(true)} /> + setIsFlyoutVisible(true)} + onDismissClick={() => setGuidedSetupTourVisible(true)} + /> void; handleGuidedSetupClick: () => void; onTimeRangeRefresh: () => void; } -function PageHeader({ handleGuidedSetupClick, onTimeRangeRefresh }: PageHeaderProps) { +function PageHeader({ + showTour = false, + onTourDismiss, + handleGuidedSetupClick, + onTimeRangeRefresh, +}: PageHeaderProps) { const { relativeStart, relativeEnd, refreshInterval, refreshPaused } = useDatePickerContext(); + const buttonRef = useRef(); + return ( @@ -287,12 +305,48 @@ function PageHeader({ handleGuidedSetupClick, onTimeRangeRefresh }: PageHeaderPr /> - + + {showTour ? ( + buttonRef.current} + isStepOpen + title={i18n.translate('xpack.observability.overview.guidedSetupTourTitle', { + defaultMessage: 'Guided setup is always available', + })} + content={ + + + + } + step={1} + stepsTotal={1} + maxWidth={400} + onFinish={onTourDismiss} + footerAction={ + + + + } + /> + ) : null} ); diff --git a/x-pack/plugins/observability/public/pages/rules/components/execution_status.tsx b/x-pack/plugins/observability/public/pages/rules/components/execution_status.tsx index 81dfe9ebd1606..c0c7413aa9c15 100644 --- a/x-pack/plugins/observability/public/pages/rules/components/execution_status.tsx +++ b/x-pack/plugins/observability/public/pages/rules/components/execution_status.tsx @@ -5,14 +5,22 @@ * 2.0. */ -import React from 'react'; -import { EuiHealth, EuiToolTip, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import React, { useState } from 'react'; +import { EuiHealth, EuiToolTip, EuiFlexGroup, EuiFlexItem, EuiButtonEmpty } from '@elastic/eui'; import { RuleExecutionStatusErrorReasons } from '@kbn/alerting-plugin/common'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { ManageLicenseModal } from './manage_license_model'; import { getHealthColor, rulesStatusesTranslationsMapping } from '../config'; import { RULE_STATUS_LICENSE_ERROR } from '../translations'; import { ExecutionStatusProps } from '../types'; +import { useKibana } from '../../../utils/kibana_react'; -export function ExecutionStatus({ executionStatus }: ExecutionStatusProps) { +export function ExecutionStatus({ executionStatus, item, licenseType }: ExecutionStatusProps) { + const { http } = useKibana().services; + const [manageLicenseModalOpts, setManageLicenseModalOpts] = useState<{ + licenseType: string; + ruleTypeId: string; + } | null>(null); const healthColor = getHealthColor(executionStatus.status); const tooltipMessage = executionStatus.status === 'error' ? `Error: ${executionStatus?.error?.message}` : null; @@ -38,6 +46,36 @@ export function ExecutionStatus({ executionStatus }: ExecutionStatusProps) { return ( {healthWithTooltip} + {isLicenseError && ( + + + setManageLicenseModalOpts({ + licenseType, + ruleTypeId: item.ruleTypeId, + }) + } + > + + + + )} + {manageLicenseModalOpts && ( + { + window.open(`${http.basePath.get()}/app/management/stack/license_management`, '_blank'); + setManageLicenseModalOpts(null); + }} + onCancel={() => setManageLicenseModalOpts(null)} + /> + )} ); } diff --git a/x-pack/plugins/observability/public/pages/rules/components/last_response_filter.tsx b/x-pack/plugins/observability/public/pages/rules/components/last_response_filter.tsx index d7154c47fecf7..f74c56f7f2792 100644 --- a/x-pack/plugins/observability/public/pages/rules/components/last_response_filter.tsx +++ b/x-pack/plugins/observability/public/pages/rules/components/last_response_filter.tsx @@ -18,12 +18,12 @@ import { } from '@elastic/eui'; import { RuleExecutionStatuses, RuleExecutionStatusValues } from '@kbn/alerting-plugin/common'; import { getHealthColor, rulesStatusesTranslationsMapping } from '../config'; -import { StatusFilterProps } from '../types'; +import { LastResponseFilterProps } from '../types'; -export const LastResponseFilter: React.FunctionComponent = ({ +export const LastResponseFilter: React.FunctionComponent = ({ selectedStatuses, onChange, -}: StatusFilterProps) => { +}: LastResponseFilterProps) => { const [selectedValues, setSelectedValues] = useState(selectedStatuses); const [isPopoverOpen, setIsPopoverOpen] = useState(false); diff --git a/x-pack/plugins/observability/public/pages/rules/components/manage_license_model.tsx b/x-pack/plugins/observability/public/pages/rules/components/manage_license_model.tsx new file mode 100644 index 0000000000000..e273c7d5a3044 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/rules/components/manage_license_model.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 React from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiConfirmModal } from '@elastic/eui'; +import { capitalize } from 'lodash'; + +interface Props { + licenseType: string; + ruleTypeId: string; + onConfirm: () => void; + onCancel: () => void; +} + +export function ManageLicenseModal({ licenseType, ruleTypeId, onConfirm, onCancel }: Props) { + const licenseRequired = capitalize(licenseType); + return ( + +

+ +

+
+ ); +} diff --git a/x-pack/plugins/observability/public/pages/rules/config.ts b/x-pack/plugins/observability/public/pages/rules/config.ts index 9da846c2c1cc4..8c39acb75976d 100644 --- a/x-pack/plugins/observability/public/pages/rules/config.ts +++ b/x-pack/plugins/observability/public/pages/rules/config.ts @@ -7,7 +7,6 @@ import { RuleExecutionStatuses } from '@kbn/alerting-plugin/common'; import { Rule, RuleTypeIndex, RuleType } from '@kbn/triggers-actions-ui-plugin/public'; -import { Status, RuleStatus } from './types'; import { RULE_STATUS_OK, RULE_STATUS_ACTIVE, @@ -15,26 +14,8 @@ import { RULE_STATUS_PENDING, RULE_STATUS_UNKNOWN, RULE_STATUS_WARNING, - RULE_STATUS_ENABLED, - RULE_STATUS_DISABLED, - RULE_STATUS_SNOOZED_INDEFINITELY, } from './translations'; -export const statusMap: Status = { - [RuleStatus.enabled]: { - color: 'primary', - label: RULE_STATUS_ENABLED, - }, - [RuleStatus.disabled]: { - color: 'default', - label: RULE_STATUS_DISABLED, - }, - [RuleStatus.snoozed]: { - color: 'warning', - label: RULE_STATUS_SNOOZED_INDEFINITELY, - }, -}; - export const DEFAULT_SEARCH_PAGE_SIZE: number = 25; export function getHealthColor(status: RuleExecutionStatuses) { diff --git a/x-pack/plugins/observability/public/pages/rules/index.tsx b/x-pack/plugins/observability/public/pages/rules/index.tsx index dd8829937a876..801ea24fb46c3 100644 --- a/x-pack/plugins/observability/public/pages/rules/index.tsx +++ b/x-pack/plugins/observability/public/pages/rules/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useState, useMemo } from 'react'; +import React, { useState, useMemo, useCallback } from 'react'; import { capitalize, sortBy } from 'lodash'; import { EuiButton, @@ -27,10 +27,13 @@ import { disableRule, snoozeRule, useLoadRuleTypes, + RuleStatus, unsnoozeRule, } from '@kbn/triggers-actions-ui-plugin/public'; import { RuleExecutionStatus, ALERTS_FEATURE_ID } from '@kbn/alerting-plugin/common'; import { usePluginContext } from '../../hooks/use_plugin_context'; +import { Provider, rulesPageStateContainer, useRulesPageStateContainer } from './state_container'; + import { useBreadcrumbs } from '../../hooks/use_breadcrumbs'; import { useKibana } from '../../utils/kibana_react'; import { useFetchRules } from '../../hooks/use_fetch_rules'; @@ -71,7 +74,7 @@ import { import { ExperimentalBadge } from '../../components/shared/experimental_badge'; const ENTER_KEY = 13; -export function RulesPage() { +function RulesPage() { const { ObservabilityPageTemplate, kibanaFeatures } = usePluginContext(); const { http, @@ -80,6 +83,7 @@ export function RulesPage() { application: { capabilities }, notifications: { toasts }, } = useKibana().services; + const { lastResponse, setLastResponse } = useRulesPageStateContainer(); const documentationLink = docLinks.links.observability.createAlerts; const ruleTypeRegistry = triggersActionsUi.ruleTypeRegistry; const canExecuteActions = hasExecuteActionsCapability(capabilities); @@ -90,7 +94,7 @@ export function RulesPage() { }); const [inputText, setInputText] = useState(); const [searchText, setSearchText] = useState(); - const [ruleLastResponseFilter, setRuleLastResponseFilter] = useState([]); + const [ruleStatusesFilter, setRuleStatusesFilter] = useState([]); const [typesFilter, setTypesFilter] = useState([]); const [currentRuleToEdit, setCurrentRuleToEdit] = useState(null); const [rulesToDelete, setRulesToDelete] = useState([]); @@ -106,7 +110,8 @@ export function RulesPage() { const { rulesState, setRulesState, reload, noData, initialLoad } = useFetchRules({ searchText, - ruleLastResponseFilter, + ruleLastResponseFilter: lastResponse, + ruleStatusesFilter, typesFilter, page, setPage, @@ -202,7 +207,11 @@ export function RulesPage() { width: '120px', 'data-test-subj': 'rulesTableCell-status', render: (_executionStatus: RuleExecutionStatus, item: RuleTableItem) => ( - + ), }, { @@ -280,6 +289,13 @@ export function RulesPage() { [] ); + const setExecutionStatusFilter = useCallback( + (ids: string[]) => { + setLastResponse(ids); + }, + [setLastResponse] + ); + const getRulesTable = () => { if (noData && !rulesState.isLoading) { return authorizedToCreateAnyRules ? ( @@ -294,6 +310,10 @@ export function RulesPage() { if (initialLoad) { return ; } + + // const nextSearchParams = new URLSearchParams(history.location.search); + // const xx = [...nextSearchParams.getAll('executionStatus')] || []; + // console.log(xx, '!!'); return ( <> @@ -331,10 +351,16 @@ export function RulesPage() { setRuleLastResponseFilter(ids)} + selectedStatuses={lastResponse} + onChange={setExecutionStatusFilter} /> + + {triggersActionsUi.getRuleStatusFilter({ + selectedStatuses: ruleStatusesFilter, + onChange: setRuleStatusesFilter, + })} + ); } + +function WrappedRulesPage() { + return ( + + + + ); +} + +export { WrappedRulesPage as RulesPage }; diff --git a/x-pack/plugins/observability/public/pages/rules/state_container/index.tsx b/x-pack/plugins/observability/public/pages/rules/state_container/index.tsx new file mode 100644 index 0000000000000..7820342482035 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/rules/state_container/index.tsx @@ -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 { Provider, rulesPageStateContainer } from './state_container'; +export { useRulesPageStateContainer } from './use_rules_page_state_container'; diff --git a/x-pack/plugins/observability/public/pages/rules/state_container/state_container.tsx b/x-pack/plugins/observability/public/pages/rules/state_container/state_container.tsx new file mode 100644 index 0000000000000..b36ffca96972e --- /dev/null +++ b/x-pack/plugins/observability/public/pages/rules/state_container/state_container.tsx @@ -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 { + createStateContainer, + createStateContainerReactHelpers, +} from '@kbn/kibana-utils-plugin/public'; + +interface RulesPageContainerState { + lastResponse: string[]; +} + +const defaultState: RulesPageContainerState = { + lastResponse: [], +}; + +interface RulesPageStateTransitions { + setLastResponse: ( + state: RulesPageContainerState + ) => (lastResponse: string[]) => RulesPageContainerState; +} + +const transitions: RulesPageStateTransitions = { + setLastResponse: (state) => (lastResponse) => { + const filteredIds = lastResponse; + lastResponse.forEach((id) => { + const isPreviouslyChecked = state.lastResponse.includes(id); + if (!isPreviouslyChecked) { + filteredIds.concat(id); + } else { + filteredIds.filter((val) => { + return val !== id; + }); + } + }); + return { ...state, lastResponse: filteredIds }; + }, +}; + +const rulesPageStateContainer = createStateContainer(defaultState, transitions); + +type RulesPageStateContainer = typeof rulesPageStateContainer; +const { Provider, useContainer } = createStateContainerReactHelpers(); + +export { Provider, rulesPageStateContainer, useContainer, defaultState }; +export type { RulesPageStateContainer, RulesPageContainerState, RulesPageStateTransitions }; diff --git a/x-pack/plugins/observability/public/pages/rules/state_container/use_rules_page_state_container.tsx b/x-pack/plugins/observability/public/pages/rules/state_container/use_rules_page_state_container.tsx new file mode 100644 index 0000000000000..6b44dc8ae31d5 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/rules/state_container/use_rules_page_state_container.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 { useEffect } from 'react'; +import { useHistory } from 'react-router-dom'; + +import { + createKbnUrlStateStorage, + syncState, + IKbnUrlStateStorage, + useContainerSelector, +} from '@kbn/kibana-utils-plugin/public'; + +import { + useContainer, + defaultState, + RulesPageStateContainer, + RulesPageContainerState, +} from './state_container'; + +export function useRulesPageStateContainer() { + const stateContainer = useContainer(); + + useUrlStateSyncEffect(stateContainer); + + const { setLastResponse } = stateContainer.transitions; + const { lastResponse } = useContainerSelector(stateContainer, (state) => state); + + return { + lastResponse, + setLastResponse, + }; +} + +function useUrlStateSyncEffect(stateContainer: RulesPageStateContainer) { + const history = useHistory(); + + useEffect(() => { + const urlStateStorage = createKbnUrlStateStorage({ + history, + useHash: false, + useHashQuery: false, + }); + const { start, stop } = setupUrlStateSync(stateContainer, urlStateStorage); + + start(); + + syncUrlStateWithInitialContainerState(stateContainer, urlStateStorage); + + return stop; + }, [stateContainer, history]); +} + +function setupUrlStateSync( + stateContainer: RulesPageStateContainer, + stateStorage: IKbnUrlStateStorage +) { + // This handles filling the state when an incomplete URL set is provided + const setWithDefaults = (changedState: Partial | null) => { + stateContainer.set({ ...defaultState, ...changedState }); + }; + return syncState({ + storageKey: '_a', + stateContainer: { + ...stateContainer, + set: setWithDefaults, + }, + stateStorage, + }); +} + +function syncUrlStateWithInitialContainerState( + stateContainer: RulesPageStateContainer, + urlStateStorage: IKbnUrlStateStorage +) { + const urlState = urlStateStorage.get>('_a'); + + if (urlState) { + const newState = { + ...defaultState, + ...urlState, + }; + + stateContainer.set(newState); + } else { + // Reset the state container when no URL state or timefilter range is set to avoid accidentally + // re-using state set on a previous visit to the page in the same session + stateContainer.set(defaultState); + } + + urlStateStorage.set('_a', stateContainer.get()); +} diff --git a/x-pack/plugins/observability/public/pages/rules/translations.ts b/x-pack/plugins/observability/public/pages/rules/translations.ts index 36f8ff62f1a4c..69f0b5beebf46 100644 --- a/x-pack/plugins/observability/public/pages/rules/translations.ts +++ b/x-pack/plugins/observability/public/pages/rules/translations.ts @@ -53,27 +53,6 @@ export const RULE_STATUS_WARNING = i18n.translate( } ); -export const RULE_STATUS_ENABLED = i18n.translate( - 'xpack.observability.rules.rulesTable.ruleStatusEnabled', - { - defaultMessage: 'Enabled', - } -); - -export const RULE_STATUS_DISABLED = i18n.translate( - 'xpack.observability.rules.rulesTable.ruleStatusDisabled', - { - defaultMessage: 'Disabled', - } -); - -export const RULE_STATUS_SNOOZED_INDEFINITELY = i18n.translate( - 'xpack.observability.rules.rulesTable.ruleStatusSnoozedIndefinitely', - { - defaultMessage: 'Snoozed indefinitely', - } -); - export const LAST_RESPONSE_COLUMN_TITLE = i18n.translate( 'xpack.observability.rules.rulesTable.columns.lastResponseTitle', { diff --git a/x-pack/plugins/observability/public/pages/rules/types.ts b/x-pack/plugins/observability/public/pages/rules/types.ts index cbcd97919cddc..866e5de91d9c5 100644 --- a/x-pack/plugins/observability/public/pages/rules/types.ts +++ b/x-pack/plugins/observability/public/pages/rules/types.ts @@ -7,44 +7,17 @@ import { Dispatch, SetStateAction } from 'react'; import { EuiTableSortingType, EuiBasicTableColumn } from '@elastic/eui'; import { RuleExecutionStatus } from '@kbn/alerting-plugin/common'; -import { RuleTableItem, Rule } from '@kbn/triggers-actions-ui-plugin/public'; -export interface StatusProps { - type: RuleStatus; - disabled: boolean; - onClick: () => void; -} - -export enum RuleStatus { - enabled = 'enabled', - disabled = 'disabled', - snoozed = 'snoozed', -} - -export type Status = Record< - RuleStatus, - { - color: string; - label: string; - } ->; +import { RuleTableItem, Rule, RuleStatus } from '@kbn/triggers-actions-ui-plugin/public'; -export interface StatusContextProps { - item: RuleTableItem; - disabled: boolean; - onStatusChanged: (status: RuleStatus) => void; - enableRule: (rule: Rule) => Promise; - disableRule: (rule: Rule) => Promise; - muteRule: (rule: Rule) => Promise; - unMuteRule: (rule: Rule) => Promise; -} - -export interface StatusFilterProps { +export interface LastResponseFilterProps { selectedStatuses: string[]; onChange?: (selectedRuleStatusesIds: string[]) => void; } export interface ExecutionStatusProps { executionStatus: RuleExecutionStatus; + item: RuleTableItem; + licenseType: string; } export interface LastRunProps { @@ -69,6 +42,7 @@ export interface Pagination { export interface FetchRulesProps { searchText: string | undefined; ruleLastResponseFilter: string[]; + ruleStatusesFilter: RuleStatus[]; typesFilter: string[]; page: Pagination; setPage: Dispatch>; diff --git a/x-pack/plugins/osquery/cypress/README.md b/x-pack/plugins/osquery/cypress/README.md index 72d558b6e5980..6d72c6aa82b9d 100644 --- a/x-pack/plugins/osquery/cypress/README.md +++ b/x-pack/plugins/osquery/cypress/README.md @@ -101,13 +101,13 @@ We use es_archiver to manage the data that our Cypress tests need. 3. When you are sure that you have all the data you need run the following command from: `x-pack/plugins/osquery` ```sh -node ../../../scripts/es_archiver save --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.js --es-url http://:@: +node ../../../scripts/es_archiver save --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://:@: ``` Example: ```sh -node ../../../scripts/es_archiver save custom_rules ".kibana",".siem-signal*" --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.js --es-url http://elastic:changeme@localhost:9220 +node ../../../scripts/es_archiver save custom_rules ".kibana",".siem-signal*" --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://elastic:changeme@localhost:9220 ``` Note that the command will create the folder if it does not exist. diff --git a/x-pack/plugins/osquery/public/plugin.ts b/x-pack/plugins/osquery/public/plugin.ts index e88a866cc545f..e21defbaa8828 100644 --- a/x-pack/plugins/osquery/public/plugin.ts +++ b/x-pack/plugins/osquery/public/plugin.ts @@ -45,6 +45,7 @@ export class OsqueryPlugin implements Plugin; }; - aggs?: { - [x: string]: BucketAggsSchemas; - }; + aggs?: BucketAggsSchemas; + aggregations?: BucketAggsSchemas; } /** @@ -114,78 +113,83 @@ interface BucketAggsSchemas { * - 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), - }) - ) +const bucketAggsTempsSchemas: t.Type = 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)), + ]), + }) + ), + }) ); +export const bucketAggsSchemas = t.intersection([ + bucketAggsTempsSchemas, + t.partial({ + aggs: t.union([t.record(t.string, bucketAggsTempsSchemas), t.undefined]), + aggregations: t.union([t.record(t.string, bucketAggsTempsSchemas), t.undefined]), + }), +]); + /** * Schemas for the metrics Aggregations * @@ -215,57 +219,75 @@ export const BucketAggsSchemas: t.Type = t.recursion('BucketA * - 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 const metricsAggsSchemas = t.exact( + t.partial({ + avg: t.exact( + t.partial({ + field: t.string, + missing: t.union([t.string, t.number, t.boolean]), + }) + ), + cardinality: t.exact( + t.partial({ + field: t.string, + precision_threshold: t.number, + rehash: t.boolean, + missing: t.union([t.string, t.number, t.boolean]), + }) + ), + min: t.exact( + t.partial({ + field: t.string, + missing: t.union([t.string, t.number, t.boolean]), + format: t.string, + }) + ), + max: t.exact( + t.partial({ + field: t.string, + missing: t.union([t.string, t.number, t.boolean]), + format: t.string, + }) + ), + sum: t.exact( + t.partial({ + field: t.string, + missing: t.union([t.string, t.number, t.boolean]), + }) + ), + top_hits: t.exact( + 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.exact( + 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, + }), + }) + ), + aggs: t.undefined, + aggregations: t.undefined, + }) +); export type PutIndexTemplateRequest = estypes.IndicesPutIndexTemplateRequest & { body?: { composed_of?: string[] }; 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 b5df5dc830d48..effd2f4f81b89 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 @@ -647,7 +647,6 @@ export class AlertsClient { [ReadOperations.Find, ReadOperations.Get, WriteOperations.Update], AlertingAuthorizationEntity.Alert ); - // As long as the user can read a minimum of one type of rule type produced by the provided feature, // the user should be provided that features' alerts index. // Limiting which alerts that user can read on that index will be done via the findAuthorizationFilter @@ -655,19 +654,16 @@ export class AlertsClient { for (const ruleType of augmentedRuleTypes.authorizedRuleTypes) { authorizedFeatures.add(ruleType.producer); } - 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); + const toReturn = validAuthorizedFeatures.map((feature) => { + const index = this.ruleDataService.findIndexByFeature(feature, Dataset.alerts); + if (index == null) { + throw new Error(`This feature id ${feature} should be associated to an alert index`); } + return index?.getPrimaryAlias(this.spaceId ?? '*') ?? ''; }); return toReturn; diff --git a/x-pack/plugins/rule_registry/server/routes/find.ts b/x-pack/plugins/rule_registry/server/routes/find.ts index eca0a6c2a0551..675037baa312a 100644 --- a/x-pack/plugins/rule_registry/server/routes/find.ts +++ b/x-pack/plugins/rule_registry/server/routes/find.ts @@ -14,7 +14,7 @@ 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'; +import { bucketAggsSchemas, metricsAggsSchemas } from '../../common/types'; export const findAlertsByQueryRoute = (router: IRouter) => { router.post( @@ -26,7 +26,11 @@ export const findAlertsByQueryRoute = (router: IRouter t.partial({ index: t.string, query: t.object, - aggs: t.union([t.record(t.string, BucketAggsSchemas), t.undefined]), + aggs: t.union([ + t.record(t.string, bucketAggsSchemas), + t.record(t.string, metricsAggsSchemas), + 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]), 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 8bbc14cab9f82..cfbfafd0092bf 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 @@ -16,7 +16,7 @@ export const ruleDataServiceMock = { initializeService: jest.fn(), initializeIndex: jest.fn(), findIndexByName: jest.fn(), - findIndicesByFeature: jest.fn(), + findIndexByFeature: jest.fn(), }), }; 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 a940201841e6f..a336f73c87c79 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 @@ -71,7 +71,7 @@ export interface IRuleDataService { * Looks up the index information associated with the given Kibana "feature". * Note: features are used in RBAC. */ - findIndicesByFeature(featureId: ValidFeatureId, dataset?: Dataset): IndexInfo[]; + findIndexByFeature(featureId: ValidFeatureId, dataset: Dataset): IndexInfo | null; } // TODO: This is a leftover. Remove its usage from the "observability" plugin and delete it. @@ -214,8 +214,13 @@ export class RuleDataService implements IRuleDataService { return this.indicesByBaseName.get(baseName) ?? null; } - public findIndicesByFeature(featureId: ValidFeatureId, dataset?: Dataset): IndexInfo[] { + public findIndexByFeature(featureId: ValidFeatureId, dataset: Dataset): IndexInfo | null { const foundIndices = this.indicesByFeatureId.get(featureId) ?? []; - return dataset ? foundIndices.filter((i) => i.indexOptions.dataset === dataset) : foundIndices; + if (dataset && foundIndices.length > 0) { + return foundIndices.filter((i) => i.indexOptions.dataset === dataset)[0]; + } else if (foundIndices.length > 0) { + return foundIndices[0]; + } + return null; } } diff --git a/x-pack/plugins/rule_registry/server/search_strategy/search_strategy.test.ts b/x-pack/plugins/rule_registry/server/search_strategy/search_strategy.test.ts index 79b9a8cd75c58..9bfc4d7a40640 100644 --- a/x-pack/plugins/rule_registry/server/search_strategy/search_strategy.test.ts +++ b/x-pack/plugins/rule_registry/server/search_strategy/search_strategy.test.ts @@ -78,12 +78,10 @@ describe('ruleRegistrySearchStrategyProvider()', () => { const searchStrategySearch = jest.fn().mockImplementation(() => of(response)); beforeEach(() => { - ruleDataService.findIndicesByFeature.mockImplementation(() => { - return [ - { - baseName: 'test', - } as IndexInfo, - ]; + ruleDataService.findIndexByFeature.mockImplementation(() => { + return { + baseName: 'test', + } as IndexInfo; }); data.search.getSearchStrategy.mockImplementation(() => { @@ -108,7 +106,7 @@ describe('ruleRegistrySearchStrategyProvider()', () => { }); afterEach(() => { - ruleDataService.findIndicesByFeature.mockClear(); + ruleDataService.findIndexByFeature.mockClear(); data.search.getSearchStrategy.mockClear(); (data.search.searchAsInternalUser.search as jest.Mock).mockClear(); getAuthzFilterSpy.mockClear(); @@ -156,12 +154,10 @@ describe('ruleRegistrySearchStrategyProvider()', () => { }; }); - ruleDataService.findIndicesByFeature.mockImplementation(() => { - return [ - { - baseName: 'myTestIndex', - } as unknown as IndexInfo, - ]; + ruleDataService.findIndexByFeature.mockImplementation(() => { + return { + baseName: 'myTestIndex', + } as unknown as IndexInfo; }); let searchRequest: RuleRegistrySearchRequest = {} as unknown as RuleRegistrySearchRequest; @@ -199,8 +195,8 @@ describe('ruleRegistrySearchStrategyProvider()', () => { request: {}, }; - ruleDataService.findIndicesByFeature.mockImplementationOnce(() => { - return []; + ruleDataService.findIndexByFeature.mockImplementationOnce(() => { + return null; }); const strategy = ruleRegistrySearchStrategyProvider( diff --git a/x-pack/plugins/rule_registry/server/search_strategy/search_strategy.ts b/x-pack/plugins/rule_registry/server/search_strategy/search_strategy.ts index 851ffbdc098da..255af29a9a9d3 100644 --- a/x-pack/plugins/rule_registry/server/search_strategy/search_strategy.ts +++ b/x-pack/plugins/rule_registry/server/search_strategy/search_strategy.ts @@ -89,17 +89,16 @@ export const ruleRegistrySearchStrategyProvider = ( ); return accum; } - - return [ - ...accum, - ...ruleDataService - .findIndicesByFeature(featureId, Dataset.alerts) - .map((indexInfo) => { - return featureId === 'siem' - ? `${indexInfo.baseName}-${space?.id ?? ''}*` - : `${indexInfo.baseName}*`; - }), - ]; + const alertIndexInfo = ruleDataService.findIndexByFeature(featureId, Dataset.alerts); + if (alertIndexInfo) { + return [ + ...accum, + featureId === 'siem' + ? `${alertIndexInfo.baseName}-${space?.id ?? ''}*` + : `${alertIndexInfo.baseName}*`, + ]; + } + return accum; }, []); if (indices.length === 0) { diff --git a/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.test.ts b/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.test.ts index 8596f80d09d46..c4da245f48fcd 100644 --- a/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.test.ts +++ b/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.test.ts @@ -128,6 +128,7 @@ describe(`feature_privilege_builder`, () => { Array [ "alerting:1.0.0-zeta1:alert-type/my-feature/alert/get", "alerting:1.0.0-zeta1:alert-type/my-feature/alert/find", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/getAuthorizedAlertsIndices", ] `); }); @@ -175,6 +176,7 @@ describe(`feature_privilege_builder`, () => { "alerting:1.0.0-zeta1:alert-type/my-feature/rule/find", "alerting:1.0.0-zeta1:alert-type/my-feature/alert/get", "alerting:1.0.0-zeta1:alert-type/my-feature/alert/find", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/getAuthorizedAlertsIndices", ] `); }); @@ -263,12 +265,13 @@ describe(`feature_privilege_builder`, () => { }); expect(alertingFeaturePrivileges.getActions(privilege, feature)).toMatchInlineSnapshot(` - Array [ - "alerting:1.0.0-zeta1:alert-type/my-feature/alert/get", - "alerting:1.0.0-zeta1:alert-type/my-feature/alert/find", - "alerting:1.0.0-zeta1:alert-type/my-feature/alert/update", - ] - `); + Array [ + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/get", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/find", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/getAuthorizedAlertsIndices", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/update", + ] + `); }); test('grants `all` privileges to rules and alerts under feature consumer', () => { @@ -326,6 +329,7 @@ describe(`feature_privilege_builder`, () => { "alerting:1.0.0-zeta1:alert-type/my-feature/rule/unsnooze", "alerting:1.0.0-zeta1:alert-type/my-feature/alert/get", "alerting:1.0.0-zeta1:alert-type/my-feature/alert/find", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/getAuthorizedAlertsIndices", "alerting:1.0.0-zeta1:alert-type/my-feature/alert/update", ] `); @@ -420,14 +424,16 @@ describe(`feature_privilege_builder`, () => { }); expect(alertingFeaturePrivileges.getActions(privilege, feature)).toMatchInlineSnapshot(` - Array [ - "alerting:1.0.0-zeta1:alert-type/my-feature/alert/get", - "alerting:1.0.0-zeta1:alert-type/my-feature/alert/find", - "alerting:1.0.0-zeta1:alert-type/my-feature/alert/update", - "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/alert/get", - "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/alert/find", - ] - `); + Array [ + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/get", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/find", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/getAuthorizedAlertsIndices", + "alerting:1.0.0-zeta1:alert-type/my-feature/alert/update", + "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/alert/get", + "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/alert/find", + "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/alert/getAuthorizedAlertsIndices", + ] + `); }); test('grants both `all` and `read` to rules and alerts privileges under feature consumer', () => { @@ -490,9 +496,11 @@ describe(`feature_privilege_builder`, () => { "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/rule/find", "alerting:1.0.0-zeta1:another-alert-type/my-feature/alert/get", "alerting:1.0.0-zeta1:another-alert-type/my-feature/alert/find", + "alerting:1.0.0-zeta1:another-alert-type/my-feature/alert/getAuthorizedAlertsIndices", "alerting:1.0.0-zeta1:another-alert-type/my-feature/alert/update", "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/alert/get", "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/alert/find", + "alerting:1.0.0-zeta1:readonly-alert-type/my-feature/alert/getAuthorizedAlertsIndices", ] `); }); diff --git a/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.ts b/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.ts index c23a989951f52..3a692e935cf37 100644 --- a/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.ts +++ b/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.ts @@ -18,7 +18,7 @@ enum AlertingEntity { const readOperations: Record = { rule: ['get', 'getRuleState', 'getAlertSummary', 'getExecutionLog', 'find'], - alert: ['get', 'find'], + alert: ['get', 'find', 'getAuthorizedAlertsIndices'], }; const writeOperations: Record = { diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index ea2f83a32182e..1d898901455e7 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -121,10 +121,12 @@ export enum SecurityPageName { usersExternalAlerts = 'users-external_alerts', threatHuntingLanding = 'threat-hunting', dashboardsLanding = 'dashboards', + manageLanding = 'manage', } export const THREAT_HUNTING_PATH = '/threat_hunting' as const; export const DASHBOARDS_PATH = '/dashboards' as const; +export const MANAGE_PATH = '/manage' as const; export const TIMELINES_PATH = '/timelines' as const; export const CASES_PATH = '/cases' as const; export const OVERVIEW_PATH = '/overview' as const; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/common/rule_monitoring.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/common/rule_monitoring.ts index f73e60487a4a8..af005d1b60a8f 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/common/rule_monitoring.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/common/rule_monitoring.ts @@ -53,8 +53,6 @@ export enum RuleExecutionStatus { export const ruleExecutionStatus = enumeration('RuleExecutionStatus', RuleExecutionStatus); -export type RuleExecutionStatusType = t.TypeOf; - export const ruleExecutionStatusOrder = PositiveInteger; export type RuleExecutionStatusOrder = t.TypeOf; @@ -130,7 +128,7 @@ export const aggregateRuleExecutionEvent = t.type({ timed_out: t.boolean, indexing_duration_ms: t.number, search_duration_ms: t.number, - gap_duration_ms: t.number, + gap_duration_s: t.number, security_status: t.string, security_message: t.string, }); @@ -140,7 +138,7 @@ export type AggregateRuleExecutionEvent = t.TypeOf( 'DefaultStatusFiltersStringArray', t.array(ruleExecutionStatus).is, - (input, context): Either => { + (input, context): Either => { if (input == null) { return t.success([]); } else if (typeof input === 'string') { - return t.array(ruleExecutionStatus).validate(input.split(','), context); + if (input === '') { + return t.success([]); + } else { + return t.array(ruleExecutionStatus).validate(input.split(','), context); + } } else { return t.array(ruleExecutionStatus).validate(input, context); } diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts index 369b1fff5fe39..04dce4e60a092 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts @@ -71,6 +71,7 @@ export const indexEndpointAndFleetActionsForHost = async ( { index: AGENT_ACTIONS_INDEX, body: action, + refresh: 'wait_for', }, ES_INDEX_OPTIONS ) @@ -98,6 +99,7 @@ export const indexEndpointAndFleetActionsForHost = async ( .index({ index: ENDPOINT_ACTIONS_INDEX, body: endpointActionsBody, + refresh: 'wait_for', }) .catch(wrapErrorAndRejectPromise), ]); @@ -125,6 +127,7 @@ export const indexEndpointAndFleetActionsForHost = async ( { index: AGENT_ACTIONS_RESULTS_INDEX, body: actionResponse, + refresh: 'wait_for', }, ES_INDEX_OPTIONS ) @@ -159,6 +162,7 @@ export const indexEndpointAndFleetActionsForHost = async ( .index({ index: ENDPOINT_ACTION_RESPONSES_INDEX, body: endpointActionResponseBody, + refresh: 'wait_for', }) .catch(wrapErrorAndRejectPromise), ]); @@ -197,6 +201,7 @@ export const indexEndpointAndFleetActionsForHost = async ( { index: AGENT_ACTIONS_INDEX, body: action, + refresh: 'wait_for', }, ES_INDEX_OPTIONS ) @@ -221,6 +226,7 @@ export const indexEndpointAndFleetActionsForHost = async ( { index: AGENT_ACTIONS_INDEX, body: action1, + refresh: 'wait_for', }, ES_INDEX_OPTIONS ) @@ -230,6 +236,7 @@ export const indexEndpointAndFleetActionsForHost = async ( { index: AGENT_ACTIONS_INDEX, body: action2, + refresh: 'wait_for', }, ES_INDEX_OPTIONS ) diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts index 2f304351dc435..30d75b30a11b6 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts @@ -165,6 +165,10 @@ export async function indexEndpointHostDocs({ // Update the Host metadata record with the ID of the "real" policy along with the enrolled agent id hostMetadata = { ...hostMetadata, + agent: { + ...hostMetadata.agent, + id: enrolledAgent?.id ?? hostMetadata.agent.id, + }, elastic: { ...hostMetadata.elastic, agent: { @@ -201,6 +205,7 @@ export async function indexEndpointHostDocs({ index: metadataIndex, body: hostMetadata, op_type: 'create', + refresh: 'wait_for', }) .catch(wrapErrorAndRejectPromise); @@ -214,6 +219,7 @@ export async function indexEndpointHostDocs({ index: policyResponseIndex, body: hostPolicyResponse, op_type: 'create', + refresh: 'wait_for', }) .catch(wrapErrorAndRejectPromise); diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_agent.ts b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_agent.ts index 70b1e1c52a77b..b051eff37edc7 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_agent.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_agent.ts @@ -47,6 +47,7 @@ export const indexFleetAgentForHost = async ( fleetAgentGenerator: FleetAgentGenerator = defaultFleetAgentGenerator ): Promise => { const agentDoc = fleetAgentGenerator.generateEsHit({ + _id: endpointHost.agent.id, _source: { agent: { id: endpointHost.agent.id, @@ -75,6 +76,7 @@ export const indexFleetAgentForHost = async ( id: agentDoc._id, body: agentDoc._source, op_type: 'create', + refresh: 'wait_for', }) .catch(wrapErrorAndRejectPromise); diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_server.ts b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_server.ts index c11c2025ee88e..8b8a15a1164e5 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_server.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_server.ts @@ -31,6 +31,7 @@ export const enableFleetServerIfNecessary = async (esClient: Client, version: st await esClient .index({ index: FLEET_SERVER_SERVERS_INDEX, + refresh: 'wait_for', body: { agent: { id: '12988155-475c-430d-ac89-84dc84b67cd1', 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 a571c7848bdf3..5a6b20550f224 100644 --- a/x-pack/plugins/security_solution/common/endpoint/generate_data.ts +++ b/x-pack/plugins/security_solution/common/endpoint/generate_data.ts @@ -464,16 +464,17 @@ export class EndpointDocGenerator extends BaseDataGenerator { const agentVersion = this.randomVersion(); const minCapabilitiesVersion = '7.15.0'; const capabilities = ['isolation']; + const agentId = this.seededUUIDv4(); return { agent: { version: agentVersion, - id: this.seededUUIDv4(), + id: agentId, type: 'endpoint', }, elastic: { agent: { - id: this.seededUUIDv4(), + id: agentId, }, }, host: { diff --git a/x-pack/plugins/security_solution/cypress/README.md b/x-pack/plugins/security_solution/cypress/README.md index 69a8019146ae6..e0430ea332e99 100644 --- a/x-pack/plugins/security_solution/cypress/README.md +++ b/x-pack/plugins/security_solution/cypress/README.md @@ -203,7 +203,7 @@ yarn kbn bootstrap # load auditbeat data needed for test execution (which FTR normally does for us) cd x-pack/plugins/security_solution -node ../../../scripts/es_archiver load auditbeat --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.js --es-url http(s)://:@ --kibana-url http(s)://:@ +node ../../../scripts/es_archiver load auditbeat --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http(s)://:@ --kibana-url http(s)://:@ # launch the cypress test runner with overridden environment variables cd x-pack/plugins/security_solution @@ -221,7 +221,7 @@ yarn kbn bootstrap # load auditbeat data needed for test execution (which FTR normally does for us) cd x-pack/plugins/security_solution -node ../../../scripts/es_archiver load auditbeat --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.js --es-url http(s)://:@ --kibana-url http(s)://:@ +node ../../../scripts/es_archiver load auditbeat --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http(s)://:@ --kibana-url http(s)://:@ # launch the cypress test runner with overridden environment variables cd x-pack/plugins/security_solution @@ -344,13 +344,13 @@ We use es_archiver to manage the data that our Cypress tests need. 3. When you are sure that you have all the data you need run the following command from: `x-pack/plugins/security_solution` ```sh -node ../../../scripts/es_archiver save --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.js --es-url http://:@: +node ../../../scripts/es_archiver save --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://:@: ``` Example: ```sh -node ../../../scripts/es_archiver save custom_rules ".kibana",".siem-signal*" --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.js --es-url http://elastic:changeme@localhost:9220 +node ../../../scripts/es_archiver save custom_rules ".kibana",".siem-signal*" --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://elastic:changeme@localhost:9220 ``` Note that the command will create the folder if it does not exist. diff --git a/x-pack/plugins/security_solution/cypress/tasks/alerts.ts b/x-pack/plugins/security_solution/cypress/tasks/alerts.ts index 9c5780a9a31fc..3c4d434b1ec3f 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/alerts.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/alerts.ts @@ -65,6 +65,7 @@ export const closeAlerts = () => { export const expandFirstAlertActions = () => { cy.get(TIMELINE_CONTEXT_MENU_BTN).should('be.visible'); + cy.get(TIMELINE_CONTEXT_MENU_BTN).find('svg').should('have.class', 'euiIcon-isLoaded'); cy.get(TIMELINE_CONTEXT_MENU_BTN).first().click({ force: true }); }; diff --git a/x-pack/plugins/security_solution/cypress/tasks/es_archiver.ts b/x-pack/plugins/security_solution/cypress/tasks/es_archiver.ts index 83ec1536baf0f..588a1e94cf407 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/es_archiver.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/es_archiver.ts @@ -8,7 +8,7 @@ import Path from 'path'; const ES_ARCHIVE_DIR = '../../test/security_solution_cypress/es_archives'; -const CONFIG_PATH = '../../test/functional/config.js'; +const CONFIG_PATH = '../../test/functional/config.base.js'; const ES_URL = Cypress.env('ELASTICSEARCH_URL'); const KIBANA_URL = Cypress.config().baseUrl; const CCS_ES_URL = Cypress.env('CCS_ELASTICSEARCH_URL'); diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_items.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_items.tsx index 5331b2376fd9f..30b5b3e4d1339 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_items.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_items.tsx @@ -23,11 +23,6 @@ const MyFlexItem = styled(EuiFlexItem)` } `; -const MyExceptionsContainer = styled(EuiFlexGroup)` - height: 600px; - overflow: hidden; -`; - const MyExceptionItemContainer = styled(EuiFlexGroup)` margin: ${({ theme }) => `0 ${theme.eui.euiSize} ${theme.eui.euiSize} 0`}; `; @@ -55,7 +50,7 @@ const ExceptionsViewerItemsComponent: React.FC = ({ onEditExceptionItem, disableActions, }): JSX.Element => ( - + {showEmpty || showNoResults || isInitLoading ? ( = ({ )} - + ); ExceptionsViewerItemsComponent.displayName = 'ExceptionsViewerItemsComponent'; diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_date/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/formatted_date/index.test.tsx index d25294879a572..a981fb2d2b3f2 100644 --- a/x-pack/plugins/security_solution/public/common/components/formatted_date/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/formatted_date/index.test.tsx @@ -43,6 +43,18 @@ describe('formatted_date', () => { expect(wrapper.text()).toEqual('Feb 25, 2019 @ 22:27:05.000'); }); + test.each([ + ['MMMM D, YYYY', 'February 25, 2019'], + ['MM/D/YY', '02/25/19'], + ['d-m-y', '1-27-2019'], + ])('it renders the date in the correct format: %s', (momentDateFormat, expectedResult) => { + const wrapper = mount( + + ); + + expect(wrapper.text()).toEqual(expectedResult); + }); + test('it renders a UTC ISO8601 date string supplied when no date format configuration exists', () => { mockUseDateFormat.mockImplementation(() => ''); const wrapper = mount(); diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_date/index.tsx b/x-pack/plugins/security_solution/public/common/components/formatted_date/index.tsx index a31448d181ea7..a837f0cbfa3ec 100644 --- a/x-pack/plugins/security_solution/public/common/components/formatted_date/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/formatted_date/index.tsx @@ -97,16 +97,18 @@ interface FormattedDateProps { className?: string; fieldName: string; value?: string | number | null; + dateFormat?: string; } export const FormattedDate = React.memo( - ({ value, fieldName, className = '' }): JSX.Element => { + ({ value, fieldName, className = '', dateFormat }): JSX.Element => { if (value == null) { return getOrEmptyTagFromValue(value); } + const maybeDate = getMaybeDate(value); return maybeDate.isValid() ? ( - + ) : ( getOrEmptyTagFromValue(value) diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/index.test.tsx index b06fde164af76..162f321b33f6c 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/index.test.tsx @@ -95,6 +95,7 @@ describe('VisualizationActions', () => { addError: jest.fn(), addSuccess: jest.fn(), addWarning: jest.fn(), + remove: jest.fn(), }, }, http: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/common/containers/events/last_event_time/index.test.ts b/x-pack/plugins/security_solution/public/common/containers/events/last_event_time/index.test.ts index 1bd188d01cb51..ce03d159df5a9 100644 --- a/x-pack/plugins/security_solution/public/common/containers/events/last_event_time/index.test.ts +++ b/x-pack/plugins/security_solution/public/common/containers/events/last_event_time/index.test.ts @@ -47,6 +47,7 @@ jest.mock('../../../lib/kibana', () => ({ addError: jest.fn(), addSuccess: jest.fn(), addWarning: jest.fn(), + remove: jest.fn(), }), })); diff --git a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.test.tsx b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.test.tsx index 1d02d608c0e92..a949478593466 100644 --- a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.test.tsx @@ -60,6 +60,7 @@ jest.mock('../../lib/kibana', () => ({ addError: jest.fn(), addSuccess: jest.fn(), addWarning: mockAddWarning, + remove: jest.fn(), }), useKibana: () => ({ services: { diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.mock.ts b/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.mock.ts index c0bb52b20c534..ae3783e82cdbf 100644 --- a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.mock.ts +++ b/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.mock.ts @@ -11,6 +11,7 @@ const createAppToastsMock = (): jest.Mocked => ({ addError: jest.fn(), addSuccess: jest.fn(), addWarning: jest.fn(), + remove: jest.fn(), api: { get$: jest.fn(), add: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.test.ts b/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.test.ts index 9bea6282e3ad6..359d29be7cd08 100644 --- a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.test.ts +++ b/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.test.ts @@ -30,15 +30,18 @@ describe('useAppToasts', () => { let addErrorMock: jest.Mock; let addSuccessMock: jest.Mock; let addWarningMock: jest.Mock; + let removeMock: jest.Mock; beforeEach(() => { addErrorMock = jest.fn(); addSuccessMock = jest.fn(); addWarningMock = jest.fn(); + removeMock = jest.fn(); (useToasts as jest.Mock).mockImplementation(() => ({ addError: addErrorMock, addSuccess: addSuccessMock, addWarning: addWarningMock, + remove: removeMock, })); }); diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts b/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts index 4b3b28a54c642..d9c3713f3a4ba 100644 --- a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts +++ b/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts @@ -19,7 +19,7 @@ import { IEsError, isEsError } from '@kbn/data-plugin/public'; import { ErrorToastOptions, ToastsStart, Toast } from '@kbn/core/public'; import { useToasts } from '../lib/kibana'; -export type UseAppToasts = Pick & { +export type UseAppToasts = Pick & { api: ToastsStart; addError: (error: unknown, options: ErrorToastOptions) => Toast; }; @@ -36,6 +36,7 @@ export const useAppToasts = (): UseAppToasts => { const addError = useRef(toasts.addError.bind(toasts)).current; const addSuccess = useRef(toasts.addSuccess.bind(toasts)).current; const addWarning = useRef(toasts.addWarning.bind(toasts)).current; + const remove = useRef(toasts.remove.bind(toasts)).current; const _addError = useCallback( (error: unknown, options: ErrorToastOptions) => { @@ -46,8 +47,8 @@ export const useAppToasts = (): UseAppToasts => { ); return useMemo( - () => ({ api: toasts, addError: _addError, addSuccess, addWarning }), - [_addError, addSuccess, addWarning, toasts] + () => ({ api: toasts, addError: _addError, addSuccess, addWarning, remove }), + [_addError, addSuccess, addWarning, remove, toasts] ); }; diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts index 0097e31cfee8a..09e7c1fa6e8c8 100644 --- a/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts @@ -157,6 +157,10 @@ export const createStartServicesMock = ( theme: { theme$: themeServiceMock.createTheme$(), }, + timelines: { + getLastUpdated: jest.fn(), + getFieldBrowser: jest.fn(), + }, } as unknown as StartServices; }; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.test.tsx index 3c82161851dd3..539728291156f 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.test.tsx @@ -55,6 +55,7 @@ jest.mock('../../../../common/lib/kibana/kibana_react', () => { addWarning: jest.fn(), addError: jest.fn(), addSuccess: jest.fn(), + remove: jest.fn(), }, }, }, diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/__mocks__/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/__mocks__/api.ts index d93d667f5fbca..59f79b294d7fa 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/__mocks__/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/__mocks__/api.ts @@ -78,7 +78,7 @@ export const fetchRuleExecutionEvents = async ({ duration_ms: 3866, es_search_duration_ms: 1236, execution_uuid: '88d15095-7937-462c-8f21-9763e1387cad', - gap_duration_ms: 0, + gap_duration_s: 0, indexing_duration_ms: 95, message: "rule executed: siem.queryRule:fb1fc150-a292-11ec-a2cf-c1b28b0392b0: 'Lots of Execution Events'", diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.test.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.test.ts index b999040674a91..c932d0f982bb6 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.test.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.test.ts @@ -630,7 +630,7 @@ describe('Detections Rules API', () => { start: '2001-01-01T17:00:00.000Z', end: '2001-01-02T17:00:00.000Z', queryText: '', - statusFilters: '', + statusFilters: [], signal: abortCtrl.signal, }); @@ -659,7 +659,7 @@ describe('Detections Rules API', () => { start: 'now-30', end: 'now', queryText: '', - statusFilters: '', + statusFilters: [], signal: abortCtrl.signal, }); expect(response).toEqual(responseMock); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts index cb78a7a116ae4..220926ebc1722 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { camelCase } from 'lodash'; import dateMath from '@kbn/datemath'; import { HttpStart } from '@kbn/core/public'; @@ -18,7 +19,11 @@ import { DETECTION_ENGINE_RULES_PREVIEW, detectionEngineRuleExecutionEventsUrl, } from '../../../../../common/constants'; -import { BulkAction } from '../../../../../common/detection_engine/schemas/common'; +import { + AggregateRuleExecutionEvent, + BulkAction, + RuleExecutionStatus, +} from '../../../../../common/detection_engine/schemas/common'; import { FullResponseSchema, PreviewResponse, @@ -320,11 +325,11 @@ export const exportRules = async ({ * @param start Start daterange either in UTC ISO8601 or as datemath string (e.g. `2021-12-29T02:44:41.653Z` or `now-30`) * @param end End daterange either in UTC ISO8601 or as datemath string (e.g. `2021-12-29T02:44:41.653Z` or `now/w`) * @param queryText search string in querystring format (e.g. `event.duration > 1000 OR kibana.alert.rule.execution.metrics.execution_gap_duration_s > 100`) - * @param statusFilters comma separated string of `statusFilters` (e.g. `succeeded,failed,partial failure`) + * @param statusFilters RuleExecutionStatus[] array of `statusFilters` (e.g. `succeeded,failed,partial failure`) * @param page current page to fetch * @param perPage number of results to fetch per page - * @param sortField field to sort by - * @param sortOrder what order to sort by (e.g. `asc` or `desc`) + * @param sortField keyof AggregateRuleExecutionEvent field to sort by + * @param sortOrder SortOrder what order to sort by (e.g. `asc` or `desc`) * @param signal AbortSignal Optional signal for cancelling the request * * @throws An error if response is not OK @@ -345,11 +350,11 @@ export const fetchRuleExecutionEvents = async ({ start: string; end: string; queryText?: string; - statusFilters?: string; + statusFilters?: RuleExecutionStatus[]; page?: number; perPage?: number; - sortField?: string; - sortOrder?: string; + sortField?: keyof AggregateRuleExecutionEvent; + sortOrder?: SortOrder; signal?: AbortSignal; }): Promise => { const url = detectionEngineRuleExecutionEventsUrl(ruleId); @@ -361,7 +366,7 @@ export const fetchRuleExecutionEvents = async ({ start: startDate?.utc().toISOString(), end: endDate?.utc().toISOString(), query_text: queryText, - status_filters: statusFilters, + status_filters: statusFilters?.sort()?.join(','), page, per_page: perPage, sort_field: sortField, diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/mock.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/mock.ts index 533ab6138cb09..8c1737a4519a7 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/mock.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/mock.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { GetAggregateRuleExecutionEventsResponse } from '../../../../../common/detection_engine/schemas/response'; import { FetchRulesResponse, Rule } from './types'; export const savedRuleMock: Rule = { @@ -126,3 +127,170 @@ export const rulesMock: FetchRulesResponse = { }, ], }; + +export const ruleExecutionEventsMock: GetAggregateRuleExecutionEventsResponse = { + events: [ + { + execution_uuid: 'dc45a63c-4872-4964-a2d0-bddd8b2e634d', + timestamp: '2022-04-28T21:19:08.047Z', + duration_ms: 3, + status: 'failure', + message: 'siem.queryRule:a6e61cf0-c737-11ec-9e32-e14913ffdd2d: execution failed', + num_active_alerts: 0, + num_new_alerts: 0, + num_recovered_alerts: 0, + num_triggered_actions: 0, + num_succeeded_actions: 0, + num_errored_actions: 0, + total_search_duration_ms: 0, + es_search_duration_ms: 0, + schedule_delay_ms: 2169, + timed_out: false, + indexing_duration_ms: 0, + search_duration_ms: 0, + gap_duration_s: 0, + security_status: 'failed', + security_message: 'Rule failed to execute because rule ran after it was disabled.', + }, + { + execution_uuid: '0fde9271-05d0-4bfb-8ff8-815756d28350', + timestamp: '2022-04-28T21:19:04.973Z', + duration_ms: 1446, + status: 'success', + message: + "rule executed: siem.queryRule:a6e61cf0-c737-11ec-9e32-e14913ffdd2d: 'Click here for hot fresh alerts!'", + num_active_alerts: 0, + num_new_alerts: 0, + num_recovered_alerts: 0, + num_triggered_actions: 0, + num_succeeded_actions: 0, + num_errored_actions: 0, + total_search_duration_ms: 0, + es_search_duration_ms: 0, + schedule_delay_ms: 2089, + timed_out: false, + indexing_duration_ms: 0, + search_duration_ms: 2, + gap_duration_s: 0, + security_status: 'succeeded', + security_message: 'succeeded', + }, + { + execution_uuid: '5daaa259-ded8-4a52-853e-1e7652d325d5', + timestamp: '2022-04-28T21:19:01.976Z', + duration_ms: 1395, + status: 'success', + message: + "rule executed: siem.queryRule:a6e61cf0-c737-11ec-9e32-e14913ffdd2d: 'Click here for hot fresh alerts!'", + num_active_alerts: 0, + num_new_alerts: 0, + num_recovered_alerts: 0, + num_triggered_actions: 0, + num_succeeded_actions: 0, + num_errored_actions: 0, + total_search_duration_ms: 0, + es_search_duration_ms: 1, + schedule_delay_ms: 2637, + timed_out: false, + indexing_duration_ms: 0, + search_duration_ms: 3, + gap_duration_s: 0, + security_status: 'succeeded', + security_message: 'succeeded', + }, + { + execution_uuid: 'c7223e1c-4264-4a27-8697-0d720243fafc', + timestamp: '2022-04-28T21:18:58.431Z', + duration_ms: 1815, + status: 'success', + message: + "rule executed: siem.queryRule:a6e61cf0-c737-11ec-9e32-e14913ffdd2d: 'Click here for hot fresh alerts!'", + num_active_alerts: 0, + num_new_alerts: 0, + num_recovered_alerts: 0, + num_triggered_actions: 0, + num_succeeded_actions: 0, + num_errored_actions: 0, + total_search_duration_ms: 0, + es_search_duration_ms: 1, + schedule_delay_ms: -255429, + timed_out: false, + indexing_duration_ms: 0, + search_duration_ms: 3, + gap_duration_s: 0, + security_status: 'succeeded', + security_message: 'succeeded', + }, + { + execution_uuid: '1f6ba0c1-cc36-4f45-b919-7790b8a8d670', + timestamp: '2022-04-28T21:18:13.954Z', + duration_ms: 2055, + status: 'success', + message: + "rule executed: siem.queryRule:a6e61cf0-c737-11ec-9e32-e14913ffdd2d: 'Click here for hot fresh alerts!'", + num_active_alerts: 0, + num_new_alerts: 0, + num_recovered_alerts: 0, + num_triggered_actions: 0, + num_succeeded_actions: 0, + num_errored_actions: 0, + total_search_duration_ms: 0, + es_search_duration_ms: 0, + schedule_delay_ms: 2027, + timed_out: false, + indexing_duration_ms: 0, + search_duration_ms: 0, + gap_duration_s: 0, + security_status: 'partial failure', + security_message: + 'Check privileges failed to execute ResponseError: index_not_found_exception: [index_not_found_exception] Reason: no such index [yup] name: "Click here for hot fresh alerts!" id: "a6e61cf0-c737-11ec-9e32-e14913ffdd2d" rule id: "34946b12-88d1-49ef-82b7-9cad45972030" execution id: "1f6ba0c1-cc36-4f45-b919-7790b8a8d670" space ID: "default"', + }, + { + execution_uuid: 'b0f65d64-b229-432b-9d39-f4385a7f9368', + timestamp: '2022-04-28T21:15:43.086Z', + duration_ms: 1205, + status: 'success', + message: + "rule executed: siem.queryRule:a6e61cf0-c737-11ec-9e32-e14913ffdd2d: 'Click here for hot fresh alerts!'", + num_active_alerts: 0, + num_new_alerts: 0, + num_recovered_alerts: 0, + num_triggered_actions: 0, + num_succeeded_actions: 0, + num_errored_actions: 0, + total_search_duration_ms: 0, + es_search_duration_ms: 672, + schedule_delay_ms: 3086, + timed_out: false, + indexing_duration_ms: 140, + search_duration_ms: 684, + gap_duration_s: 0, + security_status: 'succeeded', + security_message: 'succeeded', + }, + { + execution_uuid: '7bfd25b9-c0d8-44b1-982c-485169466a8e', + timestamp: '2022-04-28T21:10:40.135Z', + duration_ms: 6321, + status: 'success', + message: + "rule executed: siem.queryRule:a6e61cf0-c737-11ec-9e32-e14913ffdd2d: 'Click here for hot fresh alerts!'", + num_active_alerts: 0, + num_new_alerts: 0, + num_recovered_alerts: 0, + num_triggered_actions: 0, + num_succeeded_actions: 0, + num_errored_actions: 0, + total_search_duration_ms: 0, + es_search_duration_ms: 930, + schedule_delay_ms: 1222, + timed_out: false, + indexing_duration_ms: 2103, + search_duration_ms: 946, + gap_duration_s: 0, + security_status: 'succeeded', + security_message: 'succeeded', + }, + ], + total: 7, +}; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_pre_packaged_rules.test.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_pre_packaged_rules.test.tsx index 6596cefef4f08..dfeaca617ed24 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_pre_packaged_rules.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_pre_packaged_rules.test.tsx @@ -18,6 +18,7 @@ jest.mock('../../../../common/lib/kibana', () => ({ addError: jest.fn(), addSuccess: jest.fn(), addWarning: jest.fn(), + remove: jest.fn(), }), })); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_execution_events.test.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_execution_events.test.tsx index 2a4efb7f69491..5fba7dd7a2ed2 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_execution_events.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_execution_events.test.tsx @@ -51,7 +51,7 @@ describe('useRuleExecutionEvents', () => { start: 'now-30', end: 'now', queryText: '', - statusFilters: '', + statusFilters: [], }), { wrapper: createReactQueryWrapper(), @@ -92,7 +92,7 @@ describe('useRuleExecutionEvents', () => { duration_ms: 3866, es_search_duration_ms: 1236, execution_uuid: '88d15095-7937-462c-8f21-9763e1387cad', - gap_duration_ms: 0, + gap_duration_s: 0, indexing_duration_ms: 95, message: "rule executed: siem.queryRule:fb1fc150-a292-11ec-a2cf-c1b28b0392b0: 'Lots of Execution Events'", diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_execution_events.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_execution_events.tsx index f2e72858cf392..e18d1f6c2ce5c 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_execution_events.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_execution_events.tsx @@ -5,22 +5,27 @@ * 2.0. */ +import { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { useQuery } from 'react-query'; +import { + AggregateRuleExecutionEvent, + RuleExecutionStatus, +} from '../../../../../common/detection_engine/schemas/common'; import { GetAggregateRuleExecutionEventsResponse } from '../../../../../common/detection_engine/schemas/response'; import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; import { fetchRuleExecutionEvents } from './api'; import * as i18n from './translations'; -interface UseRuleExecutionEventsArgs { +export interface UseRuleExecutionEventsArgs { ruleId: string; start: string; end: string; queryText?: string; - statusFilters?: string; + statusFilters?: RuleExecutionStatus[]; page?: number; perPage?: number; - sortField?: string; - sortOrder?: string; + sortField?: keyof AggregateRuleExecutionEvent; + sortOrder?: SortOrder; } export const useRuleExecutionEvents = ({ @@ -66,6 +71,7 @@ export const useRuleExecutionEvents = ({ }); }, { + keepPreviousData: true, onError: (e) => { addError(e, { title: i18n.RULE_EXECUTION_EVENTS_FETCH_FAILURE }); }, 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 a783ac7e1e260..1f066751c2b92 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 @@ -98,6 +98,7 @@ jest.mock('../../../common/lib/kibana', () => { addError: jest.fn(), addSuccess: jest.fn(), addWarning: jest.fn(), + remove: jest.fn(), }), }; }); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/__mocks__/rule_details_context.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/__mocks__/rule_details_context.tsx new file mode 100644 index 0000000000000..257dc8ec512a8 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/__mocks__/rule_details_context.tsx @@ -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 { RuleDetailsContextType } from '../rule_details_context'; +import React from 'react'; + +export const useRuleDetailsContextMock = { + create: (): jest.Mocked => ({ + executionLogs: { + state: { + superDatePicker: { + recentlyUsedRanges: [], + refreshInterval: 1000, + isPaused: true, + start: 'now-24h', + end: 'now', + }, + queryText: '', + statusFilters: [], + showMetricColumns: true, + pagination: { + pageIndex: 1, + pageSize: 5, + }, + sort: { + sortField: 'timestamp', + sortDirection: 'desc', + }, + }, + actions: { + setEnd: jest.fn(), + setIsPaused: jest.fn(), + setPageIndex: jest.fn(), + setPageSize: jest.fn(), + setQueryText: jest.fn(), + setRecentlyUsedRanges: jest.fn(), + setRefreshInterval: jest.fn(), + setShowMetricColumns: jest.fn(), + setSortDirection: jest.fn(), + setSortField: jest.fn(), + setStart: jest.fn(), + setStatusFilters: jest.fn(), + }, + }, + }), +}; + +export const useRuleDetailsContext = jest + .fn, []>() + .mockImplementation(useRuleDetailsContextMock.create); + +export const useRuleDetailsContextOptional = jest + .fn, []>() + .mockImplementation(useRuleDetailsContextMock.create); + +export const RulesTableContextProvider = jest + .fn() + .mockImplementation(({ children }: { children: React.ReactNode }) => <>{children}); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/__snapshots__/execution_log_table.test.tsx.snap b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/__snapshots__/execution_log_table.test.tsx.snap deleted file mode 100644 index f93cce70172dc..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/__snapshots__/execution_log_table.test.tsx.snap +++ /dev/null @@ -1,140 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ExecutionLogTable snapshots renders correctly against snapshot 1`] = ` - - - - - - - - - - - - - - - Showing 0 rule executions - - - - - - - - - - - , - "render": [Function], - "sortable": false, - "truncateText": false, - "width": "10%", - }, - Object { - "field": "timestamp", - "name": , - "render": [Function], - "sortable": true, - "truncateText": false, - "width": "15%", - }, - Object { - "field": "duration_ms", - "name": , - "render": [Function], - "sortable": true, - "truncateText": false, - "width": "10%", - }, - Object { - "field": "security_message", - "name": , - "render": [Function], - "sortable": false, - "truncateText": false, - "width": "35%", - }, - ] - } - items={Array []} - noItemsMessage={ - - } - onChange={[Function]} - pagination={ - Object { - "pageIndex": 0, - "pageSize": 5, - "pageSizeOptions": Array [ - 5, - 10, - 25, - 50, - ], - "totalItemCount": 0, - } - } - responsive={true} - sorting={ - Object { - "sort": Object { - "direction": "desc", - "field": "timestamp", - }, - } - } - tableLayout="fixed" - /> - -`; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/__snapshots__/rule_duration_format.test.tsx.snap b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/__snapshots__/rule_duration_format.test.tsx.snap deleted file mode 100644 index ddb59cf52a890..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/__snapshots__/rule_duration_format.test.tsx.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`RuleDurationFormat snapshots renders correctly against snapshot 1`] = ` - - 00:00:00:000 - -`; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_columns.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_columns.tsx index c48f5d6971d23..98569b701d93c 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_columns.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_columns.tsx @@ -6,9 +6,9 @@ */ import { EuiBasicTableColumn, EuiHealth, EuiLink, EuiText } from '@elastic/eui'; -import { capitalize } from 'lodash'; -import { FormattedMessage } from '@kbn/i18n-react'; import { DocLinksStart } from '@kbn/core/public'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { capitalize } from 'lodash'; import React from 'react'; import { AggregateRuleExecutionEvent, @@ -19,9 +19,9 @@ import { FormattedDate } from '../../../../../../common/components/formatted_dat import { getStatusColor } from '../../../../../components/rules/rule_execution_status/utils'; import { PopoverTooltip } from '../../all/popover_tooltip'; import { TableHeaderTooltipCell } from '../../all/table_header_tooltip_cell'; +import { RuleDurationFormat } from './rule_duration_format'; import * as i18n from './translations'; -import { RuleDurationFormat } from './rule_duration_format'; export const EXECUTION_LOG_COLUMNS: Array> = [ { @@ -32,7 +32,7 @@ export const EXECUTION_LOG_COLUMNS: Array ), field: 'security_status', - render: (value: RuleExecutionStatus, data) => + render: (value: RuleExecutionStatus) => value ? ( {capitalize(value)} ) : ( @@ -89,7 +89,7 @@ export const GET_EXECUTION_LOG_METRICS_COLUMNS = ( docLinks: DocLinksStart ): Array> => [ { - field: 'gap_duration_ms', + field: 'gap_duration_s', name: ( ), render: (value: number) => ( - <>{value ? : getEmptyValue()} + <>{value ? : getEmptyValue()} ), sortable: true, truncateText: false, diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_search_bar.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_search_bar.tsx index b8c2d82ab324e..74804b7c6b557 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_search_bar.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_search_bar.tsx @@ -56,20 +56,23 @@ const statusFilters = statuses.map((status) => ({ interface ExecutionLogTableSearchProps { onlyShowFilters: true; onSearch: (queryText: string) => void; - onStatusFilterChange: (statusFilters: string[]) => void; + onStatusFilterChange: (statusFilters: RuleExecutionStatus[]) => void; + defaultSelectedStatusFilters?: RuleExecutionStatus[]; } /** * SearchBar + StatusFilters component to be used with the Rule Execution Log table - * NOTE: This component is currently not shown in the UI as custom search queries + * NOTE: The SearchBar component is currently not shown in the UI as custom search queries * are not yet fully supported by the Rule Execution Log aggregation API since * certain queries could result in missing data or inclusion of wrong events. * Please see this comment for history/details: https://github.com/elastic/kibana/pull/127339/files#r825240516 */ export const ExecutionLogSearchBar = React.memo( - ({ onlyShowFilters, onSearch, onStatusFilterChange }) => { + ({ onlyShowFilters, onSearch, onStatusFilterChange, defaultSelectedStatusFilters = [] }) => { const [isPopoverOpen, setIsPopoverOpen] = useState(false); - const [selectedFilters, setSelectedFilters] = useState([]); + const [selectedFilters, setSelectedFilters] = useState( + defaultSelectedStatusFilters + ); const onSearchCallback = useCallback( (queryText: string) => { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_table.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_table.test.tsx index 81619d01934ba..608853f004eb9 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_table.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_table.test.tsx @@ -5,83 +5,21 @@ * 2.0. */ +import { ruleExecutionEventsMock } from '../../../../../containers/detection_engine/rules/mock'; +import { render, screen } from '@testing-library/react'; +import { TestProviders } from '../../../../../../common/mock'; +import { useRuleDetailsContextMock } from '../__mocks__/rule_details_context'; import React from 'react'; -import { shallow } from 'enzyme'; import { noop } from 'lodash/fp'; +import { useRuleExecutionEvents } from '../../../../../containers/detection_engine/rules'; import { useSourcererDataView } from '../../../../../../common/containers/sourcerer'; +import { useRuleDetailsContext } from '../rule_details_context'; import { ExecutionLogTable } from './execution_log_table'; -jest.mock('../../../../../containers/detection_engine/rules', () => { - const original = jest.requireActual('../../../../../containers/detection_engine/rules'); - return { - ...original, - useRuleExecutionEvents: jest.fn().mockReturnValue({ - loading: true, - setQuery: () => undefined, - data: null, - response: '', - request: '', - refetch: null, - }), - }; -}); - jest.mock('../../../../../../common/containers/sourcerer'); - -jest.mock('../../../../../../common/hooks/use_app_toasts', () => { - const original = jest.requireActual('../../../../../../common/hooks/use_app_toasts'); - - return { - ...original, - useAppToasts: () => ({ - addSuccess: jest.fn(), - addError: jest.fn(), - }), - }; -}); - -jest.mock('react-redux', () => { - const original = jest.requireActual('react-redux'); - return { - ...original, - useDispatch: () => jest.fn(), - useSelector: () => jest.fn(), - }; -}); - -jest.mock('../../../../../../common/lib/kibana', () => { - const original = jest.requireActual('../../../../../../common/lib/kibana'); - - return { - ...original, - useUiSetting$: jest.fn().mockReturnValue([]), - useKibana: () => ({ - services: { - data: { - query: { - filterManager: jest.fn().mockReturnValue({}), - }, - }, - docLinks: { - links: { - siem: { - troubleshootGaps: 'link', - }, - }, - }, - storage: { - get: jest.fn(), - set: jest.fn(), - }, - timelines: { - getLastUpdated: jest.fn(), - getFieldBrowser: jest.fn(), - }, - }, - }), - }; -}); +jest.mock('../../../../../containers/detection_engine/rules'); +jest.mock('../rule_details_context'); const mockUseSourcererDataView = useSourcererDataView as jest.Mock; mockUseSourcererDataView.mockReturnValue({ @@ -92,13 +30,20 @@ mockUseSourcererDataView.mockReturnValue({ loading: false, }); -// TODO: Replace snapshot test with base test cases +const mockUseRuleExecutionEvents = useRuleExecutionEvents as jest.Mock; +mockUseRuleExecutionEvents.mockReturnValue({ + data: ruleExecutionEventsMock, + isLoading: false, + isFetching: false, +}); describe('ExecutionLogTable', () => { - describe('snapshots', () => { - test('renders correctly against snapshot', () => { - const wrapper = shallow(); - expect(wrapper).toMatchSnapshot(); + test('Shows total events returned', () => { + const ruleDetailsContext = useRuleDetailsContextMock.create(); + (useRuleDetailsContext as jest.Mock).mockReturnValue(ruleDetailsContext); + render(, { + wrapper: TestProviders, }); + expect(screen.getByTestId('executionsShowing')).toHaveTextContent('Showing 7 rule executions'); }); }); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_table.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_table.tsx index 31fc446fa2bb7..b471493a9ecd2 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_table.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/execution_log_table.tsx @@ -5,10 +5,10 @@ * 2.0. */ -import { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { DurationRange } from '@elastic/eui/src/components/date_picker/types'; +import { useDispatch } from 'react-redux'; import styled from 'styled-components'; -import React, { useCallback, useMemo, useState } from 'react'; +import moment from 'moment'; +import React, { useCallback, useMemo, useRef } from 'react'; import { EuiTextColor, EuiFlexGroup, @@ -20,11 +20,17 @@ import { EuiSpacer, EuiSwitch, EuiBasicTable, + EuiButton, } from '@elastic/eui'; -import { buildFilter, FILTERS } from '@kbn/es-query'; +import { buildFilter, Filter, FILTERS, Query } from '@kbn/es-query'; import { MAX_EXECUTION_EVENTS_DISPLAYED } from '@kbn/securitysolution-rules'; +import { mountReactNode } from '@kbn/core/public/utils'; +import { RuleDetailTabs } from '..'; import { RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_METRIC_COLUMNS_STORAGE_KEY } from '../../../../../../../common/constants'; -import { AggregateRuleExecutionEvent } from '../../../../../../../common/detection_engine/schemas/common'; +import { + AggregateRuleExecutionEvent, + RuleExecutionStatus, +} from '../../../../../../../common/detection_engine/schemas/common'; import { UtilityBar, @@ -34,9 +40,23 @@ import { } from '../../../../../../common/components/utility_bar'; import { useSourcererDataView } from '../../../../../../common/containers/sourcerer'; import { useAppToasts } from '../../../../../../common/hooks/use_app_toasts'; +import { useDeepEqualSelector } from '../../../../../../common/hooks/use_selector'; import { useKibana } from '../../../../../../common/lib/kibana'; +import { inputsSelectors } from '../../../../../../common/store'; +import { + setAbsoluteRangeDatePicker, + setFilterQuery, + setRelativeRangeDatePicker, +} from '../../../../../../common/store/inputs/actions'; +import { + AbsoluteTimeRange, + isAbsoluteTimeRange, + isRelativeTimeRange, + RelativeTimeRange, +} from '../../../../../../common/store/inputs/model'; import { SourcererScopeName } from '../../../../../../common/store/sourcerer/model'; import { useRuleExecutionEvents } from '../../../../../containers/detection_engine/rules'; +import { useRuleDetailsContext } from '../rule_details_context'; import * as i18n from './translations'; import { EXECUTION_LOG_COLUMNS, GET_EXECUTION_LOG_METRICS_COLUMNS } from './execution_log_columns'; import { ExecutionLogSearchBar } from './execution_log_search_bar'; @@ -56,6 +76,12 @@ interface ExecutionLogTableProps { selectAlertsTab: () => void; } +interface CachedGlobalQueryState { + filters: Filter[]; + query: Query; + timerange: AbsoluteTimeRange | RelativeTimeRange; +} + const ExecutionLogTableComponent: React.FC = ({ ruleId, selectAlertsTab, @@ -68,28 +94,84 @@ const ExecutionLogTableComponent: React.FC = ({ storage, timelines, } = useKibana().services; - // Datepicker state - const [recentlyUsedRanges, setRecentlyUsedRanges] = useState([]); - const [refreshInterval, setRefreshInterval] = useState(1000); - const [isPaused, setIsPaused] = useState(true); - const [start, setStart] = useState('now-24h'); - const [end, setEnd] = useState('now'); - // Searchbar/Filter/Settings state - const [queryText, setQueryText] = useState(''); - const [statusFilters, setStatusFilters] = useState(undefined); - const [showMetricColumns, setShowMetricColumns] = useState( - storage.get(RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_METRIC_COLUMNS_STORAGE_KEY) ?? false - ); + const { + [RuleDetailTabs.executionLogs]: { + state: { + superDatePicker: { recentlyUsedRanges, refreshInterval, isPaused, start, end }, + queryText, + statusFilters, + showMetricColumns, + pagination: { pageIndex, pageSize }, + sort: { sortField, sortDirection }, + }, + actions: { + setEnd, + setIsPaused, + setPageIndex, + setPageSize, + setQueryText, + setRecentlyUsedRanges, + setRefreshInterval, + setShowMetricColumns, + setSortDirection, + setSortField, + setStart, + setStatusFilters, + }, + }, + } = useRuleDetailsContext(); - // Pagination state - const [pageIndex, setPageIndex] = useState(1); - const [pageSize, setPageSize] = useState(5); - const [sortField, setSortField] = useState('timestamp'); - const [sortDirection, setSortDirection] = useState('desc'); // Index for `add filter` action and toasts for errors const { indexPattern } = useSourcererDataView(SourcererScopeName.detections); - const { addError, addSuccess } = useAppToasts(); + const { addError, addSuccess, remove } = useAppToasts(); + + // QueryString, Filters, and TimeRange state + const dispatch = useDispatch(); + const getGlobalFiltersQuerySelector = useMemo( + () => inputsSelectors.globalFiltersQuerySelector(), + [] + ); + const getGlobalQuerySelector = useMemo(() => inputsSelectors.globalQuerySelector(), []); + const timerange = useDeepEqualSelector(inputsSelectors.globalTimeRangeSelector); + const query = useDeepEqualSelector(getGlobalQuerySelector); + const filters = useDeepEqualSelector(getGlobalFiltersQuerySelector); + const cachedGlobalQueryState = useRef({ filters, query, timerange }); + const successToastId = useRef(''); + + const resetGlobalQueryState = useCallback(() => { + if (isAbsoluteTimeRange(cachedGlobalQueryState.current.timerange)) { + dispatch( + setAbsoluteRangeDatePicker({ + id: 'global', + from: cachedGlobalQueryState.current.timerange.from, + to: cachedGlobalQueryState.current.timerange.to, + }) + ); + } else if (isRelativeTimeRange(cachedGlobalQueryState.current.timerange)) { + dispatch( + setRelativeRangeDatePicker({ + id: 'global', + from: cachedGlobalQueryState.current.timerange.from, + fromStr: cachedGlobalQueryState.current.timerange.fromStr, + to: cachedGlobalQueryState.current.timerange.to, + toStr: cachedGlobalQueryState.current.timerange.toStr, + }) + ); + } + + dispatch( + setFilterQuery({ + id: 'global', + query: cachedGlobalQueryState.current.query.query, + language: cachedGlobalQueryState.current.query.language, + }) + ); + // Using filterManager directly as dispatch(setSearchBarFilter()) was not replacing filters + filterManager.removeAll(); + filterManager.addFilters(cachedGlobalQueryState.current.filters); + remove(successToastId.current); + }, [dispatch, filterManager, remove]); // Table data state const { @@ -118,15 +200,18 @@ const ExecutionLogTableComponent: React.FC = ({ }, [indexPattern]); // Callbacks - const onTableChangeCallback = useCallback(({ page = {}, sort = {} }) => { - const { index, size } = page; - const { field, direction } = sort; + const onTableChangeCallback = useCallback( + ({ page = {}, sort = {} }) => { + const { index, size } = page; + const { field, direction } = sort; - setPageIndex(index + 1); - setPageSize(size); - setSortField(field); - setSortDirection(direction); - }, []); + setPageIndex(index + 1); + setPageSize(size); + setSortField(field); + setSortDirection(direction); + }, + [setPageIndex, setPageSize, setSortDirection, setSortField] + ); const onTimeChangeCallback = useCallback( (props: OnTimeChangeProps) => { @@ -141,14 +226,17 @@ const ExecutionLogTableComponent: React.FC = ({ recentlyUsedRange.length > 10 ? recentlyUsedRange.slice(0, 9) : recentlyUsedRange ); }, - [recentlyUsedRanges] + [recentlyUsedRanges, setEnd, setRecentlyUsedRanges, setStart] ); - const onRefreshChangeCallback = useCallback((props: OnRefreshChangeProps) => { - setIsPaused(props.isPaused); - // Only support auto-refresh >= 1minute -- no current ability to limit within component - setRefreshInterval(props.refreshInterval > 60000 ? props.refreshInterval : 60000); - }, []); + const onRefreshChangeCallback = useCallback( + (props: OnRefreshChangeProps) => { + setIsPaused(props.isPaused); + // Only support auto-refresh >= 1minute -- no current ability to limit within component + setRefreshInterval(props.refreshInterval > 60000 ? props.refreshInterval : 60000); + }, + [setIsPaused, setRefreshInterval] + ); const onRefreshCallback = useCallback( (props: OnRefreshProps) => { @@ -157,19 +245,26 @@ const ExecutionLogTableComponent: React.FC = ({ [refetch] ); - const onSearchCallback = useCallback((updatedQueryText: string) => { - setQueryText(updatedQueryText); - }, []); + const onSearchCallback = useCallback( + (updatedQueryText: string) => { + setQueryText(updatedQueryText); + }, + [setQueryText] + ); - const onStatusFilterChangeCallback = useCallback((updatedStatusFilters: string[]) => { - setStatusFilters( - updatedStatusFilters.length ? updatedStatusFilters.sort().join(',') : undefined - ); - }, []); + const onStatusFilterChangeCallback = useCallback( + (updatedStatusFilters: RuleExecutionStatus[]) => { + setStatusFilters(updatedStatusFilters); + }, + [setStatusFilters] + ); const onFilterByExecutionIdCallback = useCallback( (executionId: string, executionStart: string) => { if (uuidDataViewField != null) { + // Update cached global query state with current state as a rollback point + cachedGlobalQueryState.current = { filters, query, timerange }; + // Create filter & daterange constraints const filter = buildFilter( indexPattern, uuidDataViewField, @@ -179,20 +274,55 @@ const ExecutionLogTableComponent: React.FC = ({ executionId, null ); + dispatch( + setAbsoluteRangeDatePicker({ + id: 'global', + from: moment(executionStart).subtract(1, 'days').toISOString(), + to: moment(executionStart).add(1, 'days').toISOString(), + }) + ); filterManager.removeAll(); filterManager.addFilters(filter); + dispatch(setFilterQuery({ id: 'global', query: '', language: 'kuery' })); selectAlertsTab(); - addSuccess({ - title: i18n.ACTIONS_SEARCH_FILTERS_HAVE_BEEN_UPDATED_TITLE, - text: i18n.ACTIONS_SEARCH_FILTERS_HAVE_BEEN_UPDATED_DESCRIPTION, - }); + successToastId.current = addSuccess( + { + title: i18n.ACTIONS_SEARCH_FILTERS_HAVE_BEEN_UPDATED_TITLE, + text: mountReactNode( + <> +

{i18n.ACTIONS_SEARCH_FILTERS_HAVE_BEEN_UPDATED_DESCRIPTION}

+ + + + {i18n.ACTIONS_SEARCH_FILTERS_HAVE_BEEN_UPDATED_RESTORE_BUTTON} + + + + + ), + }, + // Essentially keep toast around till user dismisses via 'x' + { toastLifeTimeMs: 10 * 60 * 1000 } + ).id; } else { addError(i18n.ACTIONS_FIELD_NOT_FOUND_ERROR, { title: i18n.ACTIONS_FIELD_NOT_FOUND_ERROR_TITLE, }); } }, - [addError, addSuccess, filterManager, indexPattern, selectAlertsTab, uuidDataViewField] + [ + addError, + addSuccess, + dispatch, + filterManager, + filters, + indexPattern, + query, + resetGlobalQueryState, + selectAlertsTab, + timerange, + uuidDataViewField, + ] ); const onShowMetricColumnsCallback = useCallback( @@ -200,7 +330,7 @@ const ExecutionLogTableComponent: React.FC = ({ storage.set(RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_METRIC_COLUMNS_STORAGE_KEY, showMetrics); setShowMetricColumns(showMetrics); }, - [storage] + [setShowMetricColumns, storage] ); // Memoized state @@ -223,8 +353,6 @@ const ExecutionLogTableComponent: React.FC = ({ }; }, [sortDirection, sortField]); - // TODO: Re-add actions once alert count is displayed in table and UX is finalized - // @ts-expect-error unused constant const actions = useMemo( () => [ { @@ -258,9 +386,9 @@ const ExecutionLogTableComponent: React.FC = ({ const executionLogColumns = useMemo( () => showMetricColumns - ? [...EXECUTION_LOG_COLUMNS, ...GET_EXECUTION_LOG_METRICS_COLUMNS(docLinks)] - : [...EXECUTION_LOG_COLUMNS], - [docLinks, showMetricColumns] + ? [...EXECUTION_LOG_COLUMNS, ...GET_EXECUTION_LOG_METRICS_COLUMNS(docLinks), ...actions] + : [...EXECUTION_LOG_COLUMNS, ...actions], + [actions, docLinks, showMetricColumns] ); return ( @@ -271,6 +399,7 @@ const ExecutionLogTableComponent: React.FC = ({ onSearch={onSearchCallback} onStatusFilterChange={onStatusFilterChangeCallback} onlyShowFilters={true} + defaultSelectedStatusFilters={statusFilters} />
@@ -315,7 +444,7 @@ const ExecutionLogTableComponent: React.FC = ({ - + {timelines.getLastUpdated({ showUpdating: isLoading || isFetching, updatedAt: dataUpdatedAt, diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/rule_duration_format.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/rule_duration_format.test.tsx index 44f765f934ae8..30e7d6e8f0a2e 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/rule_duration_format.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/rule_duration_format.test.tsx @@ -5,17 +5,82 @@ * 2.0. */ -import { shallow } from 'enzyme'; +import { render } from '@testing-library/react'; import React from 'react'; -import { RuleDurationFormat } from './rule_duration_format'; - -// TODO: Replace snapshot test with base test cases +import { getFormattedDuration, RuleDurationFormat } from './rule_duration_format'; describe('RuleDurationFormat', () => { - describe('snapshots', () => { - test('renders correctly against snapshot', () => { - const wrapper = shallow(); - expect(wrapper).toMatchSnapshot(); + describe('getFormattedDuration', () => { + test('if input value is 0, formatted response is also 0', () => { + const formattedDuration = getFormattedDuration(0); + expect(formattedDuration).toEqual('00:00:00:000'); + }); + + test('if input value only contains ms, formatted response also only contains ms (SSS)', () => { + const formattedDuration = getFormattedDuration(999); + expect(formattedDuration).toEqual('00:00:00:999'); + }); + + test('for milliseconds (SSS) to seconds (ss) overflow', () => { + const formattedDuration = getFormattedDuration(1000); + expect(formattedDuration).toEqual('00:00:01:000'); + }); + + test('for seconds (ss) to minutes (mm) overflow', () => { + const formattedDuration = getFormattedDuration(60000 + 1); + expect(formattedDuration).toEqual('00:01:00:001'); + }); + + test('for minutes (mm) to hours (hh) overflow', () => { + const formattedDuration = getFormattedDuration(60000 * 60 + 1); + expect(formattedDuration).toEqual('01:00:00:001'); + }); + + test('for hours (hh) to days (ddd) overflow', () => { + const formattedDuration = getFormattedDuration(60000 * 60 * 24 + 1); + expect(formattedDuration).toEqual('001:00:00:00:001'); + }); + + test('for overflow with all units up to hours (hh)', () => { + const formattedDuration = getFormattedDuration(25033167); + expect(formattedDuration).toEqual('06:57:13:167'); + }); + + test('for overflow with all units up to hours (ddd)', () => { + const formattedDuration = getFormattedDuration(2503316723); + expect(formattedDuration).toEqual('028:23:21:56:723'); + }); + + test('for overflow greater than a year', () => { + const formattedDuration = getFormattedDuration((60000 * 60 * 24 + 1) * 365); + expect(formattedDuration).toEqual('> 1 Year'); + }); + + test('for max overflow', () => { + const formattedDuration = getFormattedDuration(Number.MAX_SAFE_INTEGER); + expect(formattedDuration).toEqual('> 1 Year'); + }); + }); + + describe('RuleDurationFormatComponent', () => { + test('renders correctly with duration and no additional props', () => { + const { getByTestId } = render(); + expect(getByTestId('rule-duration-format-value')).toHaveTextContent('00:00:01:000'); + }); + + test('renders correctly with duration and isSeconds=true', () => { + const { getByTestId } = render(); + expect(getByTestId('rule-duration-format-value')).toHaveTextContent('00:00:01:000'); + }); + + test('renders correctly with allowZero=true', () => { + const { getByTestId } = render(); + expect(getByTestId('rule-duration-format-value')).toHaveTextContent('N/A'); + }); + + test('renders correctly with max overflow', () => { + const { getByTestId } = render(); + expect(getByTestId('rule-duration-format-value')).toHaveTextContent('> 1 Year'); }); }); }); diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/rule_duration_format.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/rule_duration_format.tsx index cdbc19ce16c3b..c9f8e1d2734d8 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/rule_duration_format.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/rule_duration_format.tsx @@ -5,48 +5,59 @@ * 2.0. */ -import numeral from '@elastic/numeral'; import moment from 'moment'; import React, { useMemo } from 'react'; +import * as i18n from './translations'; + interface Props { duration: number; - isMillis?: boolean; + isSeconds?: boolean; allowZero?: boolean; } -export function getFormattedDuration(value: number) { +export const getFormattedDuration = (value: number) => { if (!value) { return '00:00:00:000'; } const duration = moment.duration(value); - const hours = Math.floor(duration.asHours()).toString().padStart(2, '0'); - const minutes = Math.floor(duration.asMinutes()).toString().padStart(2, '0'); + const days = Math.floor(duration.asDays()).toString().padStart(3, '0'); + const hours = Math.floor(duration.asHours() % 24) + .toString() + .padStart(2, '0'); + const minutes = Math.floor(duration.asMinutes() % 60) + .toString() + .padStart(2, '0'); const seconds = duration.seconds().toString().padStart(2, '0'); const ms = duration.milliseconds().toString().padStart(3, '0'); - return `${hours}:${minutes}:${seconds}:${ms}`; -} -export function getFormattedMilliseconds(value: number) { - const formatted = numeral(value).format('0,0'); - return `${formatted} ms`; -} + if (Math.floor(duration.asDays()) > 0) { + if (Math.floor(duration.asDays()) >= 365) { + return i18n.GREATER_THAN_YEAR; + } else { + return `${days}:${hours}:${minutes}:${seconds}:${ms}`; + } + } else { + return `${hours}:${minutes}:${seconds}:${ms}`; + } +}; /** - * Formats duration as (hh:mm:ss:SSS) - * @param props duration default as nanos, set isMillis:true to pass in ms + * Formats duration as (hh:mm:ss:SSS) by default, overflowing to include days + * as (ddd:hh:mm:ss:SSS) if necessary, and then finally to `> 1 Year` + * @param props duration as millis, set isSeconds:true to pass in seconds * @constructor */ const RuleDurationFormatComponent = (props: Props) => { - const { duration, isMillis = false, allowZero = true } = props; + const { duration, isSeconds = false, allowZero = true } = props; const formattedDuration = useMemo(() => { // Durations can be buggy and return negative if (allowZero && duration >= 0) { - return getFormattedDuration(isMillis ? duration * 1000 : duration); + return getFormattedDuration(isSeconds ? duration * 1000 : duration); } - return 'N/A'; - }, [allowZero, duration, isMillis]); + return i18n.DURATION_NOT_AVAILABLE; + }, [allowZero, duration, isSeconds]); return {formattedDuration}; }; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/translations.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/translations.ts index d5d8d56664907..b161ae3662e0e 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/execution_log_table/translations.ts @@ -181,6 +181,13 @@ export const ACTIONS_SEARCH_FILTERS_HAVE_BEEN_UPDATED_DESCRIPTION = i18n.transla } ); +export const ACTIONS_SEARCH_FILTERS_HAVE_BEEN_UPDATED_RESTORE_BUTTON = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.ruleExecutionLog.actionSearchFiltersUpdatedRestoreButtonTitle', + { + defaultMessage: 'Restore previous filters', + } +); + export const ACTIONS_FIELD_NOT_FOUND_ERROR_TITLE = i18n.translate( 'xpack.securitySolution.detectionEngine.ruleDetails.ruleExecutionLog.actionFieldNotFoundErrorTitle', { @@ -194,3 +201,17 @@ export const ACTIONS_FIELD_NOT_FOUND_ERROR = i18n.translate( defaultMessage: "Cannot find field 'kibana.alert.rule.execution.uuid' in alerts index.", } ); + +export const DURATION_NOT_AVAILABLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.ruleExecutionLog.durationNotAvailableDescription', + { + defaultMessage: 'N/A', + } +); + +export const GREATER_THAN_YEAR = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.ruleExecutionLog.durationGreaterThanYearDescription', + { + defaultMessage: '> 1 Year', + } +); 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 8550d03eca2aa..cc8872b901f44 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 @@ -108,6 +108,7 @@ import { import * as detectionI18n from '../../translations'; import * as ruleI18n from '../translations'; import { ExecutionLogTable } from './execution_log_table/execution_log_table'; +import { RuleDetailsContextProvider } from './rule_details_context'; import * as i18n from './translations'; import { NeedAdminForUpdateRulesCallOut } from '../../../../components/callouts/need_admin_for_update_callout'; import { MissingPrivilegesCallOut } from '../../../../components/callouts/missing_privileges_callout'; @@ -131,7 +132,14 @@ const StyledFullHeightContainer = styled.div` flex: 1 1 auto; `; -enum RuleDetailTabs { +/** + * Sets min-height on tab container to minimize page hop when switching to tabs with less content + */ +const StyledMinHeightTabContainer = styled.div` + min-height: 800px; +`; + +export enum RuleDetailTabs { alerts = 'alerts', executionLogs = 'executionLogs', exceptions = 'exceptions', @@ -639,181 +647,186 @@ const RuleDetailsPageComponent: React.FC = ({ indexPattern={indexPattern} /> - - - - - - - {ruleStatusI18n.STATUS} - {':'} - - {ruleStatusInfo} - - - } - title={title} - badgeOptions={badgeOptions} - > - - - - - - {i18n.ENABLE_RULE} + + + + + + + {ruleStatusI18n.STATUS} + {':'} + + {ruleStatusInfo} - - - - - - {editRule} - - - - - - - - {ruleError} - {getLegacyUrlConflictCallout} - - - - - - - - - - - {defineRuleData != null && ( - + } + title={title} + badgeOptions={badgeOptions} + > + + + + + - )} - + {i18n.ENABLE_RULE} + + - - - - {scheduleRuleData != null && ( - + + {editRule} + + - )} - + +
- - - - {tabs} - - - {ruleDetailTab === RuleDetailTabs.alerts && hasIndexRead && ( - <> - - - + {ruleError} + {getLegacyUrlConflictCallout} + + + + - - {updatedAt && - timelinesUi.getLastUpdated({ - updatedAt: updatedAt || Date.now(), - showUpdating, - })} + + + + + + {defineRuleData != null && ( + + )} + + + + + + {scheduleRuleData != null && ( + + )} + + + - - - - - - {ruleId != null && ( - + {tabs} + + + + {ruleDetailTab === RuleDetailTabs.alerts && hasIndexRead && ( + <> + + + + + + {updatedAt && + timelinesUi.getLastUpdated({ + updatedAt: updatedAt || Date.now(), + showUpdating, + })} + + + + + + + + {ruleId != null && ( + + )} + + )} + {ruleDetailTab === RuleDetailTabs.exceptions && ( + )} - - )} - {ruleDetailTab === RuleDetailTabs.exceptions && ( - - )} - {ruleDetailTab === RuleDetailTabs.executionLogs && ( - - )} - + {ruleDetailTab === RuleDetailTabs.executionLogs && ( + + )} + + + diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/rule_details_context.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/rule_details_context.tsx new file mode 100644 index 0000000000000..13b17d0493d43 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/rule_details_context.tsx @@ -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 { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { DurationRange } from '@elastic/eui/src/components/date_picker/types'; +import React, { createContext, useContext, useMemo, useState } from 'react'; +import { RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_METRIC_COLUMNS_STORAGE_KEY } from '../../../../../../common/constants'; +import { + AggregateRuleExecutionEvent, + RuleExecutionStatus, +} from '../../../../../../common/detection_engine/schemas/common'; +import { invariant } from '../../../../../../common/utils/invariant'; +import { useKibana } from '../../../../../common/lib/kibana'; +import { RuleDetailTabs } from '.'; + +export interface ExecutionLogTableState { + /** + * State of the SuperDatePicker component + */ + superDatePicker: { + /** + * DateRanges to display as recently used + */ + recentlyUsedRanges: DurationRange[]; + /** + * Interval to auto-refresh at + */ + refreshInterval: number; + /** + * State of auto-refresh + */ + isPaused: boolean; + /** + * Start datetime + */ + start: string; + /** + * End datetime + */ + end: string; + }; + /** + * SearchBar query + */ + queryText: string; + /** + * Selected Filters by Execution Status(es) + */ + statusFilters: RuleExecutionStatus[]; + /** + * Whether or not to show additional metric columnbs + */ + showMetricColumns: boolean; + /** + * Currently selected page and number of rows per page + */ + pagination: { + pageIndex: number; + pageSize: number; + }; + sort: { + sortField: keyof AggregateRuleExecutionEvent; + sortDirection: SortOrder; + }; +} + +// @ts-expect-error unused constant +const DEFAULT_STATE: ExecutionLogTableState = { + superDatePicker: { + recentlyUsedRanges: [], + refreshInterval: 1000, + isPaused: true, + start: 'now-24hr', + end: 'now', + }, + queryText: '', + statusFilters: [], + showMetricColumns: false, + pagination: { + pageIndex: 1, + pageSize: 5, + }, + sort: { + sortField: 'timestamp', + sortDirection: 'desc', + }, +}; + +export interface ExecutionLogTableActions { + setRecentlyUsedRanges: React.Dispatch>; + setRefreshInterval: React.Dispatch>; + setIsPaused: React.Dispatch>; + setStart: React.Dispatch>; + setEnd: React.Dispatch>; + setQueryText: React.Dispatch>; + setStatusFilters: React.Dispatch>; + setShowMetricColumns: React.Dispatch>; + setPageIndex: React.Dispatch>; + setPageSize: React.Dispatch>; + setSortField: React.Dispatch>; + setSortDirection: React.Dispatch>; +} + +export interface RuleDetailsContextType { + // TODO: Add section for RuleDetailTabs.exceptions and store query/pagination/etc. + // TODO: Let's discuss how to integration with ExceptionsViewerComponent state mgmt + [RuleDetailTabs.executionLogs]: { + state: ExecutionLogTableState; + actions: ExecutionLogTableActions; + }; +} + +const RuleDetailsContext = createContext(null); + +interface RuleDetailsContextProviderProps { + children: React.ReactNode; +} + +export const RuleDetailsContextProvider = ({ children }: RuleDetailsContextProviderProps) => { + const { storage } = useKibana().services; + + // Execution Log Table tab + // // SuperDatePicker State + const [recentlyUsedRanges, setRecentlyUsedRanges] = useState([]); + const [refreshInterval, setRefreshInterval] = useState(1000); + const [isPaused, setIsPaused] = useState(true); + const [start, setStart] = useState('now-24h'); + const [end, setEnd] = useState('now'); + // Searchbar/Filter/Settings state + const [queryText, setQueryText] = useState(''); + const [statusFilters, setStatusFilters] = useState([]); + const [showMetricColumns, setShowMetricColumns] = useState( + storage.get(RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_METRIC_COLUMNS_STORAGE_KEY) ?? false + ); + // Pagination state + const [pageIndex, setPageIndex] = useState(1); + const [pageSize, setPageSize] = useState(5); + const [sortField, setSortField] = useState('timestamp'); + const [sortDirection, setSortDirection] = useState('desc'); + // // End Execution Log Table tab + + const providerValue = useMemo( + () => ({ + [RuleDetailTabs.executionLogs]: { + state: { + superDatePicker: { + recentlyUsedRanges, + refreshInterval, + isPaused, + start, + end, + }, + queryText, + statusFilters, + showMetricColumns, + pagination: { + pageIndex, + pageSize, + }, + sort: { + sortField, + sortDirection, + }, + }, + actions: { + setEnd, + setIsPaused, + setPageIndex, + setPageSize, + setQueryText, + setRecentlyUsedRanges, + setRefreshInterval, + setShowMetricColumns, + setSortDirection, + setSortField, + setStart, + setStatusFilters, + }, + }, + }), + [ + end, + isPaused, + pageIndex, + pageSize, + queryText, + recentlyUsedRanges, + refreshInterval, + showMetricColumns, + sortDirection, + sortField, + start, + statusFilters, + ] + ); + + return ( + {children} + ); +}; + +export const useRuleDetailsContext = (): RuleDetailsContextType => { + const ruleDetailsContext = useContext(RuleDetailsContext); + invariant( + ruleDetailsContext, + 'useRuleDetailsContext should be used inside RuleDetailsContextProvider' + ); + return ruleDetailsContext; +}; + +export const useRuleDetailsContextOptional = (): RuleDetailsContextType | null => + useContext(RuleDetailsContext); diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.test.tsx b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.test.tsx new file mode 100644 index 0000000000000..3553f44cc621f --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { fireEvent, render } from '@testing-library/react'; +import React from 'react'; +import { SecurityPageName } from '../../app/types'; +import { TestProviders } from '../../common/mock'; +import { LandingLinksIcons, NavItem } from './landing_links_icons'; + +const DEFAULT_NAV_ITEM: NavItem = { + id: SecurityPageName.overview, + label: 'TEST LABEL', + description: 'TEST DESCRIPTION', + icon: 'myTestIcon', +}; + +const mockNavigateTo = jest.fn(); +jest.mock('../../common/lib/kibana', () => { + const originalModule = jest.requireActual('../../common/lib/kibana'); + return { + ...originalModule, + useNavigation: () => ({ + navigateTo: mockNavigateTo, + }), + }; +}); + +jest.mock('../../common/components/link_to', () => { + const originalModule = jest.requireActual('../../common/components/link_to'); + return { + ...originalModule, + useFormatUrl: (id: string) => ({ + formatUrl: jest.fn().mockImplementation((path: string) => `/${id}`), + search: '', + }), + }; +}); + +describe('LandingLinksIcons', () => { + it('renders', () => { + const label = 'test label'; + + const { queryByText } = render( + + + + ); + + expect(queryByText(label)).toBeInTheDocument(); + }); + + it('renders navigation link', () => { + const id = SecurityPageName.administration; + const label = 'myTestLable'; + + const { getByText } = render( + + + + ); + + fireEvent.click(getByText(label)); + + expect(mockNavigateTo).toHaveBeenCalledWith({ url: '/administration' }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx new file mode 100644 index 0000000000000..82a0d2148f683 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + EuiFlexGrid, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiText, + EuiTitle, + IconType, +} from '@elastic/eui'; +import React from 'react'; +import styled from 'styled-components'; +import { SecurityPageName } from '../../app/types'; +import { + SecuritySolutionLinkAnchor, + withSecuritySolutionLink, +} from '../../common/components/links'; + +interface LandingLinksImagesProps { + items: NavItem[]; +} + +export interface NavItem { + id: SecurityPageName; + label: string; + icon: IconType; + description: string; + path?: string; +} + +const Link = styled.a` + color: inherit; +`; + +const SecuritySolutionLink = withSecuritySolutionLink(Link); + +const Description = styled(EuiFlexItem)` + max-width: 22em; +`; + +const StyledEuiTitle = styled(EuiTitle)` + margin-top: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-bottom: ${({ theme }) => theme.eui.paddingSizes.xs}; +`; + +export const LandingLinksIcons: React.FC = ({ items }) => ( + + {items.map(({ label, description, path, id, icon }) => ( + + + + + + + + + +

{label}

+
+
+
+ + + {description} + + +
+
+ ))} +
+); diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.test.tsx b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.test.tsx index d326fff1a9262..479de5e13f432 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.test.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.test.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { SecurityPageName } from '../../app/types'; import { TestProviders } from '../../common/mock'; import { LandingLinksImages, NavItem } from './landing_links_images'; -import { SCREENSHOT_IMAGE_ALT } from './translations'; const DEFAULT_NAV_ITEM: NavItem = { id: SecurityPageName.overview, @@ -32,7 +31,7 @@ jest.mock('../../common/lib/kibana/kibana_react', () => { }); describe('LandingLinksImages', () => { - test('renders', () => { + it('renders', () => { const label = 'test label'; const { queryByText } = render( @@ -44,16 +43,16 @@ describe('LandingLinksImages', () => { expect(queryByText(label)).toBeInTheDocument(); }); - test('renders image', () => { + it('renders image', () => { const image = 'test_image.jpeg'; const label = 'TEST_LABEL'; - const { getByAltText } = render( + const { getByTestId } = render( ); - expect(getByAltText(SCREENSHOT_IMAGE_ALT(label))).toHaveAttribute('src', image); + expect(getByTestId('LandingLinksImage')).toHaveAttribute('src', image); }); }); diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx index 93366b413e0bc..b6a16da8cdc82 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx @@ -9,7 +9,6 @@ import React from 'react'; import styled from 'styled-components'; import { SecurityPageName } from '../../app/types'; import { withSecuritySolutionLink } from '../../common/components/links'; -import * as i18n from './translations'; interface LandingLinksImagesProps { items: NavItem[]; @@ -23,7 +22,7 @@ export interface NavItem { path?: string; } -const PrimatyEuiTitle = styled(EuiTitle)` +const PrimaryEuiTitle = styled(EuiTitle)` color: ${(props) => props.theme.eui.euiColorPrimary}; `; @@ -49,18 +48,24 @@ const Content = styled(EuiFlexItem)` export const LandingLinksImages: React.FC = ({ items }) => ( {items.map(({ label, description, path, image, id }) => ( - - + + {/* Empty onClick is to force hover style on `EuiPanel` */} {}}> - + - +

{label}

-
+ {description} diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/translations.ts b/x-pack/plugins/security_solution/public/landing_pages/components/translations.ts deleted file mode 100644 index 6f27c3e58cbbc..0000000000000 --- a/x-pack/plugins/security_solution/public/landing_pages/components/translations.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const SCREENSHOT_IMAGE_ALT = (pageName: string) => - i18n.translate('xpack.securitySolution.landing.threatHunting.pageImageAlt', { - values: { pageName }, - defaultMessage: '{pageName} page screenshot', - }); diff --git a/x-pack/plugins/security_solution/public/landing_pages/icons/blocklist.tsx b/x-pack/plugins/security_solution/public/landing_pages/icons/blocklist.tsx new file mode 100644 index 0000000000000..75d272034d668 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/icons/blocklist.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 React, { SVGProps } from 'react'; +export const IconBlocklist: React.FC> = ({ ...props }) => ( + + + + + + + +); diff --git a/x-pack/plugins/security_solution/public/landing_pages/icons/endpoint_policies.tsx b/x-pack/plugins/security_solution/public/landing_pages/icons/endpoint_policies.tsx new file mode 100644 index 0000000000000..7563ac17045a2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/icons/endpoint_policies.tsx @@ -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 React, { SVGProps } from 'react'; +export const IconEndpointPolicies: React.FC> = ({ ...props }) => ( + + + +); diff --git a/x-pack/plugins/security_solution/public/landing_pages/icons/endpoints.tsx b/x-pack/plugins/security_solution/public/landing_pages/icons/endpoints.tsx new file mode 100644 index 0000000000000..a8254d3996c72 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/icons/endpoints.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, { SVGProps } from 'react'; +export const IconEndpoints: React.FC> = ({ ...props }) => ( + + + + + +); diff --git a/x-pack/plugins/security_solution/public/landing_pages/icons/event_filters.tsx b/x-pack/plugins/security_solution/public/landing_pages/icons/event_filters.tsx new file mode 100644 index 0000000000000..78628b7904e8a --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/icons/event_filters.tsx @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { SVGProps } from 'react'; +export const IconEventFilters: React.FC> = ({ ...props }) => ( + + + + + + +); diff --git a/x-pack/plugins/security_solution/public/landing_pages/icons/exception_lists.tsx b/x-pack/plugins/security_solution/public/landing_pages/icons/exception_lists.tsx new file mode 100644 index 0000000000000..a4cc7a25a9785 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/icons/exception_lists.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { SVGProps } from 'react'; +export const IconExceptionLists: React.FC> = ({ ...props }) => ( + + + + + + +); diff --git a/x-pack/plugins/security_solution/public/landing_pages/icons/host_isolation.tsx b/x-pack/plugins/security_solution/public/landing_pages/icons/host_isolation.tsx new file mode 100644 index 0000000000000..c0df14075c958 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/icons/host_isolation.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { SVGProps } from 'react'; +export const IconHostIsolation: React.FC> = ({ ...props }) => ( + + + + + + + + + + + + + +); diff --git a/x-pack/plugins/security_solution/public/landing_pages/icons/siem_rules.tsx b/x-pack/plugins/security_solution/public/landing_pages/icons/siem_rules.tsx new file mode 100644 index 0000000000000..fe89c8fb22581 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/icons/siem_rules.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, { SVGProps } from 'react'; +export const IconSiemRules: React.FC> = ({ ...props }) => ( + + + + + + + + + + + + + + + + + +); diff --git a/x-pack/plugins/security_solution/public/landing_pages/icons/trusted_applications.tsx b/x-pack/plugins/security_solution/public/landing_pages/icons/trusted_applications.tsx new file mode 100644 index 0000000000000..7b9f980b7f231 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/icons/trusted_applications.tsx @@ -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 React, { SVGProps } from 'react'; +export const IconTrustedApplications: React.FC> = ({ ...props }) => ( + + + + + + + + +); diff --git a/x-pack/plugins/security_solution/public/landing_pages/pages/manage.test.tsx b/x-pack/plugins/security_solution/public/landing_pages/pages/manage.test.tsx new file mode 100644 index 0000000000000..efb1bcf35c39e --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/pages/manage.test.tsx @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render } from '@testing-library/react'; +import React from 'react'; +import { SecurityPageName } from '../../app/types'; +import { TestProviders } from '../../common/mock'; +import { LandingCategories, NavConfigType } from './manage'; + +const RULES_ITEM_LABEL = 'elastic rules!'; +const EXCEPTIONS_ITEM_LABEL = 'exceptional!'; + +const testConfig: NavConfigType = { + categories: [ + { + label: 'first tests category', + itemIds: [SecurityPageName.rules], + }, + { + label: 'second tests category', + itemIds: [SecurityPageName.exceptions], + }, + ], + items: [ + { + id: SecurityPageName.rules, + label: RULES_ITEM_LABEL, + description: '', + icon: 'testIcon1', + }, + { + id: SecurityPageName.exceptions, + label: EXCEPTIONS_ITEM_LABEL, + description: '', + icon: 'testIcon2', + }, + ], +}; + +describe('LandingCategories', () => { + it('renders items', () => { + const { queryByText } = render( + + + + ); + + expect(queryByText(RULES_ITEM_LABEL)).toBeInTheDocument(); + expect(queryByText(EXCEPTIONS_ITEM_LABEL)).toBeInTheDocument(); + }); + + it('renders items in the same order as defined', () => { + const { queryAllByTestId } = render( + + + + ); + + const renderedItems = queryAllByTestId('LandingItem'); + + expect(renderedItems[0]).toHaveTextContent(EXCEPTIONS_ITEM_LABEL); + expect(renderedItems[1]).toHaveTextContent(RULES_ITEM_LABEL); + }); +}); diff --git a/x-pack/plugins/security_solution/public/landing_pages/pages/manage.tsx b/x-pack/plugins/security_solution/public/landing_pages/pages/manage.tsx new file mode 100644 index 0000000000000..da4d25f621305 --- /dev/null +++ b/x-pack/plugins/security_solution/public/landing_pages/pages/manage.tsx @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiHorizontalRule, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { compact } from 'lodash/fp'; +import React from 'react'; +import styled from 'styled-components'; +import { + BLOCKLIST, + ENDPOINTS, + EVENT_FILTERS, + EXCEPTIONS, + TRUSTED_APPLICATIONS, +} from '../../app/translations'; +import { SecurityPageName } from '../../app/types'; +import { HeaderPage } from '../../common/components/header_page'; +import { SecuritySolutionPageWrapper } from '../../common/components/page_wrapper'; +import { SpyRoute } from '../../common/utils/route/spy_routes'; +import { LandingLinksIcons, NavItem } from '../components/landing_links_icons'; +import { IconBlocklist } from '../icons/blocklist'; +import { IconEndpoints } from '../icons/endpoints'; +import { IconEndpointPolicies } from '../icons/endpoint_policies'; +import { IconEventFilters } from '../icons/event_filters'; +import { IconExceptionLists } from '../icons/exception_lists'; +import { IconHostIsolation } from '../icons/host_isolation'; +import { IconSiemRules } from '../icons/siem_rules'; +import { IconTrustedApplications } from '../icons/trusted_applications'; +import { MANAGE_PAGE_TITLE } from './translations'; + +// TODO +const FIX_ME_TEMPORARY_DESCRIPTION = 'Description here'; + +export interface NavConfigType { + items: NavItem[]; + categories: Array<{ label: string; itemIds: SecurityPageName[] }>; +} + +const config: NavConfigType = { + categories: [ + { + label: i18n.translate('xpack.securitySolution.landing.threatHunting.siemTitle', { + defaultMessage: 'SIEM', + }), + itemIds: [SecurityPageName.rules, SecurityPageName.exceptions], + }, + { + label: i18n.translate('xpack.securitySolution.landing.threatHunting.endpointsTitle', { + defaultMessage: 'ENDPOINTS', + }), + itemIds: [ + SecurityPageName.endpoints, + SecurityPageName.policies, + SecurityPageName.trustedApps, + SecurityPageName.eventFilters, + SecurityPageName.blocklist, + SecurityPageName.hostIsolationExceptions, + ], + }, + ], + items: [ + { + id: SecurityPageName.rules, + label: i18n.translate('xpack.securitySolution.landing.manage.rulesLabel', { + defaultMessage: 'SIEM rules', + }), + description: FIX_ME_TEMPORARY_DESCRIPTION, + icon: IconSiemRules, + }, + { + id: SecurityPageName.exceptions, + label: EXCEPTIONS, + description: FIX_ME_TEMPORARY_DESCRIPTION, + icon: IconExceptionLists, + }, + { + id: SecurityPageName.endpoints, + label: ENDPOINTS, + description: i18n.translate('xpack.securitySolution.landing.manage.endpointsDescription', { + defaultMessage: 'Hosts running endpoint security', + }), + icon: IconEndpoints, + }, + { + id: SecurityPageName.policies, + label: i18n.translate('xpack.securitySolution.landing.manage.endpointPoliceLabel', { + defaultMessage: 'Endpoint policies', + }), + description: FIX_ME_TEMPORARY_DESCRIPTION, + icon: IconEndpointPolicies, + }, + { + id: SecurityPageName.trustedApps, + label: TRUSTED_APPLICATIONS, + description: i18n.translate( + 'xpack.securitySolution.landing.manage.trustedApplicationsDescription', + { + defaultMessage: + 'Improve performance or alleviate conflicts with other applications running on your hosts', + } + ), + icon: IconTrustedApplications, + }, + { + id: SecurityPageName.eventFilters, + label: EVENT_FILTERS, + description: i18n.translate('xpack.securitySolution.landing.manage.eventFiltersDescription', { + defaultMessage: 'Exclude unwanted applications from running on your hosts', + }), + icon: IconEventFilters, + }, + { + id: SecurityPageName.blocklist, + label: BLOCKLIST, + description: FIX_ME_TEMPORARY_DESCRIPTION, + icon: IconBlocklist, + }, + { + id: SecurityPageName.hostIsolationExceptions, + label: i18n.translate('xpack.securitySolution.landing.manage.hostIsolationLabel', { + defaultMessage: 'Host isolation IP exceptions', + }), + description: i18n.translate( + 'xpack.securitySolution.landing.manage.hostIsolationDescription', + { + defaultMessage: 'Allow isolated hosts to communicate with specific IPs', + } + ), + + icon: IconHostIsolation, + }, + ], +}; + +export const ManageLandingPage = () => ( + + + + + +); + +const StyledEuiHorizontalRule = styled(EuiHorizontalRule)` + margin-top: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-bottom: ${({ theme }) => theme.eui.paddingSizes.l}; +`; + +const getNavItembyId = (navConfig: NavConfigType) => (itemId: string) => + navConfig.items.find(({ id }: NavItem) => id === itemId); + +const navItemsFromIds = (itemIds: SecurityPageName[], navConfig: NavConfigType) => + compact(itemIds.map(getNavItembyId(navConfig))); + +export const LandingCategories = React.memo(({ navConfig }: { navConfig: NavConfigType }) => { + return ( + <> + {navConfig.categories.map(({ label, itemIds }, index) => ( +
+ {index > 0 && ( + <> + + + + )} + +

{label}

+
+ + +
+ ))} + + ); +}); + +LandingCategories.displayName = 'LandingCategories'; diff --git a/x-pack/plugins/security_solution/public/landing_pages/pages/translations.ts b/x-pack/plugins/security_solution/public/landing_pages/pages/translations.ts index 398bc3fc89fd8..13a2396201cc5 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/pages/translations.ts +++ b/x-pack/plugins/security_solution/public/landing_pages/pages/translations.ts @@ -20,3 +20,7 @@ export const DASHBOARDS_PAGE_TITLE = i18n.translate( defaultMessage: 'Dashboards', } ); + +export const MANAGE_PAGE_TITLE = i18n.translate('xpack.securitySolution.landing.manage.pageTitle', { + defaultMessage: 'Manage', +}); diff --git a/x-pack/plugins/security_solution/public/landing_pages/routes.tsx b/x-pack/plugins/security_solution/public/landing_pages/routes.tsx index d849b4c22cf7e..af8ce9dbdaf2a 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/routes.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/routes.tsx @@ -9,9 +9,10 @@ import React from 'react'; import { TrackApplicationView } from '@kbn/usage-collection-plugin/public'; import { SecurityPageName, SecuritySubPluginRoutes } from '../app/types'; -import { DASHBOARDS_PATH, THREAT_HUNTING_PATH } from '../../common/constants'; +import { DASHBOARDS_PATH, MANAGE_PATH, THREAT_HUNTING_PATH } from '../../common/constants'; import { ThreatHuntingLandingPage } from './pages/threat_hunting'; import { DashboardsLandingPage } from './pages/dashboards'; +import { ManageLandingPage } from './pages/manage'; export const ThreatHuntingRoutes = () => ( @@ -25,6 +26,12 @@ export const DashboardRoutes = () => ( ); +export const ManageRoutes = () => ( + + + +); + export const routes: SecuritySubPluginRoutes = [ { path: THREAT_HUNTING_PATH, @@ -34,4 +41,8 @@ export const routes: SecuritySubPluginRoutes = [ path: DASHBOARDS_PATH, render: DashboardRoutes, }, + { + path: MANAGE_PATH, + render: ManageRoutes, + }, ]; diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/view/blocklist.tsx b/x-pack/plugins/security_solution/public/management/pages/blocklist/view/blocklist.tsx index a48d770460ec9..759cc37ed902b 100644 --- a/x-pack/plugins/security_solution/public/management/pages/blocklist/view/blocklist.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/blocklist/view/blocklist.tsx @@ -71,7 +71,7 @@ const BLOCKLIST_PAGE_LABELS: ArtifactListPageProps['labels'] = { @@ -87,7 +87,7 @@ const BLOCKLIST_PAGE_LABELS: ArtifactListPageProps['labels'] = { }), emptyStateInfo: i18n.translate('xpack.securitySolution.blocklist.emptyStateInfo', { defaultMessage: - 'The blocklist prevents selected applications from running on your hosts by extending the list of processes the Endpoint considers malicious.', + 'The blocklist prevents specified applications from running on your hosts, extending the list of processes that Endpoint Security considers malicious.', }), emptyStatePrimaryButtonLabel: i18n.translate( 'xpack.securitySolution.blocklist.emptyStatePrimaryButtonLabel', 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 57cdaca1f2147..d8dc87885a1fa 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 @@ -424,16 +424,16 @@ describe('endpoint list middleware', () => { path: expect.any(String), query: { agent_ids: [ - '6db499e5-4927-4350-abb8-d8318e7d0eec', - 'c082dda9-1847-4997-8eda-f1192d95bec3', - '8aa1cd61-cc25-4783-afb5-0eefc4919c07', - '47fe24c1-7370-419a-9732-3ff38bf41272', - '0d2b2fa7-a9cd-49fc-ad5f-0252c642290e', - 'f480092d-0445-4bf3-9c96-8a3d5cb97824', - '3850e676-0940-4c4b-aaca-571bd1bc66d9', - '46efcc7a-086a-47a3-8f09-c4ecd6d2d917', - 'afa55826-b81b-4440-a2ac-0644d77a3fc6', - '25b49e50-cb5c-43df-824f-67b8cf697d9d', + '0dc3661d-6e67-46b0-af39-6f12b025fcb0', + 'a8e32a61-2685-47f0-83eb-edf157b8e616', + '37e219a8-fe16-4da9-bf34-634c5824b484', + '2484eb13-967e-4491-bf83-dffefdfe607c', + '0bc08ef6-6d6a-4113-92f2-b97811187c63', + 'f4127d87-b567-4a6e-afa6-9a1c7dc95f01', + 'f9ab5b8c-a43e-4e80-99d6-11570845a697', + '406c4b6a-ca57-4bd1-bc66-d9d999df3e70', + '2da1dd51-f7af-4f0e-b64c-e7751c74b0e7', + '89a94ea4-073c-4cb6-90a2-500805837027', ], }, }); diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/components/policy_endpoint_count.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/components/policy_endpoint_count.tsx index 08c2f1909339d..b8b2f98173f21 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/components/policy_endpoint_count.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/components/policy_endpoint_count.tsx @@ -25,7 +25,7 @@ export const PolicyEndpointCount = memo< policyId: string; nonLinkCondition: boolean; } ->(({ policyId, nonLinkCondition, children, ...otherProps }) => { +>(({ policyId, nonLinkCondition, 'data-test-subj': dataTestSubj, children, ...otherProps }) => { const filterByPolicyQuery = `(language:kuery,query:'united.endpoint.Endpoint.policy.applied.id : "${policyId}"')`; const { search } = useLocation(); const { getAppUrl } = useAppUrl(); @@ -59,11 +59,15 @@ export const PolicyEndpointCount = memo< const clickHandler = useNavigateByRouterEventHandler(toRoutePathWithBackOptions); if (nonLinkCondition) { - return {children}; + return ( + + {children} + + ); } return ( // eslint-disable-next-line @elastic/eui/href-or-on-click - + {children} ); diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.test.tsx index 482fe0ba064bd..3ea50af79a9c3 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.test.tsx @@ -99,15 +99,23 @@ describe('When on the policy list page', () => { expect(policyNameCells).toBeTruthy(); expect(policyNameCells.length).toBe(5); }); - it('should show a avatar for the Created by column', () => { + it('should show an avatar and name for the Created by column', () => { + const expectedAvatarName = policies.items[0].created_by; const createdByCells = renderResult.getAllByTestId('created-by-avatar'); + const firstCreatedByName = renderResult.getAllByTestId('created-by-name')[0]; expect(createdByCells).toBeTruthy(); expect(createdByCells.length).toBe(5); + expect(createdByCells[0].textContent).toEqual(expectedAvatarName.charAt(0)); + expect(firstCreatedByName.textContent).toEqual(expectedAvatarName); }); - it('should show a avatar for the Updated by column', () => { + it('should show an avatar and name for the Updated by column', () => { + const expectedAvatarName = policies.items[0].updated_by; const updatedByCells = renderResult.getAllByTestId('updated-by-avatar'); + const firstUpdatedByName = renderResult.getAllByTestId('updated-by-name')[0]; expect(updatedByCells).toBeTruthy(); expect(updatedByCells.length).toBe(5); + expect(updatedByCells[0].textContent).toEqual(expectedAvatarName.charAt(0)); + expect(firstUpdatedByName.textContent).toEqual(expectedAvatarName); }); it('should show the correct endpoint count', () => { const endpointCount = renderResult.getAllByTestId('policyEndpointCountLink'); diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.tsx index 884a8572ecfe2..67398cbe39a44 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.tsx @@ -189,7 +189,9 @@ export const PolicyList = memo(() => {
- {name} + + {name} +
); @@ -222,7 +224,9 @@ export const PolicyList = memo(() => {
- {name} + + {name} +
); diff --git a/x-pack/plugins/security_solution/public/network/pages/network.test.tsx b/x-pack/plugins/security_solution/public/network/pages/network.test.tsx index a52c4e1560893..32ba03abe500b 100644 --- a/x-pack/plugins/security_solution/public/network/pages/network.test.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/network.test.tsx @@ -106,6 +106,7 @@ jest.mock('../../common/lib/kibana', () => { addError: jest.fn(), addSuccess: jest.fn(), addWarning: jest.fn(), + remove: jest.fn(), }), }; }); diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx index 2e1b96447f3df..f7f3cc9a81f7f 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx @@ -49,6 +49,11 @@ const StyledLegendFlexItem = styled(EuiFlexItem)` padding-top: 45px; `; +// To Do remove this styled component once togglequery is updated: #131405 +const StyledEuiPanel = styled(EuiPanel)` + height: fit-content; +`; + interface AlertsByStatusProps { signalIndexName: string | null; } @@ -119,7 +124,10 @@ export const AlertsByStatus = ({ signalIndexName }: AlertsByStatusProps) => { return ( <> - + {loading && ( { )} - + ); diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.tsx index 13a2459b44d68..67ed0d43c830c 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.tsx @@ -6,7 +6,7 @@ */ import React, { useCallback, useMemo } from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiPanel, EuiText } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiText } from '@elastic/eui'; import { AxisStyle, Rotation, ScaleType } from '@elastic/charts'; import styled from 'styled-components'; import { FormattedNumber } from '@kbn/i18n-react'; @@ -112,6 +112,10 @@ const Wrapper = styled.div` width: 100%; `; +const StyledEuiPanel = styled(EuiPanel)` + height: 258px; +`; + const CasesByStatusComponent: React.FC = () => { const { toggleStatus, setToggleStatus } = useQueryToggle(CASES_BY_STATUS_ID); const { getAppUrl, navigateTo } = useNavigation(); @@ -151,7 +155,7 @@ const CasesByStatusComponent: React.FC = () => { ); return ( - + { <> - - <> - - {CASES(totalCounts)} - + {' '} + {CASES(totalCounts)} )} @@ -193,7 +194,7 @@ const CasesByStatusComponent: React.FC = () => { )} - + ); }; diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.test.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.test.tsx index eb5daeeb374c2..37c48487912e0 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.test.tsx @@ -28,16 +28,17 @@ jest.mock('../../../../common/containers/use_global_time', () => { }); jest.mock('../../../../common/lib/kibana'); -const mockGetAllCasesMetrics = jest.fn(); -mockGetAllCasesMetrics.mockResolvedValue({ - count_open_cases: 1, - count_in_progress_cases: 2, - count_closed_cases: 3, +const mockGetCasesStatus = jest.fn(); +mockGetCasesStatus.mockResolvedValue({ + countOpenCases: 1, + countInProgressCases: 2, + countClosedCases: 3, }); -mockGetAllCasesMetrics.mockResolvedValueOnce({ - count_open_cases: 0, - count_in_progress_cases: 0, - count_closed_cases: 0, + +mockGetCasesStatus.mockResolvedValueOnce({ + countOpenCases: 0, + countInProgressCases: 0, + countClosedCases: 0, }); const mockUseKibana = { @@ -46,7 +47,7 @@ const mockUseKibana = { ...mockCasesContract(), api: { cases: { - getAllCasesMetrics: mockGetAllCasesMetrics, + getCasesStatus: mockGetCasesStatus, }, }, }, diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.tsx index 813fcaa848115..580f91dea6d7d 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.tsx @@ -5,17 +5,12 @@ * 2.0. */ +import { CasesStatus } from '@kbn/cases-plugin/common/ui'; import { useState, useEffect } from 'react'; import { APP_ID } from '../../../../../common/constants'; import { useGlobalTime } from '../../../../common/containers/use_global_time'; import { useKibana } from '../../../../common/lib/kibana'; -export interface CasesCounts { - count_open_cases?: number; - count_in_progress_cases?: number; - count_closed_cases?: number; -} - export interface UseCasesByStatusProps { skip?: boolean; } @@ -37,24 +32,28 @@ export const useCasesByStatus = ({ skip = false }) => { const [updatedAt, setUpdatedAt] = useState(Date.now()); const [isLoading, setIsLoading] = useState(true); - const [casesCounts, setCasesCounts] = useState(null); + const [casesCounts, setCasesCounts] = useState(null); useEffect(() => { let isSubscribed = true; const abortCtrl = new AbortController(); const fetchCases = async () => { try { - const casesResponse = await cases.api.cases.getAllCasesMetrics({ - from, - to, - owner: APP_ID, - }); + const casesResponse = await cases.api.cases.getCasesStatus( + { + from, + to, + owner: APP_ID, + }, + abortCtrl.signal + ); + if (isSubscribed) { setCasesCounts(casesResponse); } } catch (error) { if (isSubscribed) { - setCasesCounts({}); + setCasesCounts(null); } } if (isSubscribed) { @@ -80,14 +79,14 @@ export const useCasesByStatus = ({ skip = false }) => { }, [cases.api.cases, from, skip, to]); return { - closed: casesCounts?.count_closed_cases ?? 0, - inProgress: casesCounts?.count_in_progress_cases ?? 0, + closed: casesCounts?.countClosedCases ?? 0, + inProgress: casesCounts?.countInProgressCases ?? 0, isLoading, - open: casesCounts?.count_open_cases ?? 0, + open: casesCounts?.countOpenCases ?? 0, totalCounts: - (casesCounts?.count_closed_cases ?? 0) + - (casesCounts?.count_in_progress_cases ?? 0) + - (casesCounts?.count_open_cases ?? 0), + (casesCounts?.countClosedCases ?? 0) + + (casesCounts?.countInProgressCases ?? 0) + + (casesCounts?.countOpenCases ?? 0), updatedAt, }; }; diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.test.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.test.tsx new file mode 100644 index 0000000000000..4250c20059094 --- /dev/null +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.test.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 from 'react'; + +import { render } from '@testing-library/react'; + +import { TestProviders } from '../../../../common/mock'; +import { parsedCasesItems } from './mock_data'; +import { CasesTable } from './cases_table'; +import type { UseCaseItems } from './use_case_items'; + +const mockGetAppUrl = jest.fn(); +jest.mock('../../../../common/lib/kibana/hooks', () => { + const original = jest.requireActual('../../../../common/lib/kibana/hooks'); + return { + ...original, + useNavigation: () => ({ + getAppUrl: mockGetAppUrl, + }), + }; +}); + +type UseCaseItemsReturn = ReturnType; +const defaultCaseItemsReturn: UseCaseItemsReturn = { + items: [], + isLoading: false, + updatedAt: Date.now(), +}; +const mockUseCaseItems = jest.fn(() => defaultCaseItemsReturn); +const mockUseCaseItemsReturn = (overrides: Partial) => { + mockUseCaseItems.mockReturnValueOnce({ + ...defaultCaseItemsReturn, + ...overrides, + }); +}; + +jest.mock('./use_case_items', () => ({ + useCaseItems: () => mockUseCaseItems(), +})); + +const renderComponent = () => + render( + + + + ); + +describe('CasesTable', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should render empty table', () => { + const { getByText, getByTestId } = renderComponent(); + + expect(getByTestId('recentlyCreatedCasesPanel')).toBeInTheDocument(); + expect(getByText('No cases to display')).toBeInTheDocument(); + expect(getByTestId('allCasesButton')).toBeInTheDocument(); + }); + + it('should render a loading table', () => { + mockUseCaseItemsReturn({ isLoading: true }); + const { getByText, getByTestId } = renderComponent(); + + expect(getByText('Updating...')).toBeInTheDocument(); + expect(getByTestId('allCasesButton')).toBeInTheDocument(); + expect(getByTestId('recentlyCreatedCasesTable')).toHaveClass('euiBasicTable-loading'); + }); + + it('should render the updated at subtitle', () => { + mockUseCaseItemsReturn({ isLoading: false }); + const { getByText } = renderComponent(); + + expect(getByText('Updated now')).toBeInTheDocument(); + }); + + it('should render the table columns', () => { + mockUseCaseItemsReturn({ items: parsedCasesItems }); + const { getAllByRole } = renderComponent(); + + const columnHeaders = getAllByRole('columnheader'); + expect(columnHeaders.at(0)).toHaveTextContent('Name'); + expect(columnHeaders.at(1)).toHaveTextContent('Note'); + expect(columnHeaders.at(2)).toHaveTextContent('Time'); + expect(columnHeaders.at(3)).toHaveTextContent('Created by'); + expect(columnHeaders.at(4)).toHaveTextContent('Status'); + }); + + it('should render the table items', () => { + mockUseCaseItemsReturn({ items: [parsedCasesItems[0]] }); + const { getByTestId } = renderComponent(); + + expect(getByTestId('recentlyCreatedCaseName')).toHaveTextContent('sdcsd'); + expect(getByTestId('recentlyCreatedCaseNote')).toHaveTextContent('klklk'); + expect(getByTestId('recentlyCreatedCaseTime')).toHaveTextContent('April 25, 2022'); + expect(getByTestId('recentlyCreatedCaseCreatedBy')).toHaveTextContent('elastic'); + expect(getByTestId('recentlyCreatedCaseStatus')).toHaveTextContent('Open'); + }); +}); diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.tsx new file mode 100644 index 0000000000000..80d2495f57ab5 --- /dev/null +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.tsx @@ -0,0 +1,145 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; + +import { + EuiBasicTable, + EuiBasicTableColumn, + EuiButton, + EuiEmptyPrompt, + EuiPanel, + EuiSpacer, + EuiText, +} from '@elastic/eui'; +import { CaseStatuses } from '@kbn/cases-plugin/common'; + +import { SecurityPageName } from '../../../../app/types'; +import { FormattedDate } from '../../../../common/components/formatted_date'; +import { HeaderSection } from '../../../../common/components/header_section'; +import { HoverVisibilityContainer } from '../../../../common/components/hover_visibility_container'; +import { BUTTON_CLASS as INPECT_BUTTON_CLASS } from '../../../../common/components/inspect'; +import { CaseDetailsLink } from '../../../../common/components/links'; +import { useQueryToggle } from '../../../../common/containers/query_toggle'; +import { useNavigation, NavigateTo, GetAppUrl } from '../../../../common/lib/kibana'; +import * as i18n from '../translations'; +import { LastUpdatedAt } from '../util'; +import { StatusBadge } from './status_badge'; +import { CaseItem, useCaseItems } from './use_case_items'; + +type GetTableColumns = (params: { + getAppUrl: GetAppUrl; + navigateTo: NavigateTo; +}) => Array>; + +const DETECTION_RESPONSE_RECENT_CASES_QUERY_ID = 'recentlyCreatedCasesQuery'; + +export const CasesTable = React.memo(() => { + const { getAppUrl, navigateTo } = useNavigation(); + const { toggleStatus, setToggleStatus } = useQueryToggle( + DETECTION_RESPONSE_RECENT_CASES_QUERY_ID + ); + const { items, isLoading, updatedAt } = useCaseItems({ + skip: !toggleStatus, + }); + + const navigateToCases = useCallback(() => { + navigateTo({ deepLinkId: SecurityPageName.case }); + }, [navigateTo]); + + const columns = useMemo( + () => getTableColumns({ getAppUrl, navigateTo }), + [getAppUrl, navigateTo] + ); + + return ( + + + } + showInspectButton={false} + /> + + {toggleStatus && ( + <> + {i18n.NO_CASES_FOUND}} titleSize="xs" /> + } + /> + + + {i18n.VIEW_RECENT_CASES} + + + )} + + + ); +}); + +CasesTable.displayName = 'CasesTable'; + +const getTableColumns: GetTableColumns = () => [ + { + field: 'id', + name: i18n.CASES_TABLE_COLUMN_NAME, + truncateText: true, + textOnly: true, + 'data-test-subj': 'recentlyCreatedCaseName', + + render: (id: string, { name }) => {name}, + }, + { + field: 'note', + name: i18n.CASES_TABLE_COLUMN_NOTE, + truncateText: true, + textOnly: true, + render: (note: string) => ( + + {note} + + ), + }, + { + field: 'createdAt', + name: i18n.CASES_TABLE_COLUMN_TIME, + render: (createdAt: string) => ( + + ), + 'data-test-subj': 'recentlyCreatedCaseTime', + }, + { + field: 'createdBy', + name: i18n.CASES_TABLE_COLUMN_CREATED_BY, + render: (createdBy: string) => ( + + {createdBy} + + ), + }, + { + field: 'status', + name: i18n.CASES_TABLE_COLUMN_STATUS, + render: (status: CaseStatuses) => , + 'data-test-subj': 'recentlyCreatedCaseStatus', + }, +]; diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/index.ts b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/index.ts similarity index 69% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/index.ts rename to x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/index.ts index 8ab93de825305..4151054408345 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/index.ts +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/index.ts @@ -5,5 +5,4 @@ * 2.0. */ -export { HostAlertsTable } from './host_alerts_table'; -export { UserAlertsTable } from './user_alerts_table'; +export { CasesTable } from './cases_table'; diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/mock_data.ts b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/mock_data.ts new file mode 100644 index 0000000000000..2547cfa264757 --- /dev/null +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/mock_data.ts @@ -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 { CaseStatuses } from '@kbn/cases-plugin/common'; + +export const mockCasesResult = { + cases: [ + { + id: '0ce2a510-c43a-11ec-98b5-3109bd2a1901', + version: 'Wzg2MDIsMV0=', + comments: [], + totalComment: 0, + totalAlerts: 0, + title: 'sdcsd', + tags: [], + description: 'klklk', + settings: { + syncAlerts: true, + }, + owner: 'securitySolution', + closed_at: '2022-04-25T01:50:40.435Z', + closed_by: { + full_name: null, + email: null, + username: 'elastic', + }, + createdAt: '2022-04-25T01:50:14.499Z', + createdBy: { + username: 'elastic', + email: null, + full_name: null, + }, + status: 'open', + updated_at: '2022-04-25T01:50:40.435Z', + updated_by: { + full_name: null, + email: null, + username: 'elastic', + }, + connector: { + id: 'none', + name: 'none', + type: '.none', + fields: null, + }, + external_service: null, + }, + { + id: 'dc12f930-c178-11ec-98b5-3109bd2a1901', + version: 'Wzg5NjksMV0=', + comments: [], + totalComment: 0, + totalAlerts: 0, + title: 'zzzz', + tags: [], + description: 'sssss', + settings: { + syncAlerts: true, + }, + owner: 'securitySolution', + closed_at: '2022-04-25T13:45:18.317Z', + closed_by: { + full_name: null, + email: null, + username: 'elastic', + }, + createdAt: '2022-04-21T13:42:17.414Z', + createdBy: { + username: 'elastic', + email: null, + full_name: null, + }, + status: 'in-progress', + updated_at: '2022-04-25T13:45:18.317Z', + updated_by: { + full_name: null, + email: null, + username: 'elastic', + }, + connector: { + id: 'none', + name: 'none', + type: '.none', + fields: null, + }, + external_service: null, + }, + { + id: 'd11cbac0-c178-11ec-98b5-3109bd2a1901', + version: 'Wzg5ODQsMV0=', + comments: [], + totalComment: 0, + totalAlerts: 0, + title: 'asxa', + tags: [], + description: 'dsdd', + settings: { + syncAlerts: true, + }, + owner: 'securitySolution', + closed_at: '2022-04-25T13:45:22.539Z', + closed_by: { + full_name: null, + email: null, + username: 'elastic', + }, + createdAt: '2022-04-21T13:41:59.025Z', + createdBy: { + username: 'elastic', + email: null, + full_name: null, + }, + status: 'closed', + updated_at: '2022-04-25T13:45:22.539Z', + updated_by: { + full_name: null, + email: null, + username: 'elastic', + }, + connector: { + id: 'none', + name: 'none', + type: '.none', + fields: null, + }, + external_service: null, + }, + ], +}; + +export const parsedCasesItems = [ + { + name: 'sdcsd', + note: 'klklk', + createdBy: 'elastic', + status: CaseStatuses.open, + createdAt: '2022-04-25T01:50:14.499Z', + id: '0ce2a510-c43a-11ec-98b5-3109bd2a1901', + }, + { + name: 'zzzz', + note: 'sssss', + status: CaseStatuses['in-progress'], + createdAt: '2022-04-21T13:42:17.414Z', + createdBy: 'elastic', + id: 'dc12f930-c178-11ec-98b5-3109bd2a1901', + }, + { + name: 'asxa', + note: 'dsdd', + createdBy: 'elastic', + status: CaseStatuses.closed, + createdAt: '2022-04-21T13:41:59.025Z', + id: 'd11cbac0-c178-11ec-98b5-3109bd2a1901', + }, +]; diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/status_badge.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/status_badge.tsx new file mode 100644 index 0000000000000..9ae1281d9e6e7 --- /dev/null +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/status_badge.tsx @@ -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 React from 'react'; + +import { CaseStatuses } from '@kbn/cases-plugin/common'; +import { EuiBadge } from '@elastic/eui'; + +import * as i18n from '../translations'; + +interface Props { + status: CaseStatuses; +} + +const statuses = { + [CaseStatuses.open]: { + color: 'primary', + label: i18n.STATUS_OPEN, + }, + [CaseStatuses['in-progress']]: { + color: 'warning', + label: i18n.STATUS_IN_PROGRESS, + }, + [CaseStatuses.closed]: { + color: 'default', + label: i18n.STATUS_CLOSED, + }, +} as const; + +export const StatusBadge: React.FC = ({ status }) => { + return ( + + {statuses[status].label} + + ); +}; + +StatusBadge.displayName = 'StatusBadge'; diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.test.ts b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.test.ts new file mode 100644 index 0000000000000..d112aaac7d5ad --- /dev/null +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.test.ts @@ -0,0 +1,133 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act, renderHook } from '@testing-library/react-hooks'; + +import { mockCasesResult, parsedCasesItems } from './mock_data'; +import { useCaseItems, UseCaseItemsProps } from './use_case_items'; + +import type { UseCaseItems } from './use_case_items'; + +const dateNow = new Date('2022-04-08T12:00:00.000Z').valueOf(); +const mockDateNow = jest.fn().mockReturnValue(dateNow); +Date.now = jest.fn(() => mockDateNow()) as unknown as DateConstructor['now']; + +const defaultCasesReturn = { + cases: [], +}; + +const mockCasesApi = jest.fn().mockResolvedValue(defaultCasesReturn); +const mockKibana = { + services: { + cases: { + api: { + cases: { + find: (...props: unknown[]) => mockCasesApi(...props), + }, + }, + }, + }, +}; +jest.mock('../../../../common/lib/kibana', () => ({ + useKibana: () => mockKibana, +})); + +const from = '2020-07-07T08:20:18.966Z'; +const to = '2020-07-08T08:20:18.966Z'; + +const mockUseGlobalTime = jest.fn().mockReturnValue({ from, to }); +jest.mock('../../../../common/containers/use_global_time', () => { + return { + useGlobalTime: (...props: unknown[]) => mockUseGlobalTime(...props), + }; +}); + +const renderUseCaseItems = (overrides: Partial = {}) => + renderHook>(() => + useCaseItems({ skip: false, ...overrides }) + ); + +describe('useCaseItems', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockDateNow.mockReturnValue(dateNow); + mockCasesApi.mockResolvedValue(defaultCasesReturn); + }); + + it('should return default values', async () => { + await act(async () => { + const { result, waitForNextUpdate } = renderUseCaseItems(); + + await waitForNextUpdate(); + await waitForNextUpdate(); + + expect(result.current).toEqual({ + items: [], + isLoading: false, + updatedAt: dateNow, + }); + }); + + expect(mockCasesApi).toBeCalledWith({ + from: '2020-07-07T08:20:18.966Z', + to: '2020-07-08T08:20:18.966Z', + owner: 'securitySolution', + sortField: 'create_at', + sortOrder: 'desc', + page: 1, + perPage: 4, + }); + }); + + it('should return parsed items', async () => { + mockCasesApi.mockReturnValue(mockCasesResult); + + await act(async () => { + const { result, waitForNextUpdate } = renderUseCaseItems(); + + await waitForNextUpdate(); + await waitForNextUpdate(); + + expect(result.current).toEqual({ + items: parsedCasesItems, + isLoading: false, + updatedAt: dateNow, + }); + }); + }); + + it('should return new updatedAt', async () => { + const newDateNow = new Date('2022-04-08T14:00:00.000Z').valueOf(); + mockDateNow.mockReturnValue(newDateNow); + mockDateNow.mockReturnValueOnce(dateNow); + mockCasesApi.mockReturnValue(mockCasesResult); + + await act(async () => { + const { result, waitForNextUpdate } = renderUseCaseItems(); + + await waitForNextUpdate(); + await waitForNextUpdate(); + + expect(mockDateNow).toHaveBeenCalled(); + expect(result.current).toEqual({ + items: parsedCasesItems, + isLoading: false, + updatedAt: newDateNow, + }); + }); + }); + + it('should skip the query', () => { + const { result } = renderUseCaseItems({ skip: true }); + + expect(result.current).toEqual({ + items: [], + isLoading: false, + updatedAt: dateNow, + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.ts b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.ts new file mode 100644 index 0000000000000..1b19327989729 --- /dev/null +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.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 { useState, useEffect } from 'react'; + +import { CaseStatuses } from '@kbn/cases-plugin/common'; +import { Cases } from '@kbn/cases-plugin/common/ui'; + +import { APP_ID } from '../../../../../common/constants'; +import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { useKibana } from '../../../../common/lib/kibana'; +import { addError } from '../../../../common/store/app/actions'; + +import * as i18n from '../translations'; + +export interface CaseItem { + name: string; + note: string; + createdAt: string; + createdBy: string; + status: CaseStatuses; + id: string; +} + +export interface UseCaseItemsProps { + skip: boolean; +} + +export type UseCaseItems = (props: UseCaseItemsProps) => { + items: CaseItem[]; + isLoading: boolean; + updatedAt: number; +}; + +export const useCaseItems: UseCaseItems = ({ skip }) => { + const { + services: { cases }, + } = useKibana(); + const { to, from } = useGlobalTime(); + const [isLoading, setIsLoading] = useState(true); + const [updatedAt, setUpdatedAt] = useState(Date.now()); + const [items, setItems] = useState([]); + + useEffect(() => { + let isSubscribed = true; + const abortCtrl = new AbortController(); + + const fetchCases = async () => { + try { + const casesResponse = await cases.api.cases.find({ + from, + to, + owner: APP_ID, + sortField: 'create_at', + sortOrder: 'desc', + page: 1, + perPage: 4, + }); + + if (isSubscribed) { + setItems(parseCases(casesResponse)); + setUpdatedAt(Date.now()); + } + } catch (error) { + if (isSubscribed) { + addError(error, { title: i18n.ERROR_MESSAGE_CASES }); + } + } + setIsLoading(false); + }; + + if (!skip) { + fetchCases(); + } + + if (skip) { + setIsLoading(false); + isSubscribed = false; + abortCtrl.abort(); + } + + return () => { + isSubscribed = false; + abortCtrl.abort(); + }; + }, [cases.api.cases, from, skip, to]); + + return { items, isLoading, updatedAt }; +}; + +function parseCases(casesResponse: Cases): CaseItem[] { + const allCases = casesResponse.cases || []; + + return allCases.reduce((accumulated, currentCase) => { + accumulated.push({ + id: currentCase.id, + name: currentCase.title, + note: currentCase.description, + createdAt: currentCase.createdAt, + createdBy: currentCase.createdBy.username || '—', + status: currentCase.status, + }); + + return accumulated; + }, []); +} diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.tsx index 4fe5bf7785bc7..49ad4352cb586 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.tsx @@ -6,6 +6,7 @@ */ import React, { useCallback, useMemo } from 'react'; +import styled from 'styled-components'; import { EuiBasicTable, @@ -40,6 +41,11 @@ interface HostAlertsTableProps { const DETECTION_RESPONSE_HOST_SEVERITY_QUERY_ID = 'vulnerableHostsBySeverityQuery'; +// To Do remove this styled component once togglequery is updated: #131405 +const StyledEuiPanel = styled(EuiPanel)` + height: fit-content; +`; + export const HostAlertsTable = React.memo(({ signalIndexName }: HostAlertsTableProps) => { const { getAppUrl, navigateTo } = useNavigation(); const { toggleStatus, setToggleStatus } = useQueryToggle( @@ -62,8 +68,9 @@ export const HostAlertsTable = React.memo(({ signalIndexName }: HostAlertsTableP ); return ( + //
- + )} - + + //
); }); diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.ts b/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.ts index ebd7af1b49cc2..a01cd709b44f6 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.ts +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.ts @@ -191,7 +191,7 @@ function parseHostsData( return [ ...accumalatedAlertsByHost, { - hostName: currentHost.key, + hostName: currentHost.key || '—', totalAlerts: currentHost.doc_count, low: currentHost.low.doc_count, medium: currentHost.medium.doc_count, diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/translations.ts b/x-pack/plugins/security_solution/public/overview/components/detection_response/translations.ts index 8f37c2e641c7a..d013ab258631a 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/translations.ts +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/translations.ts @@ -103,12 +103,26 @@ export const USER_ALERTS_SECTION_TITLE = i18n.translate( } ); +export const CASES_TABLE_SECTION_TITLE = i18n.translate( + 'xpack.securitySolution.detectionResponse.caseSectionTitle', + { + defaultMessage: 'Recently created cases', + } +); + export const NO_ALERTS_FOUND = i18n.translate( 'xpack.securitySolution.detectionResponse.noRuleAlerts', { defaultMessage: 'No alerts to display', } ); + +export const NO_CASES_FOUND = i18n.translate( + 'xpack.securitySolution.detectionResponse.noRecentCases', + { + defaultMessage: 'No cases to display', + } +); export const RULE_ALERTS_COLUMN_RULE_NAME = i18n.translate( 'xpack.securitySolution.detectionResponse.ruleAlertsColumnRuleName', { @@ -156,14 +170,21 @@ export const OPEN_ALL_ALERTS_BUTTON = i18n.translate( export const VIEW_ALL_USER_ALERTS = i18n.translate( 'xpack.securitySolution.detectionResponse.viewAllUserAlerts', { - defaultMessage: 'View all other user alerts', + defaultMessage: 'View all users', + } +); + +export const VIEW_RECENT_CASES = i18n.translate( + 'xpack.securitySolution.detectionResponse.viewRecentCases', + { + defaultMessage: 'View recent cases', } ); export const VIEW_ALL_HOST_ALERTS = i18n.translate( 'xpack.securitySolution.detectionResponse.viewAllHostAlerts', { - defaultMessage: 'View all other host alerts', + defaultMessage: 'View all hosts', } ); @@ -180,3 +201,45 @@ export const USER_ALERTS_USERNAME_COLUMN = i18n.translate( defaultMessage: 'User name', } ); + +export const CASES_TABLE_COLUMN_NAME = i18n.translate( + 'xpack.securitySolution.detectionResponse.caseColumnName', + { + defaultMessage: 'Name', + } +); + +export const CASES_TABLE_COLUMN_NOTE = i18n.translate( + 'xpack.securitySolution.detectionResponse.caseColumnNote', + { + defaultMessage: 'Note', + } +); + +export const CASES_TABLE_COLUMN_TIME = i18n.translate( + 'xpack.securitySolution.detectionResponse.caseColumnTime', + { + defaultMessage: 'Time', + } +); + +export const CASES_TABLE_COLUMN_CREATED_BY = i18n.translate( + 'xpack.securitySolution.detectionResponse.caseColumnCreatedBy', + { + defaultMessage: 'Created by', + } +); + +export const CASES_TABLE_COLUMN_STATUS = i18n.translate( + 'xpack.securitySolution.detectionResponse.caseColumnStatus', + { + defaultMessage: 'Status', + } +); + +export const ERROR_MESSAGE_CASES = i18n.translate( + 'xpack.securitySolution.detectionResponse.errorMessage', + { + defaultMessage: 'Error fetching case data', + } +); diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.ts b/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.ts index e86ee2f2aef95..3e2778f82cde4 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.ts +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.ts @@ -190,7 +190,7 @@ function parseUsersData(rawAggregation: AlertCountersBySeverityAggregation): Use return [ ...accumalatedAlertsByUser, { - userName: currentUser.key, + userName: currentUser.key || '—', totalAlerts: currentUser.doc_count, low: currentUser.low.doc_count, medium: currentUser.medium.doc_count, diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.tsx index e54ef27c0db34..0416bb48e13e1 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.tsx @@ -6,6 +6,7 @@ */ import React, { useCallback, useMemo } from 'react'; +import styled from 'styled-components'; import { EuiBasicTable, @@ -40,6 +41,11 @@ type GetTableColumns = (params: { const DETECTION_RESPONSE_USER_SEVERITY_QUERY_ID = 'vulnerableUsersBySeverityQuery'; +// To Do remove this styled component once togglequery is updated: #131405 +const StyledEuiPanel = styled(EuiPanel)` + height: fit-content; +`; + export const UserAlertsTable = React.memo(({ signalIndexName }: UserAlertsTableProps) => { const { getAppUrl, navigateTo } = useNavigation(); const { toggleStatus, setToggleStatus } = useQueryToggle( @@ -62,7 +68,7 @@ export const UserAlertsTable = React.memo(({ signalIndexName }: UserAlertsTableP return ( - + )} - + ); }); diff --git a/x-pack/plugins/security_solution/public/overview/pages/detection_response.test.tsx b/x-pack/plugins/security_solution/public/overview/pages/detection_response.test.tsx index 4ad2eeac35240..3b88d22eb4da9 100644 --- a/x-pack/plugins/security_solution/public/overview/pages/detection_response.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/pages/detection_response.test.tsx @@ -11,12 +11,24 @@ import { render } from '@testing-library/react'; import { DetectionResponse } from './detection_response'; import { TestProviders } from '../../common/mock'; +jest.mock('../components/detection_response/alerts_by_status', () => ({ + AlertsByStatus: () =>
, +})); + +jest.mock('../components/detection_response/cases_table', () => ({ + CasesTable: () =>
, +})); + +jest.mock('../components/detection_response/host_alerts_table', () => ({ + HostAlertsTable: () =>
, +})); + jest.mock('../components/detection_response/rule_alerts_table', () => ({ RuleAlertsTable: () =>
, })); -jest.mock('../components/detection_response/alerts_by_status', () => ({ - AlertsByStatus: () =>
, +jest.mock('../components/detection_response/user_alerts_table', () => ({ + UserAlertsTable: () =>
, })); jest.mock('../components/detection_response/cases_by_status', () => ({ @@ -37,14 +49,22 @@ jest.mock('../../common/containers/sourcerer', () => ({ useSourcererDataView: () => mockUseSourcererDataView(), })); -const defaultUseUserInfoReturn = { - signalIndexName: '', - canUserREAD: true, +const defaultUseAlertsPrivilegesReturn = { + hasKibanaREAD: true, hasIndexRead: true, }; -const mockUseUserInfo = jest.fn(() => defaultUseUserInfoReturn); -jest.mock('../../detections/components/user_info', () => ({ - useUserInfo: () => mockUseUserInfo(), + +const defaultUseSignalIndexReturn = { + signalIndexName: '', +}; + +const mockUseSignalIndex = jest.fn(() => defaultUseSignalIndexReturn); +jest.mock('../../detections/containers/detection_engine/alerts/use_signal_index', () => ({ + useSignalIndex: () => mockUseSignalIndex(), +})); +const mockUseAlertsPrivileges = jest.fn(() => defaultUseAlertsPrivilegesReturn); +jest.mock('../../detections/containers/detection_engine/alerts/use_alerts_privileges', () => ({ + useAlertsPrivileges: () => mockUseAlertsPrivileges(), })); const defaultUseCasesPermissionsReturn = { read: true }; @@ -61,7 +81,8 @@ describe('DetectionResponse', () => { beforeEach(() => { jest.clearAllMocks(); mockUseSourcererDataView.mockReturnValue(defaultUseSourcererReturn); - mockUseUserInfo.mockReturnValue(defaultUseUserInfoReturn); + mockUseAlertsPrivileges.mockReturnValue(defaultUseAlertsPrivilegesReturn); + mockUseSignalIndex.mockReturnValue(defaultUseSignalIndexReturn); mockUseCasesPermissions.mockReturnValue(defaultUseCasesPermissionsReturn); }); @@ -121,9 +142,9 @@ describe('DetectionResponse', () => { }); it('should not render alerts data sections if user has not index read permission', () => { - mockUseUserInfo.mockReturnValue({ - ...defaultUseUserInfoReturn, + mockUseAlertsPrivileges.mockReturnValue({ hasIndexRead: false, + hasKibanaREAD: true, }); const result = render( @@ -135,18 +156,19 @@ describe('DetectionResponse', () => { ); expect(result.queryByTestId('detectionResponsePage')).toBeInTheDocument(); - // TODO: assert other alert sections are not in the document + expect(result.queryByTestId('mock_CasesTable')).toBeInTheDocument(); + expect(result.queryByTestId('mock_CasesByStatus')).toBeInTheDocument(); + expect(result.queryByTestId('mock_RuleAlertsTable')).not.toBeInTheDocument(); + expect(result.queryByTestId('mock_HostAlertsTable')).not.toBeInTheDocument(); + expect(result.queryByTestId('mock_UserAlertsTable')).not.toBeInTheDocument(); expect(result.queryByTestId('mock_AlertsByStatus')).not.toBeInTheDocument(); - - // TODO: assert cases sections are in the document - expect(result.queryByTestId('mock_CasesByStatus')).toBeInTheDocument(); }); it('should not render alerts data sections if user has not kibana read permission', () => { - mockUseUserInfo.mockReturnValue({ - ...defaultUseUserInfoReturn, - canUserREAD: false, + mockUseAlertsPrivileges.mockReturnValue({ + hasIndexRead: true, + hasKibanaREAD: false, }); const result = render( @@ -158,13 +180,13 @@ describe('DetectionResponse', () => { ); expect(result.queryByTestId('detectionResponsePage')).toBeInTheDocument(); + expect(result.queryByTestId('mock_CasesTable')).toBeInTheDocument(); + expect(result.queryByTestId('mock_CasesByStatus')).toBeInTheDocument(); - // TODO: assert all alert sections are not in the document expect(result.queryByTestId('mock_RuleAlertsTable')).not.toBeInTheDocument(); + expect(result.queryByTestId('mock_HostAlertsTable')).not.toBeInTheDocument(); + expect(result.queryByTestId('mock_UserAlertsTable')).not.toBeInTheDocument(); expect(result.queryByTestId('mock_AlertsByStatus')).not.toBeInTheDocument(); - - // TODO: assert all cases sections are in the document - expect(result.queryByTestId('mock_CasesByStatus')).toBeInTheDocument(); }); it('should not render cases data sections if user has not cases read permission', () => { @@ -178,18 +200,20 @@ describe('DetectionResponse', () => { ); + expect(result.queryByTestId('mock_CasesTable')).not.toBeInTheDocument(); + expect(result.queryByTestId('mock_CasesByStatus')).not.toBeInTheDocument(); + expect(result.queryByTestId('detectionResponsePage')).toBeInTheDocument(); - // TODO: assert all alert sections are in the document expect(result.queryByTestId('mock_RuleAlertsTable')).toBeInTheDocument(); + expect(result.queryByTestId('mock_HostAlertsTable')).toBeInTheDocument(); + expect(result.queryByTestId('mock_UserAlertsTable')).toBeInTheDocument(); expect(result.queryByTestId('mock_AlertsByStatus')).toBeInTheDocument(); - // TODO: assert all cases sections are not in the document - expect(result.queryByTestId('mock_CasesByStatus')).not.toBeInTheDocument(); }); it('should render page permissions message if user has any read permission', () => { mockUseCasesPermissions.mockReturnValue({ read: false }); - mockUseUserInfo.mockReturnValue({ - ...defaultUseUserInfoReturn, + mockUseAlertsPrivileges.mockReturnValue({ + hasKibanaREAD: true, hasIndexRead: false, }); diff --git a/x-pack/plugins/security_solution/public/overview/pages/detection_response.tsx b/x-pack/plugins/security_solution/public/overview/pages/detection_response.tsx index 5b9d298bf915c..fedcca0aac7b4 100644 --- a/x-pack/plugins/security_solution/public/overview/pages/detection_response.tsx +++ b/x-pack/plugins/security_solution/public/overview/pages/detection_response.tsx @@ -11,17 +11,20 @@ import { SecuritySolutionPageWrapper } from '../../common/components/page_wrappe import { SpyRoute } from '../../common/utils/route/spy_routes'; import { SecurityPageName } from '../../app/types'; import { useSourcererDataView } from '../../common/containers/sourcerer'; -import { useUserInfo } from '../../detections/components/user_info'; import { HeaderPage } from '../../common/components/header_page'; import { useKibana, useGetUserCasesPermissions } from '../../common/lib/kibana'; -import { HostAlertsTable, UserAlertsTable } from '../components/detection_response'; +import { EmptyPage } from '../../common/components/empty_page'; import { LandingPageComponent } from '../../common/components/landing_page'; +import { useSignalIndex } from '../../detections/containers/detection_engine/alerts/use_signal_index'; +import { useAlertsPrivileges } from '../../detections/containers/detection_engine/alerts/use_alerts_privileges'; +import { AlertsByStatus } from '../components/detection_response/alerts_by_status'; +import { HostAlertsTable } from '../components/detection_response/host_alerts_table'; import { RuleAlertsTable } from '../components/detection_response/rule_alerts_table'; +import { UserAlertsTable } from '../components/detection_response/user_alerts_table'; import * as i18n from './translations'; -import { EmptyPage } from '../../common/components/empty_page'; +import { CasesTable } from '../components/detection_response/cases_table'; import { CasesByStatus } from '../components/detection_response/cases_by_status'; -import { AlertsByStatus } from '../components/detection_response/alerts_by_status'; const NoPrivilegePage: React.FC = () => { const { docLinks } = useKibana().services; @@ -48,9 +51,10 @@ const NoPrivilegePage: React.FC = () => { const DetectionResponseComponent = () => { const { indicesExist, indexPattern, loading: isSourcererLoading } = useSourcererDataView(); - const { signalIndexName, canUserREAD, hasIndexRead } = useUserInfo(); + const { signalIndexName } = useSignalIndex(); + const { hasKibanaREAD, hasIndexRead } = useAlertsPrivileges(); const canReadCases = useGetUserCasesPermissions()?.read; - const canReadAlerts = canUserREAD && hasIndexRead; + const canReadAlerts = hasKibanaREAD && hasIndexRead; if (!canReadAlerts && !canReadCases) { return ; @@ -90,7 +94,11 @@ const DetectionResponseComponent = () => { )} - {canReadCases && {'[cases table]'}} + {canReadCases && ( + + + + )} {canReadAlerts && ( diff --git a/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/__snapshots__/isometric_taxi_layout.test.ts.snap b/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/__snapshots__/isometric_taxi_layout.test.ts.snap index dca100efcc835..b033febcd1ac8 100644 --- a/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/__snapshots__/isometric_taxi_layout.test.ts.snap +++ b/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/__snapshots__/isometric_taxi_layout.test.ts.snap @@ -15,11 +15,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "A", - "process.name": "powershell.exe", + "process.name": "lsass.exe", "process.parent.entity_id": "", }, "id": "A", - "name": "powershell.exe", + "name": "lsass.exe", "parent": undefined, "stats": Object { "byCategory": Object {}, @@ -33,11 +33,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "A", - "process.name": "powershell.exe", + "process.name": "lsass.exe", "process.parent.entity_id": "", }, "id": "A", - "name": "powershell.exe", + "name": "lsass.exe", "parent": undefined, "stats": Object { "byCategory": Object {}, @@ -58,11 +58,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "A", - "process.name": "lsass.exe", + "process.name": "mimikatz.exe", "process.parent.entity_id": "", }, "id": "A", - "name": "lsass.exe", + "name": "mimikatz.exe", "parent": undefined, "stats": Object { "byCategory": Object {}, @@ -73,11 +73,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "B", - "process.name": "powershell.exe", + "process.name": "lsass.exe", "process.parent.entity_id": "A", }, "id": "B", - "name": "powershell.exe", + "name": "lsass.exe", "parent": "A", "stats": Object { "byCategory": Object {}, @@ -88,11 +88,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "C", - "process.name": "iexlorer.exe", + "process.name": "lsass.exe", "process.parent.entity_id": "A", }, "id": "C", - "name": "iexlorer.exe", + "name": "lsass.exe", "parent": "A", "stats": Object { "byCategory": Object {}, @@ -103,11 +103,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "I", - "process.name": "explorer.exe", + "process.name": "notepad.exe", "process.parent.entity_id": "A", }, "id": "I", - "name": "explorer.exe", + "name": "notepad.exe", "parent": "A", "stats": Object { "byCategory": Object {}, @@ -118,11 +118,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "D", - "process.name": "mimikatz.exe", + "process.name": "lsass.exe", "process.parent.entity_id": "B", }, "id": "D", - "name": "mimikatz.exe", + "name": "lsass.exe", "parent": "B", "stats": Object { "byCategory": Object {}, @@ -133,11 +133,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "E", - "process.name": "powershell.exe", + "process.name": "mimikatz.exe", "process.parent.entity_id": "B", }, "id": "E", - "name": "powershell.exe", + "name": "mimikatz.exe", "parent": "B", "stats": Object { "byCategory": Object {}, @@ -148,11 +148,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "F", - "process.name": "explorer.exe", + "process.name": "powershell.exe", "process.parent.entity_id": "C", }, "id": "F", - "name": "explorer.exe", + "name": "powershell.exe", "parent": "C", "stats": Object { "byCategory": Object {}, @@ -178,11 +178,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "H", - "process.name": "lsass.exe", + "process.name": "notepad.exe", "process.parent.entity_id": "G", }, "id": "H", - "name": "lsass.exe", + "name": "notepad.exe", "parent": "G", "stats": Object { "byCategory": Object {}, @@ -439,11 +439,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "A", - "process.name": "lsass.exe", + "process.name": "mimikatz.exe", "process.parent.entity_id": "", }, "id": "A", - "name": "lsass.exe", + "name": "mimikatz.exe", "parent": undefined, "stats": Object { "byCategory": Object {}, @@ -457,11 +457,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "B", - "process.name": "powershell.exe", + "process.name": "lsass.exe", "process.parent.entity_id": "A", }, "id": "B", - "name": "powershell.exe", + "name": "lsass.exe", "parent": "A", "stats": Object { "byCategory": Object {}, @@ -475,11 +475,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "C", - "process.name": "iexlorer.exe", + "process.name": "lsass.exe", "process.parent.entity_id": "A", }, "id": "C", - "name": "iexlorer.exe", + "name": "lsass.exe", "parent": "A", "stats": Object { "byCategory": Object {}, @@ -493,11 +493,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "I", - "process.name": "explorer.exe", + "process.name": "notepad.exe", "process.parent.entity_id": "A", }, "id": "I", - "name": "explorer.exe", + "name": "notepad.exe", "parent": "A", "stats": Object { "byCategory": Object {}, @@ -511,11 +511,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "D", - "process.name": "mimikatz.exe", + "process.name": "lsass.exe", "process.parent.entity_id": "B", }, "id": "D", - "name": "mimikatz.exe", + "name": "lsass.exe", "parent": "B", "stats": Object { "byCategory": Object {}, @@ -529,11 +529,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "E", - "process.name": "powershell.exe", + "process.name": "mimikatz.exe", "process.parent.entity_id": "B", }, "id": "E", - "name": "powershell.exe", + "name": "mimikatz.exe", "parent": "B", "stats": Object { "byCategory": Object {}, @@ -547,11 +547,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "F", - "process.name": "explorer.exe", + "process.name": "powershell.exe", "process.parent.entity_id": "C", }, "id": "F", - "name": "explorer.exe", + "name": "powershell.exe", "parent": "C", "stats": Object { "byCategory": Object {}, @@ -583,11 +583,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "H", - "process.name": "lsass.exe", + "process.name": "notepad.exe", "process.parent.entity_id": "G", }, "id": "H", - "name": "lsass.exe", + "name": "notepad.exe", "parent": "G", "stats": Object { "byCategory": Object {}, @@ -608,11 +608,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "A", - "process.name": "explorer.exe", + "process.name": "mimikatz.exe", "process.parent.entity_id": "", }, "id": "A", - "name": "explorer.exe", + "name": "mimikatz.exe", "parent": undefined, "stats": Object { "byCategory": Object {}, @@ -623,11 +623,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "B", - "process.name": "iexlorer.exe", + "process.name": "mimikatz.exe", "process.parent.entity_id": "A", }, "id": "B", - "name": "iexlorer.exe", + "name": "mimikatz.exe", "parent": "A", "stats": Object { "byCategory": Object {}, @@ -661,11 +661,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "A", - "process.name": "explorer.exe", + "process.name": "mimikatz.exe", "process.parent.entity_id": "", }, "id": "A", - "name": "explorer.exe", + "name": "mimikatz.exe", "parent": undefined, "stats": Object { "byCategory": Object {}, @@ -679,11 +679,11 @@ Object { "data": Object { "@timestamp": 1606234833273, "process.entity_id": "B", - "process.name": "iexlorer.exe", + "process.name": "mimikatz.exe", "process.parent.entity_id": "A", }, "id": "B", - "name": "iexlorer.exe", + "name": "mimikatz.exe", "parent": "A", "stats": Object { "byCategory": Object {}, diff --git a/x-pack/plugins/security_solution/public/timelines/containers/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/containers/index.test.tsx index dd032016088b6..ee4af121dd054 100644 --- a/x-pack/plugins/security_solution/public/timelines/containers/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/containers/index.test.tsx @@ -35,6 +35,7 @@ jest.mock('../../common/lib/kibana', () => ({ addError: jest.fn(), addSuccess: jest.fn(), addWarning: jest.fn(), + remove: jest.fn(), }), useKibana: jest.fn().mockReturnValue({ services: { diff --git a/x-pack/plugins/security_solution/server/features.ts b/x-pack/plugins/security_solution/server/features.ts index 340c4c54c5fc6..375f66a36c3ac 100644 --- a/x-pack/plugins/security_solution/server/features.ts +++ b/x-pack/plugins/security_solution/server/features.ts @@ -133,6 +133,9 @@ export const getKibanaPrivilegesFeaturePrivileges = (ruleTypes: string[]): Kiban rule: { all: ruleTypes, }, + alert: { + all: ruleTypes, + }, }, management: { insightsAndAlerting: ['triggersActions'], @@ -156,6 +159,9 @@ export const getKibanaPrivilegesFeaturePrivileges = (ruleTypes: string[]): Kiban rule: { read: ruleTypes, }, + alert: { + all: ruleTypes, + }, }, management: { insightsAndAlerting: ['triggersActions'], 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 8e2f0da4e65c9..9f4670e3c252a 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 @@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { ALERT_WORKFLOW_STATUS } from '@kbn/rule-data-utils'; import { ruleTypeMappings } from '@kbn/securitysolution-rules'; -import { SavedObjectsFindResponse } from '@kbn/core/server'; +import { SavedObjectsFindResponse, SavedObjectsFindResult } from '@kbn/core/server'; import { ActionResult } from '@kbn/actions-plugin/server'; import { @@ -49,6 +49,8 @@ import { } from '../../../../../common/detection_engine/schemas/common'; // eslint-disable-next-line no-restricted-imports import type { LegacyRuleNotificationAlertType } from '../../notifications/legacy_types'; +// eslint-disable-next-line no-restricted-imports +import { LegacyIRuleActionsAttributes } from '../../rule_actions/legacy_types'; import { RuleExecutionSummariesByRuleId } from '../../rule_execution_log'; export const typicalSetStatusSignalByIdsPayload = (): SetSignalsStatusSchemaDecoded => ({ @@ -575,7 +577,7 @@ export const getAggregateExecutionEvents = (): GetAggregateRuleExecutionEventsRe timed_out: false, indexing_duration_ms: 7, search_duration_ms: 551, - gap_duration_ms: 0, + gap_duration_s: 0, security_status: 'succeeded', security_message: 'succeeded', }, @@ -598,7 +600,7 @@ export const getAggregateExecutionEvents = (): GetAggregateRuleExecutionEventsRe timed_out: false, indexing_duration_ms: 0, search_duration_ms: 0, - gap_duration_ms: 0, + gap_duration_s: 0, security_status: 'partial failure', security_message: 'Check privileges failed to execute ResponseError: index_not_found_exception: [index_not_found_exception] Reason: no such index [broken-index] name: "This Rule Makes Alerts, Actions, AND Moar!" id: "f78f3550-a186-11ec-89a1-0bce95157aba" rule id: "b64b4540-d035-4826-a1e7-f505bf4b9653" execution id: "254d8400-9dc7-43c5-ad4b-227273d1a44b" space ID: "default"', @@ -688,14 +690,20 @@ export const getSignalsMigrationStatusRequest = () => /** * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function */ -export const legacyGetNotificationResult = (): LegacyRuleNotificationAlertType => ({ - id: '200dbf2f-b269-4bf9-aa85-11ba32ba73ba', +export const legacyGetNotificationResult = ({ + id = '456', + ruleId = '123', +}: { + id?: string; + ruleId?: string; +} = {}): LegacyRuleNotificationAlertType => ({ + id, name: 'Notification for Rule Test', tags: [], alertTypeId: 'siem.notifications', consumer: 'siem', params: { - ruleAlertId: '85b64e8a-2e40-4096-86af-5ac172c10825', + ruleAlertId: `${ruleId}`, }, schedule: { interval: '5m', @@ -732,10 +740,357 @@ export const legacyGetNotificationResult = (): LegacyRuleNotificationAlertType = /** * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function */ -export const legacyGetFindNotificationsResultWithSingleHit = - (): FindHit => ({ +export const legacyGetHourlyNotificationResult = ( + id = '456', + ruleId = '123' +): LegacyRuleNotificationAlertType => ({ + id, + name: 'Notification for Rule Test', + tags: [], + alertTypeId: 'siem.notifications', + consumer: 'siem', + params: { + ruleAlertId: `${ruleId}`, + }, + schedule: { + interval: '1h', + }, + enabled: true, + actions: [ + { + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + actionTypeId: '.email', + id: '99403909-ca9b-49ba-9d7a-7e5320e68d05', + }, + ], + throttle: null, + notifyWhen: 'onActiveAlert', + 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'), + }, +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetDailyNotificationResult = ( + id = '456', + ruleId = '123' +): LegacyRuleNotificationAlertType => ({ + id, + name: 'Notification for Rule Test', + tags: [], + alertTypeId: 'siem.notifications', + consumer: 'siem', + params: { + ruleAlertId: `${ruleId}`, + }, + schedule: { + interval: '1d', + }, + enabled: true, + actions: [ + { + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + actionTypeId: '.email', + id: '99403909-ca9b-49ba-9d7a-7e5320e68d05', + }, + ], + throttle: null, + notifyWhen: 'onActiveAlert', + 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'), + }, +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetWeeklyNotificationResult = ( + id = '456', + ruleId = '123' +): LegacyRuleNotificationAlertType => ({ + id, + name: 'Notification for Rule Test', + tags: [], + alertTypeId: 'siem.notifications', + consumer: 'siem', + params: { + ruleAlertId: `${ruleId}`, + }, + schedule: { + interval: '7d', + }, + enabled: true, + actions: [ + { + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + actionTypeId: '.email', + id: '99403909-ca9b-49ba-9d7a-7e5320e68d05', + }, + ], + throttle: null, + notifyWhen: 'onActiveAlert', + 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'), + }, +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetFindNotificationsResultWithSingleHit = ( + ruleId = '123' +): FindHit => ({ + page: 1, + perPage: 1, + total: 1, + data: [legacyGetNotificationResult({ ruleId })], +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetSiemNotificationRuleNoActionsSOResult = ( + ruleId = '123' +): SavedObjectsFindResult => ({ + type: 'siem-detection-engine-rule-actions', + id: 'ID_OF_LEGACY_SIDECAR_NO_ACTIONS', + namespaces: ['default'], + attributes: { + actions: [], + ruleThrottle: 'no_actions', + alertThrottle: null, + }, + references: [{ id: ruleId, type: 'alert', name: 'alert_0' }], + migrationVersion: { + 'siem-detection-engine-rule-actions': '7.11.2', + }, + coreMigrationVersion: '7.15.2', + updated_at: '2022-03-31T19:06:40.473Z', + version: 'WzIzNywxXQ==', + score: 0, +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetSiemNotificationRuleEveryRunSOResult = ( + ruleId = '123' +): SavedObjectsFindResult => ({ + type: 'siem-detection-engine-rule-actions', + id: 'ID_OF_LEGACY_SIDECAR_RULE_RUN_ACTIONS', + namespaces: ['default'], + attributes: { + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + action_type_id: '.email', + }, + ], + ruleThrottle: 'rule', + alertThrottle: null, + }, + references: [{ id: ruleId, type: 'alert', name: 'alert_0' }], + migrationVersion: { + 'siem-detection-engine-rule-actions': '7.11.2', + }, + coreMigrationVersion: '7.15.2', + updated_at: '2022-03-31T19:06:40.473Z', + version: 'WzIzNywxXQ==', + score: 0, +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetSiemNotificationRuleHourlyActionsSOResult = ( + ruleId = '123', + connectorId = '456' +): SavedObjectsFindResult => ({ + type: 'siem-detection-engine-rule-actions', + id: 'ID_OF_LEGACY_SIDECAR_HOURLY_ACTIONS', + namespaces: ['default'], + attributes: { + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + action_type_id: '.email', + }, + ], + ruleThrottle: '1h', + alertThrottle: '1h', + }, + references: [ + { id: ruleId, type: 'alert', name: 'alert_0' }, + { id: connectorId, type: 'action', name: 'action_0' }, + ], + migrationVersion: { + 'siem-detection-engine-rule-actions': '7.11.2', + }, + coreMigrationVersion: '7.15.2', + updated_at: '2022-03-31T19:06:40.473Z', + version: 'WzIzNywxXQ==', + score: 0, +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetSiemNotificationRuleDailyActionsSOResult = ( + ruleId = '123', + connectorId = '456' +): SavedObjectsFindResult => ({ + type: 'siem-detection-engine-rule-actions', + id: 'ID_OF_LEGACY_SIDECAR_DAILY_ACTIONS', + namespaces: ['default'], + attributes: { + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + action_type_id: '.email', + }, + ], + ruleThrottle: '1d', + alertThrottle: '1d', + }, + references: [ + { id: ruleId, type: 'alert', name: 'alert_0' }, + { id: connectorId, type: 'action', name: 'action_0' }, + ], + migrationVersion: { + 'siem-detection-engine-rule-actions': '7.11.2', + }, + coreMigrationVersion: '7.15.2', + updated_at: '2022-03-31T19:06:40.473Z', + version: 'WzIzNywxXQ==', + score: 0, +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetSiemNotificationRuleWeeklyActionsSOResult = ( + ruleId = '123', + connectorId = '456' +): SavedObjectsFindResult => ({ + type: 'siem-detection-engine-rule-actions', + id: 'ID_OF_LEGACY_SIDECAR_WEEKLY_ACTIONS', + namespaces: ['default'], + attributes: { + actions: [ + { + group: 'default', + actionRef: 'action_0', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + action_type_id: '.email', + }, + ], + ruleThrottle: '7d', + alertThrottle: '7d', + }, + references: [ + { id: ruleId, type: 'alert', name: 'alert_0' }, + { id: connectorId, type: 'action', name: 'action_0' }, + ], + migrationVersion: { + 'siem-detection-engine-rule-actions': '7.11.2', + }, + coreMigrationVersion: '7.15.2', + updated_at: '2022-03-31T19:06:40.473Z', + version: 'WzIzNywxXQ==', + score: 0, +}); + +const getLegacyActionSOs = (ruleId = '123', connectorId = '456') => ({ + none: () => legacyGetSiemNotificationRuleNoActionsSOResult(ruleId), + rule: () => legacyGetSiemNotificationRuleEveryRunSOResult(ruleId), + hourly: () => legacyGetSiemNotificationRuleHourlyActionsSOResult(ruleId, connectorId), + daily: () => legacyGetSiemNotificationRuleDailyActionsSOResult(ruleId, connectorId), + weekly: () => legacyGetSiemNotificationRuleWeeklyActionsSOResult(ruleId, connectorId), +}); + +/** + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const legacyGetSiemNotificationRuleActionsSOResultWithSingleHit = ( + actionTypes: Array<'none' | 'rule' | 'daily' | 'hourly' | 'weekly'>, + ruleId = '123', + connectorId = '456' +): SavedObjectsFindResponse => { + const actions = getLegacyActionSOs(ruleId, connectorId); + + return { page: 1, - perPage: 1, + per_page: 1, total: 1, - data: [legacyGetNotificationResult()], - }); + saved_objects: actionTypes.map((type) => actions[type]()), + }; +}; 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 327b8afb46b5d..8db750ba220af 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 @@ -21,6 +21,15 @@ import { installPrepackagedTimelines } from '../../../timeline/routes/prepackage // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { elasticsearchClientMock } from '@kbn/core/server/elasticsearch/client/mocks'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; +import { legacyMigrate } from '../../rules/utils'; + +jest.mock('../../rules/utils', () => { + const actual = jest.requireActual('../../rules/utils'); + return { + ...actual, + legacyMigrate: jest.fn(), + }; +}); jest.mock('../../rules/get_prepackaged_rules', () => { return { @@ -92,6 +101,8 @@ describe('add_prepackaged_rules_route', () => { errors: [], }); + (legacyMigrate as jest.Mock).mockResolvedValue(getRuleMock(getQueryRuleParams())); + context.core.elasticsearch.client.asCurrentUser.search.mockResolvedValue( elasticsearchClientMock.createSuccessTransportRequestPromise(getBasicEmptySearchResponse()) ); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.test.ts index 83a40005d0148..85c324008856c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.test.ts @@ -13,10 +13,20 @@ import { getFindResultWithSingleHit, getDeleteRequestById, getEmptySavedObjectsResponse, + getRuleMock, } from '../__mocks__/request_responses'; import { requestContextMock, serverMock, requestMock } from '../__mocks__'; import { deleteRulesRoute } from './delete_rules_route'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; +import { legacyMigrate } from '../../rules/utils'; + +jest.mock('../../rules/utils', () => { + const actual = jest.requireActual('../../rules/utils'); + return { + ...actual, + legacyMigrate: jest.fn(), + }; +}); describe('delete_rules', () => { let server: ReturnType; @@ -29,6 +39,8 @@ describe('delete_rules', () => { clients.rulesClient.find.mockResolvedValue(getFindResultWithSingleHit()); clients.savedObjectsClient.find.mockResolvedValue(getEmptySavedObjectsResponse()); + (legacyMigrate as jest.Mock).mockResolvedValue(getRuleMock(getQueryRuleParams())); + deleteRulesRoute(server.router); }); @@ -54,6 +66,7 @@ describe('delete_rules', () => { test('returns 404 when deleting a single rule that does not exist with a valid actionClient and alertClient', async () => { clients.rulesClient.find.mockResolvedValue(getEmptyFindResult()); + (legacyMigrate as jest.Mock).mockResolvedValue(null); const response = await server.inject( getDeleteRequest(), requestContextMock.convertContext(context) diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/get_rule_execution_events_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/get_rule_execution_events_route.test.ts index 37b1f41328674..c59a0e4dfe176 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/get_rule_execution_events_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/get_rule_execution_events_route.test.ts @@ -12,8 +12,6 @@ import { } from '../__mocks__/request_responses'; import { getRuleExecutionEventsRoute } from './get_rule_execution_events_route'; -// TODO: Add additional tests for param validation - describe('getRuleExecutionEventsRoute', () => { let server: ReturnType; let { clients, context } = requestContextMock.createTools(); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.test.ts index 6abac6e946380..fa75be49a61c5 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.test.ts @@ -23,9 +23,18 @@ import { patchRulesBulkRoute } from './patch_rules_bulk_route'; import { getCreateRulesSchemaMock } from '../../../../../common/detection_engine/schemas/request/rule_schemas.mock'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; import { loggingSystemMock } from '@kbn/core/server/mocks'; +import { legacyMigrate } from '../../rules/utils'; jest.mock('../../../machine_learning/authz', () => mockMlAuthzFactory.create()); +jest.mock('../../rules/utils', () => { + const actual = jest.requireActual('../../rules/utils'); + return { + ...actual, + legacyMigrate: jest.fn(), + }; +}); + describe('patch_rules_bulk', () => { let server: ReturnType; let { clients, context } = requestContextMock.createTools(); @@ -40,6 +49,8 @@ describe('patch_rules_bulk', () => { clients.rulesClient.find.mockResolvedValue(getFindResultWithSingleHit()); // rule exists clients.rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); // update succeeds + (legacyMigrate as jest.Mock).mockResolvedValue(getRuleMock(getQueryRuleParams())); + patchRulesBulkRoute(server.router, ml, logger); }); @@ -54,6 +65,7 @@ describe('patch_rules_bulk', () => { test('returns an error in the response when updating a single rule that does not exist', async () => { clients.rulesClient.find.mockResolvedValue(getEmptyFindResult()); + (legacyMigrate as jest.Mock).mockResolvedValue(null); const response = await server.inject( getPatchBulkRequest(), requestContextMock.convertContext(context) @@ -148,6 +160,8 @@ describe('patch_rules_bulk', () => { describe('request validation', () => { test('rejects payloads with no ID', async () => { + (legacyMigrate as jest.Mock).mockResolvedValue(null); + const request = requestMock.create({ method: 'patch', path: DETECTION_ENGINE_RULES_BULK_UPDATE, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.test.ts index cbcf5540b4f15..87c2e79922457 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.test.ts @@ -21,9 +21,18 @@ import { requestContextMock, serverMock, requestMock } from '../__mocks__'; import { patchRulesRoute } from './patch_rules_route'; import { getPatchRulesSchemaMock } from '../../../../../common/detection_engine/schemas/request/patch_rules_schema.mock'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; +import { legacyMigrate } from '../../rules/utils'; jest.mock('../../../machine_learning/authz', () => mockMlAuthzFactory.create()); +jest.mock('../../rules/utils', () => { + const actual = jest.requireActual('../../rules/utils'); + return { + ...actual, + legacyMigrate: jest.fn(), + }; +}); + describe('patch_rules', () => { let server: ReturnType; let { clients, context } = requestContextMock.createTools(); @@ -41,6 +50,8 @@ describe('patch_rules', () => { getRuleExecutionSummarySucceeded() ); + (legacyMigrate as jest.Mock).mockResolvedValue(getRuleMock(getQueryRuleParams())); + patchRulesRoute(server.router, ml); }); @@ -55,6 +66,7 @@ describe('patch_rules', () => { test('returns 404 when updating a single rule that does not exist', async () => { clients.rulesClient.find.mockResolvedValue(getEmptyFindResult()); + (legacyMigrate as jest.Mock).mockResolvedValue(null); const response = await server.inject( getPatchRequest(), requestContextMock.convertContext(context) @@ -67,6 +79,7 @@ describe('patch_rules', () => { }); test('returns error if requesting a non-rule', async () => { + (legacyMigrate as jest.Mock).mockResolvedValue(null); clients.rulesClient.find.mockResolvedValue(nonRuleFindResult()); const response = await server.inject( getPatchRequest(), diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/perform_bulk_action_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/perform_bulk_action_route.test.ts index 3dc8ab5199c7f..4c50ee58e2d7f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/perform_bulk_action_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/perform_bulk_action_route.test.ts @@ -14,6 +14,7 @@ import { getBulkActionEditRequest, getFindResultWithSingleHit, getFindResultWithMultiHits, + getRuleMock, } from '../__mocks__/request_responses'; import { requestContextMock, serverMock, requestMock } from '../__mocks__'; import { performBulkActionRoute } from './perform_bulk_action_route'; @@ -23,10 +24,20 @@ import { } from '../../../../../common/detection_engine/schemas/request/perform_bulk_action_schema.mock'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import { readRules } from '../../rules/read_rules'; +import { legacyMigrate } from '../../rules/utils'; +import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; jest.mock('../../../machine_learning/authz', () => mockMlAuthzFactory.create()); jest.mock('../../rules/read_rules', () => ({ readRules: jest.fn() })); +jest.mock('../../rules/utils', () => { + const actual = jest.requireActual('../../rules/utils'); + return { + ...actual, + legacyMigrate: jest.fn(), + }; +}); + describe('perform_bulk_action', () => { const readRulesMock = readRules as jest.Mock; let server: ReturnType; @@ -40,6 +51,8 @@ describe('perform_bulk_action', () => { logger = loggingSystemMock.createLogger(); ({ clients, context } = requestContextMock.createTools()); ml = mlServicesMock.createSetupContract(); + (legacyMigrate as jest.Mock).mockResolvedValue(getRuleMock(getQueryRuleParams())); + clients.rulesClient.find.mockResolvedValue(getFindResultWithSingleHit()); performBulkActionRoute(server.router, ml, logger); }); @@ -220,7 +233,10 @@ describe('perform_bulk_action', () => { readRulesMock.mockImplementationOnce(() => Promise.resolve({ ...mockRule, params: { ...mockRule.params, type: 'machine_learning' } }) ); - + (legacyMigrate as jest.Mock).mockResolvedValue({ + ...mockRule, + params: { ...mockRule.params, type: 'machine_learning' }, + }); const request = requestMock.create({ method: 'patch', path: DETECTION_ENGINE_RULES_BULK_ACTION, @@ -271,7 +287,10 @@ describe('perform_bulk_action', () => { readRulesMock.mockImplementationOnce(() => Promise.resolve({ ...mockRule, params: { ...mockRule.params, index: ['index-*'] } }) ); - + (legacyMigrate as jest.Mock).mockResolvedValue({ + ...mockRule, + params: { ...mockRule.params, index: ['index-*'] }, + }); const request = requestMock.create({ method: 'patch', path: DETECTION_ENGINE_RULES_BULK_ACTION, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.test.ts index 88720646fa6cd..e0c9289a562e7 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.test.ts @@ -21,9 +21,18 @@ import { BulkError } from '../utils'; import { getCreateRulesSchemaMock } from '../../../../../common/detection_engine/schemas/request/rule_schemas.mock'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; import { loggingSystemMock } from '@kbn/core/server/mocks'; +import { legacyMigrate } from '../../rules/utils'; jest.mock('../../../machine_learning/authz', () => mockMlAuthzFactory.create()); +jest.mock('../../rules/utils', () => { + const actual = jest.requireActual('../../rules/utils'); + return { + ...actual, + legacyMigrate: jest.fn(), + }; +}); + describe('update_rules_bulk', () => { let server: ReturnType; let { clients, context } = requestContextMock.createTools(); @@ -40,6 +49,8 @@ describe('update_rules_bulk', () => { clients.appClient.getSignalsIndex.mockReturnValue('.siem-signals-test-index'); + (legacyMigrate as jest.Mock).mockResolvedValue(getRuleMock(getQueryRuleParams())); + updateRulesBulkRoute(server.router, ml, logger); }); @@ -54,6 +65,8 @@ describe('update_rules_bulk', () => { test('returns 200 as a response when updating a single rule that does not exist', async () => { clients.rulesClient.find.mockResolvedValue(getEmptyFindResult()); + (legacyMigrate as jest.Mock).mockResolvedValue(null); + const expected: BulkError[] = [ { error: { message: 'rule_id: "rule-1" not found', status_code: 404 }, @@ -116,6 +129,8 @@ describe('update_rules_bulk', () => { describe('request validation', () => { test('rejects payloads with no ID', async () => { + (legacyMigrate as jest.Mock).mockResolvedValue(null); + const noIdRequest = requestMock.create({ method: 'put', path: DETECTION_ENGINE_RULES_BULK_UPDATE, 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 39040f4c9c4fc..7f2d5c3bde7e0 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 @@ -21,9 +21,18 @@ import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; import { updateRulesRoute } from './update_rules_route'; import { getUpdateRulesSchemaMock } from '../../../../../common/detection_engine/schemas/request/rule_schemas.mock'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; +import { legacyMigrate } from '../../rules/utils'; jest.mock('../../../machine_learning/authz', () => mockMlAuthzFactory.create()); +jest.mock('../../rules/utils', () => { + const actual = jest.requireActual('../../rules/utils'); + return { + ...actual, + legacyMigrate: jest.fn(), + }; +}); + describe('update_rules', () => { let server: ReturnType; let { clients, context } = requestContextMock.createTools(); @@ -42,6 +51,8 @@ describe('update_rules', () => { ); clients.appClient.getSignalsIndex.mockReturnValue('.siem-signals-test-index'); + (legacyMigrate as jest.Mock).mockResolvedValue(getRuleMock(getQueryRuleParams())); + updateRulesRoute(server.router, ml); }); @@ -56,6 +67,7 @@ describe('update_rules', () => { test('returns 404 when updating a single rule that does not exist', async () => { clients.rulesClient.find.mockResolvedValue(getEmptyFindResult()); + (legacyMigrate as jest.Mock).mockResolvedValue(null); const response = await server.inject( getUpdateRequest(), requestContextMock.convertContext(context) @@ -69,6 +81,7 @@ describe('update_rules', () => { }); test('returns error when updating non-rule', async () => { + (legacyMigrate as jest.Mock).mockResolvedValue(null); clients.rulesClient.find.mockResolvedValue(nonRuleFindResult()); const response = await server.inject( getUpdateRequest(), diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/client_for_routes/client_interface.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/client_for_routes/client_interface.ts index 8d0cae91f1987..3f353732abbc5 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/client_for_routes/client_interface.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/client_for_routes/client_interface.ts @@ -9,7 +9,7 @@ import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { ExecutionLogTableSortColumns, RuleExecutionEvent, - RuleExecutionStatusType, + RuleExecutionStatus, RuleExecutionSummary, } from '../../../../../common/detection_engine/schemas/common'; import { GetAggregateRuleExecutionEventsResponse } from '../../../../../common/detection_engine/schemas/response'; @@ -19,7 +19,7 @@ export interface GetAggregateExecutionEventsArgs { start: string; end: string; queryText: string; - statusFilters: RuleExecutionStatusType[]; + statusFilters: RuleExecutionStatus[]; page: number; perPage: number; sortField: ExecutionLogTableSortColumns; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/event_log_reader.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/event_log_reader.ts index 78e8e62702d47..20cc2f0e78c77 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/event_log_reader.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/event_log_reader.ts @@ -6,8 +6,8 @@ */ import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { MAX_EXECUTION_EVENTS_DISPLAYED } from '@kbn/securitysolution-rules'; import { IEventLogClient } from '@kbn/event-log-plugin/server'; +import { MAX_EXECUTION_EVENTS_DISPLAYED } from '@kbn/securitysolution-rules'; import { RuleExecutionEvent, @@ -18,13 +18,14 @@ import { invariant } from '../../../../../common/utils/invariant'; import { withSecuritySpan } from '../../../../utils/with_security_span'; import { GetAggregateExecutionEventsArgs } from '../client_for_routes/client_interface'; import { - RULE_SAVED_OBJECT_TYPE, RULE_EXECUTION_LOG_PROVIDER, + RULE_SAVED_OBJECT_TYPE, RuleExecutionLogAction, } from './constants'; import { formatExecutionEventResponse, getExecutionEventAggregation, + mapRuleExecutionStatusToPlatformStatus, } from './get_execution_event_aggregation'; import { EXECUTION_UUID_FIELD, @@ -62,10 +63,15 @@ export const createEventLogReader = (eventLog: IEventLogClient): IEventLogReader let totalExecutions: number | undefined; // If 0 or 3 statuses are selected we can search for all statuses and don't need this pre-filter by ID if (statusFilters.length > 0 && statusFilters.length < 3) { + const outcomes = mapRuleExecutionStatusToPlatformStatus(statusFilters); + const outcomeFilter = outcomes.length ? `OR event.outcome:(${outcomes.join(' OR ')})` : ''; const statusResults = await eventLog.aggregateEventsBySavedObjectIds(soType, soIds, { start, end, - filter: `kibana.alert.rule.execution.status:(${statusFilters.join(' OR ')})`, + // Also query for `event.outcome` to catch executions that only contain platform events + filter: `kibana.alert.rule.execution.status:(${statusFilters.join( + ' OR ' + )}) ${outcomeFilter}`, aggs: { totalExecutions: { cardinality: { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/get_execution_event_aggregation/index.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/get_execution_event_aggregation/index.test.ts index 7cee84cd64594..dcd592d7a70fc 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/get_execution_event_aggregation/index.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/get_execution_event_aggregation/index.test.ts @@ -12,6 +12,7 @@ * 2.0. */ +import { RuleExecutionStatus } from '../../../../../../common/detection_engine/schemas/common'; import { MAX_EXECUTION_EVENTS_DISPLAYED } from '@kbn/securitysolution-rules'; import { @@ -20,6 +21,8 @@ import { formatSortForTermsSort, getExecutionEventAggregation, getProviderAndActionFilter, + mapPlatformStatusToRuleExecutionStatus, + mapRuleExecutionStatusToPlatformStatus, } from '.'; describe('getExecutionEventAggregation', () => { @@ -69,7 +72,7 @@ describe('getExecutionEventAggregation', () => { sort: [{ notsortable: { order: 'asc' } }], }); }).toThrowErrorMatchingInlineSnapshot( - `"Invalid sort field \\"notsortable\\" - must be one of [timestamp,duration_ms,indexing_duration_ms,search_duration_ms,gap_duration_ms,schedule_delay_ms,num_triggered_actions]"` + `"Invalid sort field \\"notsortable\\" - must be one of [timestamp,duration_ms,indexing_duration_ms,search_duration_ms,gap_duration_s,schedule_delay_ms,num_triggered_actions]"` ); }); @@ -82,7 +85,7 @@ describe('getExecutionEventAggregation', () => { sort: [{ notsortable: { order: 'asc' } }, { timestamp: { order: 'asc' } }], }); }).toThrowErrorMatchingInlineSnapshot( - `"Invalid sort field \\"notsortable\\" - must be one of [timestamp,duration_ms,indexing_duration_ms,search_duration_ms,gap_duration_ms,schedule_delay_ms,num_triggered_actions]"` + `"Invalid sort field \\"notsortable\\" - must be one of [timestamp,duration_ms,indexing_duration_ms,search_duration_ms,gap_duration_s,schedule_delay_ms,num_triggered_actions]"` ); }); @@ -206,7 +209,7 @@ describe('getExecutionEventAggregation', () => { top_hits: { size: 1, _source: { - includes: ['event.outcome', 'message'], + includes: ['error.message', 'event.outcome', 'message'], }, }, }, @@ -647,7 +650,7 @@ describe('formatExecutionEventResponse', () => { timed_out: false, indexing_duration_ms: 7, search_duration_ms: 480, - gap_duration_ms: 0, + gap_duration_s: 0, security_status: 'succeeded', security_message: 'succeeded', }, @@ -670,7 +673,7 @@ describe('formatExecutionEventResponse', () => { timed_out: false, indexing_duration_ms: 0, search_duration_ms: 9, - gap_duration_ms: 0, + gap_duration_s: 0, security_status: 'succeeded', security_message: 'succeeded', }, @@ -965,7 +968,7 @@ describe('formatExecutionEventResponse', () => { timed_out: true, indexing_duration_ms: 7, search_duration_ms: 480, - gap_duration_ms: 0, + gap_duration_s: 0, security_status: 'succeeded', security_message: 'succeeded', }, @@ -988,7 +991,7 @@ describe('formatExecutionEventResponse', () => { timed_out: false, indexing_duration_ms: 0, search_duration_ms: 9, - gap_duration_ms: 0, + gap_duration_s: 0, security_status: 'succeeded', security_message: 'succeeded', }, @@ -1288,7 +1291,7 @@ describe('formatExecutionEventResponse', () => { timed_out: true, indexing_duration_ms: 7, search_duration_ms: 480, - gap_duration_ms: 0, + gap_duration_s: 0, security_status: 'succeeded', security_message: 'succeeded', }, @@ -1311,7 +1314,7 @@ describe('formatExecutionEventResponse', () => { timed_out: false, indexing_duration_ms: 0, search_duration_ms: 9, - gap_duration_ms: 0, + gap_duration_s: 0, security_status: 'succeeded', security_message: 'succeeded', }, @@ -1319,3 +1322,53 @@ describe('formatExecutionEventResponse', () => { }); }); }); + +describe('mapRuleStatusToPlatformStatus', () => { + test('should correctly translate empty array to empty array', () => { + expect(mapRuleExecutionStatusToPlatformStatus([])).toEqual([]); + }); + + test('should correctly translate RuleExecutionStatus.failed to `failure` platform status', () => { + expect(mapRuleExecutionStatusToPlatformStatus([RuleExecutionStatus.failed])).toEqual([ + 'failure', + ]); + }); + + test('should correctly translate RuleExecutionStatus.succeeded to `success` platform status', () => { + expect(mapRuleExecutionStatusToPlatformStatus([RuleExecutionStatus.succeeded])).toEqual([ + 'success', + ]); + }); + + test('should correctly translate RuleExecutionStatus.["going to run"] to empty array platform status', () => { + expect(mapRuleExecutionStatusToPlatformStatus([RuleExecutionStatus['going to run']])).toEqual( + [] + ); + }); + + test("should correctly translate multiple RuleExecutionStatus's to platform statuses", () => { + expect( + mapRuleExecutionStatusToPlatformStatus([ + RuleExecutionStatus.succeeded, + RuleExecutionStatus.failed, + RuleExecutionStatus['going to run'], + ]).sort() + ).toEqual(['failure', 'success']); + }); +}); + +describe('mapPlatformStatusToRuleExecutionStatus', () => { + test('should correctly translate `invalid` platform status to `undefined`', () => { + expect(mapPlatformStatusToRuleExecutionStatus('')).toEqual(undefined); + }); + + test('should correctly translate `failure` platform status to `RuleExecutionStatus.failed`', () => { + expect(mapPlatformStatusToRuleExecutionStatus('failure')).toEqual(RuleExecutionStatus.failed); + }); + + test('should correctly translate `success` platform status to `RuleExecutionStatus.succeeded`', () => { + expect(mapPlatformStatusToRuleExecutionStatus('success')).toEqual( + RuleExecutionStatus.succeeded + ); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/get_execution_event_aggregation/index.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/get_execution_event_aggregation/index.ts index 4cf8e0bd5f1dc..dcf2fbfe911bd 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/get_execution_event_aggregation/index.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_execution_log/event_log/get_execution_event_aggregation/index.ts @@ -10,7 +10,10 @@ import { BadRequestError } from '@kbn/securitysolution-es-utils'; import { flatMap, get } from 'lodash'; import { MAX_EXECUTION_EVENTS_DISPLAYED } from '@kbn/securitysolution-rules'; import { AggregateEventsBySavedObjectResult } from '@kbn/event-log-plugin/server'; -import { AggregateRuleExecutionEvent } from '../../../../../../common/detection_engine/schemas/common'; +import { + AggregateRuleExecutionEvent, + RuleExecutionStatus, +} from '../../../../../../common/detection_engine/schemas/common'; import { GetAggregateRuleExecutionEventsResponse } from '../../../../../../common/detection_engine/schemas/response'; import { ExecutionEventAggregationOptions, @@ -22,6 +25,7 @@ import { // Base ECS fields const ACTION_FIELD = 'event.action'; const DURATION_FIELD = 'event.duration'; +const ERROR_MESSAGE_FIELD = 'error.message'; const MESSAGE_FIELD = 'message'; const PROVIDER_FIELD = 'event.provider'; const OUTCOME_FIELD = 'event.outcome'; @@ -48,7 +52,7 @@ const SORT_FIELD_TO_AGG_MAPPING: Record = { duration_ms: 'ruleExecution>executionDuration', indexing_duration_ms: 'securityMetrics>indexDuration', search_duration_ms: 'securityMetrics>searchDuration', - gap_duration_ms: 'securityMetrics>gapDuration', + gap_duration_s: 'securityMetrics>gapDuration', schedule_delay_ms: 'ruleExecution>scheduleDelay', num_triggered_actions: 'ruleExecution>numTriggeredActions', // TODO: To be added in https://github.com/elastic/kibana/pull/126210 @@ -166,7 +170,7 @@ export const getExecutionEventAggregation = ({ top_hits: { size: 1, _source: { - includes: [OUTCOME_FIELD, MESSAGE_FIELD], + includes: [ERROR_MESSAGE_FIELD, OUTCOME_FIELD, MESSAGE_FIELD], }, }, }, @@ -293,11 +297,18 @@ export const formatAggExecutionEventFromBucket = ( // security fields indexing_duration_ms: bucket?.securityMetrics?.indexDuration?.value ?? 0, search_duration_ms: bucket?.securityMetrics?.searchDuration?.value ?? 0, - gap_duration_ms: bucket?.securityMetrics?.gapDuration?.value ?? 0, + gap_duration_s: bucket?.securityMetrics?.gapDuration?.value ?? 0, + // If security_status isn't available, use platform status from `event.outcome`, but translate to RuleExecutionStatus security_status: bucket?.securityStatus?.status?.hits?.hits[0]?._source?.kibana?.alert?.rule?.execution - ?.status, - security_message: bucket?.securityStatus?.message?.hits?.hits[0]?._source?.message, + ?.status ?? + mapPlatformStatusToRuleExecutionStatus( + bucket?.ruleExecution?.outcomeAndMessage?.hits?.hits[0]?._source?.event?.outcome + ), + // If security_message isn't available, use `error.message` instead for platform errors since it is more descriptive than `message` + security_message: + bucket?.securityStatus?.message?.hits?.hits[0]?._source?.message ?? + bucket?.ruleExecution?.outcomeAndMessage?.hits?.hits[0]?._source?.error?.message, }; }; @@ -353,3 +364,40 @@ export const formatSortForTermsSort = (sort: estypes.Sort) => { ) ); }; + +/** + * Maps a RuleExecutionStatus[] to string[] of associated platform statuses. Useful for querying specific platform + * events based on security status values + * @param ruleStatuses RuleExecutionStatus[] + */ +export const mapRuleExecutionStatusToPlatformStatus = ( + ruleStatuses: RuleExecutionStatus[] +): string[] => { + return flatMap(ruleStatuses, (rs) => { + switch (rs) { + case RuleExecutionStatus.failed: + return 'failure'; + case RuleExecutionStatus.succeeded: + return 'success'; + default: + return []; + } + }); +}; + +/** + * Maps a platform status string to RuleExecutionStatus + * @param platformStatus string, i.e. `failure` or `success` + */ +export const mapPlatformStatusToRuleExecutionStatus = ( + platformStatus: string +): RuleExecutionStatus | undefined => { + switch (platformStatus) { + case 'failure': + return RuleExecutionStatus.failed; + case 'success': + return RuleExecutionStatus.succeeded; + default: + return undefined; + } +}; 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 96fba6703a537..2a54ce1e976d4 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 @@ -7,14 +7,24 @@ import { rulesClientMock } from '@kbn/alerting-plugin/server/mocks'; import { savedObjectsClientMock } from '@kbn/core/server/mocks'; -import { getFindResultWithSingleHit } from '../routes/__mocks__/request_responses'; +import { getRuleMock, getFindResultWithSingleHit } from '../routes/__mocks__/request_responses'; 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 { ruleExecutionLogMock } from '../rule_execution_log/__mocks__'; +import { legacyMigrate } from './utils'; +import { getQueryRuleParams } from '../schemas/rule_schemas.mock'; jest.mock('./patch_rules'); +jest.mock('./utils', () => { + const actual = jest.requireActual('./utils'); + return { + ...actual, + legacyMigrate: jest.fn(), + }; +}); + describe('updatePrepackagedRules', () => { let rulesClient: ReturnType; let savedObjectsClient: ReturnType; @@ -24,6 +34,8 @@ describe('updatePrepackagedRules', () => { rulesClient = rulesClientMock.create(); savedObjectsClient = savedObjectsClientMock.create(); ruleExecutionLog = ruleExecutionLogMock.forRoutes.create(); + + (legacyMigrate as jest.Mock).mockResolvedValue(getRuleMock(getQueryRuleParams())); }); it('should omit actions and enabled when calling patchRules', async () => { 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 5151a58d0d885..0952da3182e01 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 @@ -13,6 +13,8 @@ import { transformToAlertThrottle, transformFromAlertThrottle, transformActions, + legacyMigrate, + getUpdatedActionsParams, } from './utils'; import { RuleAction, SanitizedRule } from '@kbn/alerting-plugin/common'; import { RuleParams } from '../schemas/rule_schemas'; @@ -23,6 +25,67 @@ import { import { FullResponseSchema } from '../../../../common/detection_engine/schemas/request'; // eslint-disable-next-line no-restricted-imports import { LegacyRuleActions } from '../rule_actions/legacy_types'; +import { + getEmptyFindResult, + legacyGetSiemNotificationRuleActionsSOResultWithSingleHit, + legacyGetDailyNotificationResult, + legacyGetHourlyNotificationResult, + legacyGetWeeklyNotificationResult, +} from '../routes/__mocks__/request_responses'; +import { requestContextMock } from '../routes/__mocks__'; + +const getRuleLegacyActions = (): SanitizedRule => + ({ + id: '123', + notifyWhen: 'onThrottleInterval', + name: 'Simple Rule Query', + tags: ['__internal_rule_id:ruleId', '__internal_immutable:false'], + alertTypeId: 'siem.queryRule', + consumer: 'siem', + enabled: true, + throttle: '1h', + apiKeyOwner: 'elastic', + createdBy: 'elastic', + updatedBy: 'elastic', + muteAll: false, + mutedInstanceIds: [], + monitoring: { execution: { history: [], calculated_metrics: { success_ratio: 0 } } }, + mapped_params: { risk_score: 1, severity: '60-high' }, + schedule: { interval: '5m' }, + actions: [], + params: { + author: [], + description: 'Simple Rule Query', + ruleId: 'ruleId', + falsePositives: [], + from: 'now-6m', + immutable: false, + outputIndex: '.siem-signals-default', + maxSignals: 100, + riskScore: 1, + riskScoreMapping: [], + severity: 'high', + severityMapping: [], + threat: [], + to: 'now', + references: [], + version: 1, + exceptionsList: [], + type: 'query', + language: 'kuery', + index: ['auditbeat-*'], + query: 'user.name: root or user.name: admin', + }, + snoozeEndTime: null, + updatedAt: '2022-03-31T21:47:25.695Z', + createdAt: '2022-03-31T21:47:16.379Z', + scheduledTaskId: '21bb9b60-b13c-11ec-99d0-asdfasdfasf', + executionStatus: { + status: 'pending', + lastExecutionDate: '2022-03-31T21:47:25.695Z', + lastDuration: 0, + }, + } as unknown as SanitizedRule); describe('utils', () => { describe('#calculateInterval', () => { @@ -588,4 +651,415 @@ describe('utils', () => { ]); }); }); + + describe('#legacyMigrate', () => { + const ruleId = '123'; + const connectorId = '456'; + const { clients } = requestContextMock.createTools(); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + test('it does no cleanup or migration if no legacy reminants found', async () => { + clients.rulesClient.find.mockResolvedValueOnce(getEmptyFindResult()); + clients.savedObjectsClient.find.mockResolvedValueOnce({ + page: 0, + per_page: 0, + total: 0, + saved_objects: [], + }); + + const rule = { + ...getRuleLegacyActions(), + id: ruleId, + actions: [], + throttle: null, + notifyWhen: 'onActiveAlert', + muteAll: true, + } as SanitizedRule; + + const migratedRule = await legacyMigrate({ + rulesClient: clients.rulesClient, + savedObjectsClient: clients.savedObjectsClient, + rule, + }); + + expect(clients.rulesClient.delete).not.toHaveBeenCalled(); + expect(clients.savedObjectsClient.delete).not.toHaveBeenCalled(); + expect(migratedRule).toEqual(rule); + }); + + // Even if a rule is created with no actions pre 7.16, a + // siem-detection-engine-rule-actions SO is still created + test('it migrates a rule with no actions', async () => { + // siem.notifications is not created for a rule with no actions + clients.rulesClient.find.mockResolvedValueOnce(getEmptyFindResult()); + // siem-detection-engine-rule-actions SO is still created + clients.savedObjectsClient.find.mockResolvedValueOnce( + legacyGetSiemNotificationRuleActionsSOResultWithSingleHit(['none'], ruleId, connectorId) + ); + + const migratedRule = await legacyMigrate({ + rulesClient: clients.rulesClient, + savedObjectsClient: clients.savedObjectsClient, + rule: { + ...getRuleLegacyActions(), + id: ruleId, + actions: [], + throttle: null, + notifyWhen: 'onActiveAlert', + muteAll: true, + }, + }); + + expect(clients.rulesClient.delete).not.toHaveBeenCalled(); + expect(clients.savedObjectsClient.delete).toHaveBeenCalledWith( + 'siem-detection-engine-rule-actions', + 'ID_OF_LEGACY_SIDECAR_NO_ACTIONS' + ); + expect(migratedRule?.actions).toEqual([]); + expect(migratedRule?.throttle).toBeNull(); + expect(migratedRule?.muteAll).toBeTruthy(); + expect(migratedRule?.notifyWhen).toEqual('onActiveAlert'); + }); + + test('it migrates a rule with every rule run action', async () => { + // siem.notifications is not created for a rule with actions run every rule run + clients.rulesClient.find.mockResolvedValueOnce(getEmptyFindResult()); + // siem-detection-engine-rule-actions SO is still created + clients.savedObjectsClient.find.mockResolvedValueOnce( + legacyGetSiemNotificationRuleActionsSOResultWithSingleHit(['rule'], ruleId, connectorId) + ); + + const migratedRule = await legacyMigrate({ + rulesClient: clients.rulesClient, + savedObjectsClient: clients.savedObjectsClient, + rule: { + ...getRuleLegacyActions(), + id: ruleId, + actions: [ + { + actionTypeId: '.email', + params: { + subject: 'Test Actions', + to: ['test@test.com'], + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + }, + id: connectorId, + group: 'default', + }, + ], + throttle: null, + notifyWhen: 'onActiveAlert', + muteAll: false, + }, + }); + + expect(clients.rulesClient.delete).not.toHaveBeenCalled(); + expect(clients.savedObjectsClient.delete).toHaveBeenCalledWith( + 'siem-detection-engine-rule-actions', + 'ID_OF_LEGACY_SIDECAR_RULE_RUN_ACTIONS' + ); + expect(migratedRule?.actions).toEqual([ + { + id: connectorId, + actionTypeId: '.email', + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + subject: 'Test Actions', + to: ['test@test.com'], + }, + }, + ]); + expect(migratedRule?.notifyWhen).toEqual('onActiveAlert'); + expect(migratedRule?.throttle).toBeNull(); + expect(migratedRule?.muteAll).toBeFalsy(); + }); + + test('it migrates a rule with daily legacy actions', async () => { + // siem.notifications is not created for a rule with no actions + clients.rulesClient.find.mockResolvedValueOnce({ + page: 1, + perPage: 1, + total: 1, + data: [legacyGetDailyNotificationResult(connectorId, ruleId)], + }); + // siem-detection-engine-rule-actions SO is still created + clients.savedObjectsClient.find.mockResolvedValueOnce( + legacyGetSiemNotificationRuleActionsSOResultWithSingleHit(['daily'], ruleId, connectorId) + ); + + const migratedRule = await legacyMigrate({ + rulesClient: clients.rulesClient, + savedObjectsClient: clients.savedObjectsClient, + rule: { + ...getRuleLegacyActions(), + id: ruleId, + actions: [], + throttle: null, + notifyWhen: 'onActiveAlert', + }, + }); + + expect(clients.rulesClient.delete).toHaveBeenCalledWith({ id: '456' }); + expect(clients.savedObjectsClient.delete).toHaveBeenCalledWith( + 'siem-detection-engine-rule-actions', + 'ID_OF_LEGACY_SIDECAR_DAILY_ACTIONS' + ); + expect(migratedRule?.actions).toEqual([ + { + actionTypeId: '.email', + group: 'default', + id: connectorId, + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + }, + ]); + expect(migratedRule?.throttle).toEqual('1d'); + expect(migratedRule?.notifyWhen).toEqual('onThrottleInterval'); + expect(migratedRule?.muteAll).toBeFalsy(); + }); + + test('it migrates a rule with hourly legacy actions', async () => { + // siem.notifications is not created for a rule with no actions + clients.rulesClient.find.mockResolvedValueOnce({ + page: 1, + perPage: 1, + total: 1, + data: [legacyGetHourlyNotificationResult(connectorId, ruleId)], + }); + // siem-detection-engine-rule-actions SO is still created + clients.savedObjectsClient.find.mockResolvedValueOnce( + legacyGetSiemNotificationRuleActionsSOResultWithSingleHit(['hourly'], ruleId, connectorId) + ); + + const migratedRule = await legacyMigrate({ + rulesClient: clients.rulesClient, + savedObjectsClient: clients.savedObjectsClient, + rule: { + ...getRuleLegacyActions(), + id: ruleId, + actions: [], + throttle: null, + notifyWhen: 'onActiveAlert', + }, + }); + + expect(clients.rulesClient.delete).toHaveBeenCalledWith({ id: '456' }); + expect(clients.savedObjectsClient.delete).toHaveBeenCalledWith( + 'siem-detection-engine-rule-actions', + 'ID_OF_LEGACY_SIDECAR_HOURLY_ACTIONS' + ); + expect(migratedRule?.actions).toEqual([ + { + actionTypeId: '.email', + group: 'default', + id: connectorId, + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + }, + ]); + expect(migratedRule?.throttle).toEqual('1h'); + expect(migratedRule?.notifyWhen).toEqual('onThrottleInterval'); + expect(migratedRule?.muteAll).toBeFalsy(); + }); + + test('it migrates a rule with weekly legacy actions', async () => { + // siem.notifications is not created for a rule with no actions + clients.rulesClient.find.mockResolvedValueOnce({ + page: 1, + perPage: 1, + total: 1, + data: [legacyGetWeeklyNotificationResult(connectorId, ruleId)], + }); + // siem-detection-engine-rule-actions SO is still created + clients.savedObjectsClient.find.mockResolvedValueOnce( + legacyGetSiemNotificationRuleActionsSOResultWithSingleHit(['weekly'], ruleId, connectorId) + ); + + const migratedRule = await legacyMigrate({ + rulesClient: clients.rulesClient, + savedObjectsClient: clients.savedObjectsClient, + rule: { + ...getRuleLegacyActions(), + id: ruleId, + actions: [], + throttle: null, + notifyWhen: 'onActiveAlert', + }, + }); + + expect(clients.rulesClient.delete).toHaveBeenCalledWith({ id: '456' }); + expect(clients.savedObjectsClient.delete).toHaveBeenCalledWith( + 'siem-detection-engine-rule-actions', + 'ID_OF_LEGACY_SIDECAR_WEEKLY_ACTIONS' + ); + expect(migratedRule?.actions).toEqual([ + { + actionTypeId: '.email', + group: 'default', + id: connectorId, + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Test Actions', + }, + }, + ]); + expect(migratedRule?.throttle).toEqual('7d'); + expect(migratedRule?.notifyWhen).toEqual('onThrottleInterval'); + expect(migratedRule?.muteAll).toBeFalsy(); + }); + }); + + describe('#getUpdatedActionsParams', () => { + it('updates one action', () => { + const { id, ...rule } = { + ...getRuleLegacyActions(), + id: '123', + actions: [], + throttle: null, + notifyWhen: 'onActiveAlert', + } as SanitizedRule; + + expect( + getUpdatedActionsParams({ + rule: { + ...rule, + id, + }, + ruleThrottle: '1h', + actions: [ + { + actionRef: 'action_0', + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['a@a.com'], + subject: 'Test Actions', + }, + action_type_id: '.email', + }, + ], + references: [ + { + id: '61ec7a40-b076-11ec-bb3f-1f063f8e06cf', + type: 'alert', + name: 'alert_0', + }, + { + id: '1234', + type: 'action', + name: 'action_0', + }, + ], + }) + ).toEqual({ + ...rule, + actions: [ + { + actionTypeId: '.email', + group: 'default', + id: '1234', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + subject: 'Test Actions', + to: ['a@a.com'], + }, + }, + ], + throttle: '1h', + notifyWhen: 'onThrottleInterval', + }); + }); + + it('updates multiple actions', () => { + const { id, ...rule } = { + ...getRuleLegacyActions(), + id: '123', + actions: [], + throttle: null, + notifyWhen: 'onActiveAlert', + } as SanitizedRule; + + expect( + getUpdatedActionsParams({ + rule: { + ...rule, + id, + }, + ruleThrottle: '1h', + actions: [ + { + actionRef: 'action_0', + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + to: ['test@test.com'], + subject: 'Rule email', + }, + action_type_id: '.email', + }, + { + actionRef: 'action_1', + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + }, + action_type_id: '.slack', + }, + ], + references: [ + { + id: '064e3160-b076-11ec-bb3f-1f063f8e06cf', + type: 'alert', + name: 'alert_0', + }, + { + id: 'c95cb100-b075-11ec-bb3f-1f063f8e06cf', + type: 'action', + name: 'action_0', + }, + { + id: '207fa0e0-c04e-11ec-8a52-4fb92379525a', + type: 'action', + name: 'action_1', + }, + ], + }) + ).toEqual({ + ...rule, + actions: [ + { + actionTypeId: '.email', + group: 'default', + id: 'c95cb100-b075-11ec-bb3f-1f063f8e06cf', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + subject: 'Rule email', + to: ['test@test.com'], + }, + }, + { + actionTypeId: '.slack', + group: 'default', + id: '207fa0e0-c04e-11ec-8a52-4fb92379525a', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + }, + }, + ], + throttle: '1h', + notifyWhen: 'onThrottleInterval', + }); + }); + }); }); 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 c7858a131cb1f..dd25676a758e4 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 @@ -28,6 +28,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 { SavedObjectReference } from '@kbn/core/server'; import { RuleAction, RuleNotifyWhenType, SanitizedRule } from '@kbn/alerting-plugin/common'; import { RulesClient } from '@kbn/alerting-plugin/server'; import { @@ -63,7 +64,11 @@ import { NOTIFICATION_THROTTLE_RULE, } from '../../../../common/constants'; // eslint-disable-next-line no-restricted-imports -import { LegacyRuleActions } from '../rule_actions/legacy_types'; +import { + LegacyIRuleActionsAttributes, + LegacyRuleActions, + LegacyRuleAlertSavedObjectAction, +} from '../rule_actions/legacy_types'; import { FullResponseSchema } from '../../../../common/detection_engine/schemas/request'; import { transformAlertToRuleAction } from '../../../../common/detection_engine/transform_actions'; // eslint-disable-next-line no-restricted-imports @@ -302,6 +307,59 @@ export const maybeMute = async ({ } }; +/** + * Translate legacy action sidecar action to rule action + */ +export const getUpdatedActionsParams = ({ + rule, + ruleThrottle, + actions, + references, +}: { + rule: SanitizedRule; + ruleThrottle: string | null; + actions: LegacyRuleAlertSavedObjectAction[]; + references: SavedObjectReference[]; +}): Omit, 'id'> => { + const { id, ...restOfRule } = rule; + + const actionReference = references.reduce>( + (acc, reference) => { + acc[reference.name] = reference; + return acc; + }, + {} + ); + + if (isEmpty(actionReference)) { + throw new Error( + `An error occurred migrating legacy action for rule with id:${id}. Connector reference id not found.` + ); + } + // If rule has an action on any other interval (other than on every + // rule run), need to move the action info from the sidecar/legacy action + // into the rule itself + return { + ...restOfRule, + actions: actions.reduce((acc, action) => { + const { actionRef, action_type_id: actionTypeId, ...resOfAction } = action; + if (!actionReference[actionRef]) { + return acc; + } + return [ + ...acc, + { + ...resOfAction, + id: actionReference[actionRef].id, + actionTypeId, + }, + ]; + }, []), + throttle: transformToAlertThrottle(ruleThrottle), + notifyWhen: transformToNotifyWhen(ruleThrottle), + }; +}; + /** * Determines if rule needs to be migrated from legacy actions * and returns necessary pieces for the updated rule @@ -332,7 +390,7 @@ export const legacyMigrate = async ({ }, }, }), - savedObjectsClient.find({ + savedObjectsClient.find({ type: legacyRuleActionsSavedObjectType, hasReference: { type: 'alert', @@ -341,29 +399,57 @@ export const legacyMigrate = async ({ }), ]); - if (siemNotification != null && siemNotification.data.length > 0) { - await Promise.all([ - rulesClient.delete({ id: siemNotification.data[0].id }), - legacyRuleActionsSO != null && legacyRuleActionsSO.saved_objects.length > 0 - ? savedObjectsClient.delete( - legacyRuleActionsSavedObjectType, - legacyRuleActionsSO.saved_objects[0].id - ) - : null, - ]); + const siemNotificationsExist = siemNotification != null && siemNotification.data.length > 0; + const legacyRuleNotificationSOsExist = + legacyRuleActionsSO != null && legacyRuleActionsSO.saved_objects.length > 0; + + // Assumption: if no legacy sidecar SO or notification rule types exist + // that reference the rule in question, assume rule actions are not legacy + if (!siemNotificationsExist && !legacyRuleNotificationSOsExist) { + return rule; + } + // If the legacy notification rule type ("siem.notification") exist, + // migration and cleanup are needed + if (siemNotificationsExist) { + await rulesClient.delete({ id: siemNotification.data[0].id }); + } + // If legacy notification sidecar ("siem-detection-engine-rule-actions") + // exist, migration and cleanup are needed + if (legacyRuleNotificationSOsExist) { + // Delete the legacy sidecar SO + await savedObjectsClient.delete( + legacyRuleActionsSavedObjectType, + legacyRuleActionsSO.saved_objects[0].id + ); + + // If "siem-detection-engine-rule-actions" notes that `ruleThrottle` is + // "no_actions" or "rule", rule has no actions or rule is set to run + // action on every rule run. In these cases, sidecar deletion is the only + // cleanup needed and updates to the "throttle" and "notifyWhen". "siem.notification" are + // not created for these action types + if ( + legacyRuleActionsSO.saved_objects[0].attributes.ruleThrottle === 'no_actions' || + legacyRuleActionsSO.saved_objects[0].attributes.ruleThrottle === 'rule' + ) { + return rule; + } + + // Use "legacyRuleActionsSO" instead of "siemNotification" as "siemNotification" is not created + // until a rule is run and added to task manager. That means that if by chance a user has a rule + // with actions which they have yet to enable, the actions would be lost. Instead, + // "legacyRuleActionsSO" is created on rule creation (pre 7.15) and we can rely on it to be there + const migratedRule = getUpdatedActionsParams({ + rule, + ruleThrottle: legacyRuleActionsSO.saved_objects[0].attributes.ruleThrottle, + actions: legacyRuleActionsSO.saved_objects[0].attributes.actions, + references: legacyRuleActionsSO.saved_objects[0].references, + }); - const { id, ...restOfRule } = rule; - const migratedRule = { - ...restOfRule, - actions: siemNotification.data[0].actions, - throttle: siemNotification.data[0].schedule.interval, - notifyWhen: transformToNotifyWhen(siemNotification.data[0].throttle), - }; await rulesClient.update({ id: rule.id, data: migratedRule, }); + return { id: rule.id, ...migratedRule }; } - return rule; }; 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 d699e71947853..9213d6c5b278c 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 @@ -910,6 +910,32 @@ export const sampleDocSearchResultsNoSortIdNoHits = ( }, }); +/** + * + * @param count Total number of hits to create + * @param guids List of _id values for the hits. If this array is smaller than count, the remaining hits will receive a default value. + * @param ips List of source.ip values for the hits. If this array is smaller than count, the remaining hits will receive a default value. + * @param destIps List of destination.ip values for the hits. If this array is smaller than count, the remaining hits will receive a default value. + * @param sortIds List of sort IDs. The same list is inserted into every hit. + * @returns Array of mock hits + */ +export const repeatedHitsWithSortId = ( + count: number, + guids: string[], + ips?: Array, + destIps?: Array, + sortIds?: string[] +): SignalSourceHit[] => { + return Array.from({ length: count }).map((x, index) => ({ + ...sampleDocWithSortId( + guids[index], + sortIds, + ips ? ips[index] : '127.0.0.1', + destIps ? destIps[index] : '127.0.0.1' + ), + })); +}; + export const repeatedSearchResultsWithSortId = ( total: number, pageSize: number, @@ -929,14 +955,7 @@ export const repeatedSearchResultsWithSortId = ( hits: { total, max_score: 100, - hits: Array.from({ length: pageSize }).map((x, index) => ({ - ...sampleDocWithSortId( - guids[index], - sortIds, - ips ? ips[index] : '127.0.0.1', - destIps ? destIps[index] : '127.0.0.1' - ), - })), + hits: repeatedHitsWithSortId(pageSize, guids, ips, destIps, sortIds), }, }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_ml_signals.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_ml_signals.ts index 66394d4bca81d..e38ee3952cadb 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_ml_signals.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/bulk_create_ml_signals.ts @@ -15,7 +15,7 @@ import { RuleExecutorServices, } from '@kbn/alerting-plugin/server'; import { GenericBulkCreateResponse } from '../rule_types/factories'; -import { AnomalyResults, Anomaly } from '../../machine_learning'; +import { Anomaly } from '../../machine_learning'; import { BuildRuleMessage } from './rule_messages'; import { BulkCreate, WrapHits } from './types'; import { CompleteRule, MachineLearningRuleParams } from '../schemas/rule_schemas'; @@ -23,7 +23,7 @@ import { buildReasonMessageForMlAlert } from './reason_formatters'; import { BaseFieldsLatest } from '../../../../common/detection_engine/schemas/alerts'; interface BulkCreateMlSignalsParams { - someResult: AnomalyResults; + anomalyHits: Array>; completeRule: CompleteRule; services: RuleExecutorServices; logger: Logger; @@ -65,32 +65,23 @@ export const transformAnomalyFieldsToEcs = (anomaly: Anomaly): EcsAnomaly => { }; const transformAnomalyResultsToEcs = ( - results: AnomalyResults -): estypes.SearchResponse => { - const transformedHits = results.hits.hits.map(({ _source, ...rest }) => ({ + results: Array> +): Array> => { + return results.map(({ _source, ...rest }) => ({ ...rest, _source: transformAnomalyFieldsToEcs( // @ts-expect-error @elastic/elasticsearch _source is optional _source ), })); - - // @ts-expect-error Anomaly is not assignable to EcsAnomaly - return { - ...results, - hits: { - ...results.hits, - hits: transformedHits, - }, - }; }; export const bulkCreateMlSignals = async ( params: BulkCreateMlSignalsParams ): Promise> => { - const anomalyResults = params.someResult; + const anomalyResults = params.anomalyHits; const ecsResults = transformAnomalyResultsToEcs(anomalyResults); - const wrappedDocs = params.wrapHits(ecsResults.hits.hits, buildReasonMessageForMlAlert); + const wrappedDocs = params.wrapHits(ecsResults, buildReasonMessageForMlAlert); return params.bulkCreate(wrappedDocs); }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/ml.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/ml.ts index 2070d487c49d0..22c11b565e909 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/ml.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/ml.ts @@ -97,21 +97,21 @@ export const mlExecutor = async ({ exceptionItems, }); - const filteredAnomalyResults = await filterEventsAgainstList({ + const [filteredAnomalyHits, _] = await filterEventsAgainstList({ listClient, exceptionsList: exceptionItems, logger, - eventSearchResult: anomalyResults, + events: anomalyResults.hits.hits, buildRuleMessage, }); - const anomalyCount = filteredAnomalyResults.hits.hits.length; + const anomalyCount = filteredAnomalyHits.length; if (anomalyCount) { logger.debug(buildRuleMessage(`Found ${anomalyCount} signals from ML anomalies.`)); } const { success, errors, bulkCreateDuration, createdItemsCount, createdItems } = await bulkCreateMlSignals({ - someResult: filteredAnomalyResults, + anomalyHits: filteredAnomalyHits, completeRule, services, logger, @@ -124,7 +124,7 @@ export const mlExecutor = async ({ // The legacy ES client does not define failures when it can be present on the structure, hence why I have the & { failures: [] } const shardFailures = ( - filteredAnomalyResults._shards as typeof filteredAnomalyResults._shards & { + anomalyResults._shards as typeof anomalyResults._shards & { failures: []; } ).failures ?? []; @@ -134,7 +134,7 @@ export const mlExecutor = async ({ return mergeReturns([ result, createSearchAfterReturnType({ - success: success && filteredAnomalyResults._shards.failed === 0, + success: success && anomalyResults._shards.failed === 0, errors: [...errors, ...searchErrors], createdSignalsCount: createdItemsCount, createdSignals: createdItems, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events.test.ts index df9bb0cd59f83..bed5f96fbc233 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events.test.ts @@ -9,10 +9,10 @@ import { sampleDocWithSortId } from '../__mocks__/es_results'; import { listMock } from '@kbn/lists-plugin/server/mocks'; import { getSearchListItemResponseMock } from '@kbn/lists-plugin/common/schemas/response/search_list_item_schema.mock'; -import { filterEvents } from './filter_events'; +import { partitionEvents } from './filter_events'; import { FieldSet } from './types'; -describe('filterEvents', () => { +describe('partitionEvents', () => { let listClient = listMock.getListClient(); let events = [sampleDocWithSortId('123', undefined, '1.1.1.1')]; @@ -43,11 +43,12 @@ describe('filterEvents', () => { matchedSet: new Set([JSON.stringify(['1.1.1.1'])]), }, ]; - const field = filterEvents({ + const [included, excluded] = partitionEvents({ events, fieldAndSetTuples, }); - expect([...field]).toEqual([]); + expect(included).toEqual([]); + expect(excluded).toEqual(events); }); test('it does not filter out the event if it is "excluded"', () => { @@ -59,11 +60,12 @@ describe('filterEvents', () => { matchedSet: new Set([JSON.stringify(['1.1.1.1'])]), }, ]; - const field = filterEvents({ + const [included, excluded] = partitionEvents({ events, fieldAndSetTuples, }); - expect([...field]).toEqual(events); + expect(included).toEqual(events); + expect(excluded).toEqual([]); }); test('it does NOT filter out the event if the field is not found', () => { @@ -75,11 +77,12 @@ describe('filterEvents', () => { matchedSet: new Set([JSON.stringify(['1.1.1.1'])]), }, ]; - const field = filterEvents({ + const [included, excluded] = partitionEvents({ events, fieldAndSetTuples, }); - expect([...field]).toEqual(events); + expect(included).toEqual(events); + expect(excluded).toEqual([]); }); test('it does NOT filter out the event if it is in both an inclusion and exclusion list', () => { @@ -100,10 +103,11 @@ describe('filterEvents', () => { }, ]; - const field = filterEvents({ + const [included, excluded] = partitionEvents({ events, fieldAndSetTuples, }); - expect([...field]).toEqual(events); + expect(included).toEqual(events); + expect(excluded).toEqual([]); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events.ts index d267153a4813a..aee98b7e0ff5b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events.ts @@ -5,6 +5,7 @@ * 2.0. */ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { partition } from 'lodash'; import { FilterEventsOptions } from './types'; /** @@ -12,12 +13,14 @@ import { FilterEventsOptions } from './types'; * If the entry is in both an inclusion and exclusion list it will not be filtered out. * @param events The events to check against * @param fieldAndSetTuples The field and set tuples + * @returns A tuple where the first element is an array of alerts that should be created and second element is + * an array of alerts that matched the exception and should not be created. */ -export const filterEvents = ({ +export const partitionEvents = ({ events, fieldAndSetTuples, -}: FilterEventsOptions): Array> => { - return events.filter((item) => { +}: FilterEventsOptions): [Array>, Array>] => { + return partition(events, (item) => { return fieldAndSetTuples .map((tuple) => { const eventItem = item.fields ? item.fields[tuple.field] : undefined; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.test.ts index 8c33cf2ea1314..22dc5136fcded 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.test.ts @@ -8,7 +8,7 @@ import uuid from 'uuid'; import { filterEventsAgainstList } from './filter_events_against_list'; import { buildRuleMessageMock as buildRuleMessage } from '../rule_messages.mock'; -import { mockLogger, repeatedSearchResultsWithSortId } from '../__mocks__/es_results'; +import { mockLogger, repeatedHitsWithSortId } from '../__mocks__/es_results'; import { getExceptionListItemSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_item_schema.mock'; import { listMock } from '@kbn/lists-plugin/server/mocks'; @@ -30,11 +30,11 @@ describe('filterEventsAgainstList', () => { }); it('should respond with eventSearchResult if exceptionList is empty array', async () => { - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [], - eventSearchResult: repeatedSearchResultsWithSortId(4, 4, someGuids.slice(0, 3), [ + events: repeatedHitsWithSortId(4, someGuids.slice(0, 3), [ '1.1.1.1', '2.2.2.2', '3.3.3.3', @@ -42,15 +42,16 @@ describe('filterEventsAgainstList', () => { ]), buildRuleMessage, }); - expect(res.hits.hits.length).toEqual(4); + expect(included.length).toEqual(4); + expect(excluded.length).toEqual(0); }); it('should respond with eventSearchResult if exceptionList does not contain value list exceptions', async () => { - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [getExceptionListItemSchemaMock()], - eventSearchResult: repeatedSearchResultsWithSortId(4, 4, someGuids.slice(0, 3), [ + events: repeatedHitsWithSortId(4, someGuids.slice(0, 3), [ '1.1.1.1', '2.2.2.2', '3.3.3.3', @@ -58,7 +59,8 @@ describe('filterEventsAgainstList', () => { ]), buildRuleMessage, }); - expect(res.hits.hits.length).toEqual(4); + expect(included.length).toEqual(4); + expect(excluded.length).toEqual(0); expect((mockLogger.debug as unknown as jest.Mock).mock.calls[0][0]).toContain( 'no exception items of type list found - returning original search result' ); @@ -79,14 +81,15 @@ describe('filterEventsAgainstList', () => { }, ]; - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem], - eventSearchResult: repeatedSearchResultsWithSortId(4, 4, someGuids.slice(0, 3)), + events: repeatedHitsWithSortId(4, someGuids.slice(0, 3)), buildRuleMessage, }); - expect(res.hits.hits.length).toEqual(4); + expect(included.length).toEqual(4); + expect(excluded.length).toEqual(0); }); it('should respond with less items in the list if some values match', async () => { @@ -110,11 +113,11 @@ describe('filterEventsAgainstList', () => { })) ) ); - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem], - eventSearchResult: repeatedSearchResultsWithSortId(4, 4, someGuids.slice(0, 3), [ + events: repeatedHitsWithSortId(4, someGuids.slice(0, 3), [ '1.1.1.1', '2.2.2.2', '3.3.3.3', @@ -126,10 +129,11 @@ describe('filterEventsAgainstList', () => { expect((listClient.searchListItemByValues as jest.Mock).mock.calls[0][0].listId).toEqual( 'ci-badguys.txt' ); - expect(res.hits.hits.length).toEqual(2); + expect(included.length).toEqual(2); + expect(excluded.length).toEqual(2); // @ts-expect-error - const ipVals = res.hits.hits.map((item) => item._source.source.ip); + const ipVals = included.map((item) => item._source.source.ip); expect(['3.3.3.3', '7.7.7.7']).toEqual(ipVals); }); @@ -170,11 +174,11 @@ describe('filterEventsAgainstList', () => { { ...getSearchListItemResponseMock(), value: ['6.6.6.6'] }, ]); - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem, exceptionItemAgain], - eventSearchResult: repeatedSearchResultsWithSortId(9, 9, someGuids.slice(0, 9), [ + events: repeatedHitsWithSortId(9, someGuids.slice(0, 9), [ '1.1.1.1', '2.2.2.2', '3.3.3.3', @@ -188,10 +192,11 @@ describe('filterEventsAgainstList', () => { buildRuleMessage, }); expect(listClient.searchListItemByValues as jest.Mock).toHaveBeenCalledTimes(2); - expect(res.hits.hits.length).toEqual(6); + expect(included.length).toEqual(6); + expect(excluded.length).toEqual(3); // @ts-expect-error - const ipVals = res.hits.hits.map((item) => item._source.source.ip); + const ipVals = included.map((item) => item._source.source.ip); expect(['1.1.1.1', '3.3.3.3', '5.5.5.5', '7.7.7.7', '8.8.8.8', '9.9.9.9']).toEqual(ipVals); }); @@ -231,11 +236,11 @@ describe('filterEventsAgainstList', () => { { ...getSearchListItemResponseMock(), value: ['6.6.6.6'] }, ]); - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem, exceptionItemAgain], - eventSearchResult: repeatedSearchResultsWithSortId(9, 9, someGuids.slice(0, 9), [ + events: repeatedHitsWithSortId(9, someGuids.slice(0, 9), [ '1.1.1.1', '2.2.2.2', '3.3.3.3', @@ -250,8 +255,9 @@ describe('filterEventsAgainstList', () => { }); expect(listClient.searchListItemByValues as jest.Mock).toHaveBeenCalledTimes(2); // @ts-expect-error - const ipVals = res.hits.hits.map((item) => item._source.source.ip); - expect(res.hits.hits.length).toEqual(7); + const ipVals = included.map((item) => item._source.source.ip); + expect(included.length).toEqual(7); + expect(excluded.length).toEqual(2); expect(['1.1.1.1', '3.3.3.3', '4.4.4.4', '5.5.5.5', '7.7.7.7', '8.8.8.8', '9.9.9.9']).toEqual( ipVals @@ -290,12 +296,11 @@ describe('filterEventsAgainstList', () => { { ...getSearchListItemResponseMock(), value: ['4.4.4.4'] }, ]); - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem], - eventSearchResult: repeatedSearchResultsWithSortId( - 9, + events: repeatedHitsWithSortId( 9, someGuids.slice(0, 9), [ @@ -324,10 +329,11 @@ describe('filterEventsAgainstList', () => { buildRuleMessage, }); expect(listClient.searchListItemByValues as jest.Mock).toHaveBeenCalledTimes(2); - expect(res.hits.hits.length).toEqual(8); + expect(included.length).toEqual(8); + expect(excluded.length).toEqual(1); // @ts-expect-error - const ipVals = res.hits.hits.map((item) => item._source.source.ip); + const ipVals = included.map((item) => item._source?.source?.ip); expect([ '1.1.1.1', '2.2.2.2', @@ -368,11 +374,11 @@ describe('filterEventsAgainstList', () => { { ...getSearchListItemResponseMock(), value: ['2.2.2.2'] }, ]); - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem], - eventSearchResult: repeatedSearchResultsWithSortId(9, 9, someGuids.slice(0, 9), [ + events: repeatedHitsWithSortId(9, someGuids.slice(0, 9), [ '1.1.1.1', '2.2.2.2', '3.3.3.3', @@ -386,10 +392,11 @@ describe('filterEventsAgainstList', () => { buildRuleMessage, }); expect(listClient.searchListItemByValues as jest.Mock).toHaveBeenCalledTimes(2); - expect(res.hits.hits.length).toEqual(9); + expect(included.length).toEqual(9); + expect(excluded.length).toEqual(0); // @ts-expect-error - const ipVals = res.hits.hits.map((item) => item._source.source.ip); + const ipVals = included.map((item) => item._source.source.ip); expect([ '1.1.1.1', '2.2.2.2', @@ -435,12 +442,11 @@ describe('filterEventsAgainstList', () => { { ...getSearchListItemResponseMock(), value: ['3.3.3.3', '4.4.4.4'] }, ]); - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem], - eventSearchResult: repeatedSearchResultsWithSortId( - 3, + events: repeatedHitsWithSortId( 3, someGuids.slice(0, 3), [ @@ -467,16 +473,17 @@ describe('filterEventsAgainstList', () => { ['2.2.2.2', '3.3.3.3'], ['3.3.3.3', '4.4.4.4'], ]); - expect(res.hits.hits.length).toEqual(2); + expect(included.length).toEqual(2); + expect(excluded.length).toEqual(1); // @ts-expect-error - const sourceIpVals = res.hits.hits.map((item) => item._source.source.ip); + const sourceIpVals = included.map((item) => item._source.source.ip); expect([ ['1.1.1.1', '1.1.1.1'], ['1.1.1.1', '2.2.2.2'], ]).toEqual(sourceIpVals); // @ts-expect-error - const destIpVals = res.hits.hits.map((item) => item._source.destination.ip); + const destIpVals = included.map((item) => item._source.destination.ip); expect([ ['1.1.1.1', '2.2.2.2'], ['2.2.2.2', '3.3.3.3'], @@ -497,14 +504,15 @@ describe('filterEventsAgainstList', () => { }, }, ]; - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem], - eventSearchResult: repeatedSearchResultsWithSortId(4, 4, someGuids.slice(0, 3)), + events: repeatedHitsWithSortId(4, someGuids.slice(0, 3)), buildRuleMessage, }); - expect(res.hits.hits.length).toEqual(0); + expect(included.length).toEqual(0); + expect(excluded.length).toEqual(4); }); it('should respond with less items in the list if some values match', async () => { @@ -528,11 +536,11 @@ describe('filterEventsAgainstList', () => { })) ) ); - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem], - eventSearchResult: repeatedSearchResultsWithSortId(4, 4, someGuids.slice(0, 3), [ + events: repeatedHitsWithSortId(4, someGuids.slice(0, 3), [ '1.1.1.1', '2.2.2.2', '3.3.3.3', @@ -544,7 +552,8 @@ describe('filterEventsAgainstList', () => { expect((listClient.searchListItemByValues as jest.Mock).mock.calls[0][0].listId).toEqual( 'ci-badguys.txt' ); - expect(res.hits.hits.length).toEqual(2); + expect(included.length).toEqual(2); + expect(excluded.length).toEqual(2); }); it('should respond with the same items in the list given one exception item with two entries of type list and array of values in document', async () => { @@ -582,12 +591,11 @@ describe('filterEventsAgainstList', () => { { ...getSearchListItemResponseMock(), value: ['3.3.3.3', '4.4.4.4'] }, ]); - const res = await filterEventsAgainstList({ + const [included, excluded] = await filterEventsAgainstList({ logger: mockLogger, listClient, exceptionsList: [exceptionItem], - eventSearchResult: repeatedSearchResultsWithSortId( - 3, + events: repeatedHitsWithSortId( 3, someGuids.slice(0, 3), [ @@ -614,16 +622,17 @@ describe('filterEventsAgainstList', () => { ['2.2.2.2', '3.3.3.3'], ['3.3.3.3', '4.4.4.4'], ]); - expect(res.hits.hits.length).toEqual(2); + expect(included.length).toEqual(2); + expect(excluded.length).toEqual(1); // @ts-expect-error - const sourceIpVals = res.hits.hits.map((item) => item._source.source.ip); + const sourceIpVals = included.map((item) => item._source.source.ip); expect([ ['1.1.1.1', '2.2.2.2'], ['2.2.2.2', '3.3.3.3'], ]).toEqual(sourceIpVals); // @ts-expect-error - const destIpVals = res.hits.hits.map((item) => item._source.destination.ip); + const destIpVals = included.map((item) => item._source.destination.ip); expect([ ['2.2.2.2', '3.3.3.3'], ['3.3.3.3', '4.4.4.4'], diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts index 49a8ab0781eb0..7b9f6fde51842 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts @@ -5,13 +5,12 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { entriesList, ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import { hasLargeValueList } from '@kbn/securitysolution-list-utils'; -import { FilterEventsAgainstListOptions } from './types'; -import { filterEvents } from './filter_events'; +import { FilterEventsAgainstListOptions, FilterEventsAgainstListReturn } from './types'; +import { partitionEvents } from './filter_events'; import { createFieldAndSetTuples } from './create_field_and_set_tuples'; /** @@ -39,9 +38,9 @@ export const filterEventsAgainstList = async ({ listClient, exceptionsList, logger, - eventSearchResult, + events, buildRuleMessage, -}: FilterEventsAgainstListOptions): Promise> => { +}: FilterEventsAgainstListOptions): Promise> => { try { const atLeastOneLargeValueList = exceptionsList.some(({ entries }) => hasLargeValueList(entries) @@ -51,46 +50,41 @@ export const filterEventsAgainstList = async ({ logger.debug( buildRuleMessage('no exception items of type list found - returning original search result') ); - return eventSearchResult; + return [events, []]; } const valueListExceptionItems = exceptionsList.filter((listItem: ExceptionListItemSchema) => { return listItem.entries.every((entry) => entriesList.is(entry)); }); - const res = await valueListExceptionItems.reduce>>>( + // Every event starts out in the 'included' list, and each value list item checks all the + // current 'included' events and moves events that match the exception to the 'excluded' list + return valueListExceptionItems.reduce>>( async ( - filteredAccum: Promise>>, + filteredAccum: Promise>, exceptionItem: ExceptionListItemSchema ) => { - const events = await filteredAccum; + const [includedEvents, excludedEvents] = await filteredAccum; const fieldAndSetTuples = await createFieldAndSetTuples({ - events, + events: includedEvents, exceptionItem, listClient, logger, buildRuleMessage, }); - const filteredEvents = filterEvents({ events, fieldAndSetTuples }); - const diff = eventSearchResult.hits.hits.length - filteredEvents.length; + const [nextIncludedEvents, nextExcludedEvents] = partitionEvents({ + events: includedEvents, + fieldAndSetTuples, + }); logger.debug( - buildRuleMessage(`Exception with id ${exceptionItem.id} filtered out ${diff} events`) + buildRuleMessage( + `Exception with id ${exceptionItem.id} filtered out ${nextExcludedEvents.length} events` + ) ); - return filteredEvents; + return [nextIncludedEvents, [...excludedEvents, ...nextExcludedEvents]]; }, - Promise.resolve>>(eventSearchResult.hits.hits) + Promise.resolve>([events, []]) ); - - return { - took: eventSearchResult.took, - timed_out: eventSearchResult.timed_out, - _shards: eventSearchResult._shards, - hits: { - total: res.length, - max_score: eventSearchResult.hits.max_score, - hits: res, - }, - }; } catch (exc) { throw new Error(`Failed to query large value based lists index. Reason: ${exc.message}`); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts index 051685c67db4a..f5d438f54bdb3 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts @@ -15,10 +15,15 @@ export interface FilterEventsAgainstListOptions { listClient: ListClient; exceptionsList: ExceptionListItemSchema[]; logger: Logger; - eventSearchResult: estypes.SearchResponse; + events: Array>; buildRuleMessage: BuildRuleMessage; } +export type FilterEventsAgainstListReturn = [ + Array>, + Array> +]; + export interface CreateSetToFilterAgainstOptions { events: Array>; field: string; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.test.ts index b96b0e6dc7148..4f3a798a327ce 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.test.ts @@ -1004,16 +1004,12 @@ describe('searchAfterAndBulkCreate', () => { }); expect(mockEnrichment).toHaveBeenCalledWith( - expect.objectContaining({ - hits: expect.objectContaining({ - hits: expect.arrayContaining([ - expect.objectContaining({ - ...sampleDocWithSortId(), - _id: expect.any(String), - }), - ]), + expect.objectContaining([ + expect.objectContaining({ + ...sampleDocWithSortId(), + _id: expect.any(String), }), - }) + ]) ); expect(success).toEqual(true); expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(4); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts index 69c001898b217..84ef95b856a5f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts @@ -127,11 +127,11 @@ export const searchAfterAndBulkCreate = async ({ // filter out the search results that match with the values found in the list. // the resulting set are signals to be indexed, given they are not duplicates // of signals already present in the signals index. - const filteredEvents = await filterEventsAgainstList({ + const [includedEvents, _] = await filterEventsAgainstList({ listClient, exceptionsList, logger, - eventSearchResult: mergedSearchResults, + events: mergedSearchResults.hits.hits, buildRuleMessage, }); @@ -139,16 +139,11 @@ export const searchAfterAndBulkCreate = async ({ // if there isn't anything after going through the value list filter // skip the call to bulk create and proceed to the next search_after, // if there is a sort id to continue the search_after with. - if (filteredEvents.hits.hits.length !== 0) { + if (includedEvents.length !== 0) { // make sure we are not going to create more signals than maxSignals allows - if (signalsCreatedCount + filteredEvents.hits.hits.length > tuple.maxSignals) { - filteredEvents.hits.hits = filteredEvents.hits.hits.slice( - 0, - tuple.maxSignals - signalsCreatedCount - ); - } - const enrichedEvents = await enrichment(filteredEvents); - const wrappedDocs = wrapHits(enrichedEvents.hits.hits, buildReasonMessage); + const limitedEvents = includedEvents.slice(0, tuple.maxSignals - signalsCreatedCount); + const enrichedEvents = await enrichment(limitedEvents); + const wrappedDocs = wrapHits(enrichedEvents, buildReasonMessage); const { bulkCreateDuration: bulkDuration, @@ -171,9 +166,7 @@ export const searchAfterAndBulkCreate = async ({ signalsCreatedCount += createdCount; logger.debug(buildRuleMessage(`created ${createdCount} signals`)); logger.debug(buildRuleMessage(`signalsCreatedCount: ${signalsCreatedCount}`)); - logger.debug( - buildRuleMessage(`enrichedEvents.hits.hits: ${enrichedEvents.hits.hits.length}`) - ); + logger.debug(buildRuleMessage(`enrichedEvents.hits.hits: ${enrichedEvents.length}`)); sendAlertTelemetryEvents( logger, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/send_telemetry_events.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/send_telemetry_events.test.ts index 36bb90936620b..d598b84ea99e2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/send_telemetry_events.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/send_telemetry_events.test.ts @@ -9,100 +9,86 @@ import { selectEvents, enrichEndpointAlertsSignalID } from './send_telemetry_eve describe('sendAlertTelemetry', () => { it('selectEvents', () => { - const filteredEvents = { - took: 0, - timed_out: false, - _shards: { - total: 1, - successful: 1, - failed: 0, - skipped: 0, + const filteredEvents = [ + { + _index: 'x', + _type: 'x', + _id: 'x', + _score: 0, + _source: { + '@timestamp': 'x', + key1: 'hello', + data_stream: { + dataset: 'endpoint.events', + }, + event: { + id: 'foo', + }, + }, }, - hits: { - total: 2, - max_score: 0, - hits: [ - { - _index: 'x', - _type: 'x', - _id: 'x', - _score: 0, - _source: { - '@timestamp': 'x', - key1: 'hello', - data_stream: { - dataset: 'endpoint.events', - }, - event: { - id: 'foo', - }, - }, + { + _index: 'x', + _type: 'x', + _id: 'x', + _score: 0, + _source: { + '@timestamp': 'x', + key2: 'hello', + data_stream: { + dataset: 'endpoint.alerts', + other: 'x', + }, + event: { + id: 'bar', }, - { - _index: 'x', - _type: 'x', - _id: 'x', - _score: 0, - _source: { - '@timestamp': 'x', - key2: 'hello', - data_stream: { - dataset: 'endpoint.alerts', - other: 'x', - }, - event: { - id: 'bar', - }, - }, + }, + }, + { + _index: 'x', + _type: 'x', + _id: 'x', + _score: 0, + _source: { + '@timestamp': 'x', + key3: 'hello', + data_stream: {}, + event: { + id: 'baz', }, - { - _index: 'x', - _type: 'x', - _id: 'x', - _score: 0, - _source: { - '@timestamp': 'x', - key3: 'hello', - data_stream: {}, - event: { - id: 'baz', - }, - }, + }, + }, + { + _index: 'y', + _type: 'y', + _id: 'y', + _score: 0, + _source: { + '@timestamp': 'y', + key3: 'hello', + data_stream: { + dataset: 'endpoint.alerts', + other: 'y', }, - { - _index: 'y', - _type: 'y', - _id: 'y', - _score: 0, - _source: { - '@timestamp': 'y', - key3: 'hello', - data_stream: { - dataset: 'endpoint.alerts', - other: 'y', - }, - event: { - id: 'not-in-map', - }, - }, + event: { + id: 'not-in-map', }, - { - _index: 'z', - _type: 'z', - _id: 'z', - _score: 0, - _source: { - '@timestamp': 'z', - key3: 'no-event-id', - data_stream: { - dataset: 'endpoint.alerts', - other: 'z', - }, - }, + }, + }, + { + _index: 'z', + _type: 'z', + _id: 'z', + _score: 0, + _source: { + '@timestamp': 'z', + key3: 'no-event-id', + data_stream: { + dataset: 'endpoint.alerts', + other: 'z', }, - ], + }, }, - }; + ]; const joinMap = new Map([ ['foo', '1234'], ['bar', 'abcd'], diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/send_telemetry_events.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/send_telemetry_events.ts index 511f148f13d68..e419fdf632137 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/send_telemetry_events.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/send_telemetry_events.ts @@ -9,7 +9,7 @@ import { Logger } from '@kbn/core/server'; import { ITelemetryEventsSender } from '../../telemetry/sender'; import { TelemetryEvent } from '../../telemetry/types'; import { BuildRuleMessage } from './rule_messages'; -import { SignalSearchResponse, SignalSource } from './types'; +import { SignalSource, SignalSourceHit } from './types'; interface SearchResultSource { _source: SignalSource; @@ -18,9 +18,9 @@ interface SearchResultSource { type CreatedSignalId = string; type AlertId = string; -export function selectEvents(filteredEvents: SignalSearchResponse): TelemetryEvent[] { +export function selectEvents(filteredEvents: SignalSourceHit[]): TelemetryEvent[] { // @ts-expect-error @elastic/elasticsearch _source is optional - const sources: TelemetryEvent[] = filteredEvents.hits.hits.map(function ( + const sources: TelemetryEvent[] = filteredEvents.map(function ( obj: SearchResultSource ): TelemetryEvent { return obj._source; @@ -46,7 +46,7 @@ export function enrichEndpointAlertsSignalID( export function sendAlertTelemetryEvents( logger: Logger, eventsTelemetry: ITelemetryEventsSender | undefined, - filteredEvents: SignalSearchResponse, + filteredEvents: SignalSourceHit[], createdEvents: SignalSource[], buildRuleMessage: BuildRuleMessage ) { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_enrichment.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_enrichment.ts index bc31ee660aad8..4c5391d238b31 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_enrichment.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_enrichment.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { SignalSearchResponse, SignalsEnrichment } from '../types'; +import { SignalsEnrichment } from '../types'; import { enrichSignalThreatMatches } from './enrich_signal_threat_matches'; import { BuildThreatEnrichmentOptions, GetMatchedThreats } from './types'; import { getThreatList } from './get_threat_list'; @@ -55,6 +55,5 @@ export const buildThreatEnrichment = ({ return threatResponse.hits.hits; }; - return (signals: SignalSearchResponse): Promise => - enrichSignalThreatMatches(signals, getMatchedThreats, threatIndicatorPath); + return (signals) => enrichSignalThreatMatches(signals, getMatchedThreats, threatIndicatorPath); }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_event_signal.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_event_signal.ts index c5d86c9ab460c..2587c76907ccb 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_event_signal.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_event_signal.ts @@ -10,7 +10,7 @@ import { getFilter } from '../get_filter'; import { searchAfterAndBulkCreate } from '../search_after_bulk_create'; import { buildReasonMessageForThreatMatchAlert } from '../reason_formatters'; import { CreateEventSignalOptions } from './types'; -import { SearchAfterAndBulkCreateReturnType, SignalSearchResponse } from '../types'; +import { SearchAfterAndBulkCreateReturnType, SignalSourceHit } from '../types'; import { getAllThreatListHits } from './get_threat_list'; import { enrichSignalThreatMatches, @@ -112,7 +112,7 @@ export const createEventSignal = async ({ ) ); - const threatEnrichment = (signals: SignalSearchResponse): Promise => + const threatEnrichment = (signals: SignalSourceHit[]): Promise => enrichSignalThreatMatches( signals, () => Promise.resolve(threatListHits), diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/enrich_signal_threat_matches.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/enrich_signal_threat_matches.test.ts index 66e44e5796eb6..b6df435c04dda 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/enrich_signal_threat_matches.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/enrich_signal_threat_matches.test.ts @@ -8,6 +8,7 @@ import { get } from 'lodash'; import { ENRICHMENT_DESTINATION_PATH } from '../../../../../common/constants'; import { ENRICHMENT_TYPES } from '../../../../../common/cti/constants'; +import { SignalSourceHit } from '../types'; import { getThreatListItemMock } from './build_threat_mapping_filter.mock'; import { @@ -16,11 +17,7 @@ import { groupAndMergeSignalMatches, getSignalMatchesFromThreatList, } from './enrich_signal_threat_matches'; -import { - getNamedQueryMock, - getSignalHitMock, - getSignalsResponseMock, -} from './enrich_signal_threat_matches.mock'; +import { getNamedQueryMock, getSignalHitMock } from './enrich_signal_threat_matches.mock'; import { GetMatchedThreats, ThreatListItem, ThreatMatchNamedQuery } from './types'; import { encodeThreatMatchNamedQuery } from './utils'; @@ -507,14 +504,14 @@ describe('enrichSignalThreatMatches', () => { }); it('performs no enrichment if there are no signals', async () => { - const signals = getSignalsResponseMock([]); + const signals: SignalSourceHit[] = []; const enrichedSignals = await enrichSignalThreatMatches( signals, getMatchedThreats, indicatorPath ); - expect(enrichedSignals.hits.hits).toEqual([]); + expect(enrichedSignals).toEqual([]); }); it('preserves existing threat.enrichments objects on signals', async () => { @@ -526,13 +523,13 @@ describe('enrichSignalThreatMatches', () => { }, matched_queries: [matchedQuery], }); - const signals = getSignalsResponseMock([signalHit]); + const signals: SignalSourceHit[] = [signalHit]; const enrichedSignals = await enrichSignalThreatMatches( signals, getMatchedThreats, indicatorPath ); - const [enrichedHit] = enrichedSignals.hits.hits; + const [enrichedHit] = enrichedSignals; const enrichments = get(enrichedHit._source, ENRICHMENT_DESTINATION_PATH); expect(enrichments).toEqual([ @@ -560,13 +557,13 @@ describe('enrichSignalThreatMatches', () => { const signalHit = getSignalHitMock({ matched_queries: [matchedQuery], }); - const signals = getSignalsResponseMock([signalHit]); + const signals: SignalSourceHit[] = [signalHit]; const enrichedSignals = await enrichSignalThreatMatches( signals, getMatchedThreats, indicatorPath ); - const [enrichedHit] = enrichedSignals.hits.hits; + const [enrichedHit] = enrichedSignals; const enrichments = get(enrichedHit._source, ENRICHMENT_DESTINATION_PATH); expect(enrichments).toEqual([ @@ -598,13 +595,13 @@ describe('enrichSignalThreatMatches', () => { }, matched_queries: [matchedQuery], }); - const signals = getSignalsResponseMock([signalHit]); + const signals: SignalSourceHit[] = [signalHit]; const enrichedSignals = await enrichSignalThreatMatches( signals, getMatchedThreats, indicatorPath ); - const [enrichedHit] = enrichedSignals.hits.hits; + const [enrichedHit] = enrichedSignals; const enrichments = get(enrichedHit._source, ENRICHMENT_DESTINATION_PATH); expect(enrichments).toEqual([ @@ -637,7 +634,7 @@ describe('enrichSignalThreatMatches', () => { _source: { '@timestamp': 'mocked', threat: 'whoops' }, matched_queries: [matchedQuery], }); - const signals = getSignalsResponseMock([signalHit]); + const signals: SignalSourceHit[] = [signalHit]; await expect(() => enrichSignalThreatMatches(signals, getMatchedThreats, indicatorPath) ).rejects.toThrowError('Expected threat field to be an object, but found: whoops'); @@ -674,13 +671,13 @@ describe('enrichSignalThreatMatches', () => { }, matched_queries: [matchedQuery], }); - const signals = getSignalsResponseMock([signalHit]); + const signals: SignalSourceHit[] = [signalHit]; const enrichedSignals = await enrichSignalThreatMatches( signals, getMatchedThreats, 'custom_threat.custom_indicator' ); - const [enrichedHit] = enrichedSignals.hits.hits; + const [enrichedHit] = enrichedSignals; const enrichments = get(enrichedHit._source, ENRICHMENT_DESTINATION_PATH); expect(enrichments).toEqual([ @@ -748,16 +745,15 @@ describe('enrichSignalThreatMatches', () => { ), ], }); - const signals = getSignalsResponseMock([signalHit, otherSignalHit]); + const signals: SignalSourceHit[] = [signalHit, otherSignalHit]; const enrichedSignals = await enrichSignalThreatMatches( signals, getMatchedThreats, indicatorPath ); - expect(enrichedSignals.hits.total).toEqual(expect.objectContaining({ value: 1 })); - expect(enrichedSignals.hits.hits).toHaveLength(1); + expect(enrichedSignals).toHaveLength(1); - const [enrichedHit] = enrichedSignals.hits.hits; + const [enrichedHit] = enrichedSignals; const enrichments = get(enrichedHit._source, ENRICHMENT_DESTINATION_PATH); expect(enrichments).toEqual([ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/enrich_signal_threat_matches.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/enrich_signal_threat_matches.ts index c1fb88176fd4c..58a486068013f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/enrich_signal_threat_matches.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/enrich_signal_threat_matches.ts @@ -8,7 +8,7 @@ import { get, isObject } from 'lodash'; import { ENRICHMENT_TYPES, FEED_NAME_PATH } from '../../../../../common/cti/constants'; -import type { SignalSearchResponse, SignalSourceHit } from '../types'; +import type { SignalSourceHit } from '../types'; import type { GetMatchedThreats, ThreatEnrichment, @@ -109,17 +109,16 @@ export const buildEnrichments = ({ }); export const enrichSignalThreatMatches = async ( - signals: SignalSearchResponse, + signals: SignalSourceHit[], getMatchedThreats: GetMatchedThreats, indicatorPath: string, signalMatchesArg?: SignalMatch[] -): Promise => { - const signalHits = signals.hits.hits; - if (signalHits.length === 0) { +): Promise => { + if (signals.length === 0) { return signals; } - const uniqueHits = groupAndMergeSignalMatches(signalHits); + const uniqueHits = groupAndMergeSignalMatches(signals); const signalMatches: SignalMatch[] = signalMatchesArg ? signalMatchesArg : uniqueHits.map((signalHit) => ({ @@ -177,14 +176,5 @@ export const enrichSignalThreatMatches = async ( }; }); - return { - ...signals, - hits: { - ...signals.hits, - hits: enrichedSignals, - total: isObject(signals.hits.total) - ? { ...signals.hits.total, value: enrichedSignals.length } - : enrichedSignals.length, - }, - }; + return enrichedSignals; }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts index 235865a8b60a9..5dc19b1b257b8 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts @@ -277,7 +277,7 @@ export interface AlertAttributes { export type BulkResponseErrorAggregation = Record; -export type SignalsEnrichment = (signals: SignalSearchResponse) => Promise; +export type SignalsEnrichment = (signals: SignalSourceHit[]) => Promise; export type BulkCreate = ( docs: Array> diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/endpoint_alerts.ts b/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/endpoint_alerts.ts index 5a62513b1ab38..41394144e9c66 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/endpoint_alerts.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/endpoint_alerts.ts @@ -17,9 +17,7 @@ const baseAllowlistFields: AllowlistFields = { command_line: true, hash: true, pid: true, - pe: { - original_file_name: true, - }, + pe: true, uptime: true, Ext: { architecture: true, @@ -27,11 +25,15 @@ const baseAllowlistFields: AllowlistFields = { dll: true, malware_signature: true, memory_region: true, + protection: true, real: { entity_id: true, }, token: { + elevation: true, + elevation_type: true, integrity_level_name: true, + security_attributes: true, }, }, thread: true, @@ -44,10 +46,9 @@ const allowlistBaseEventFields: AllowlistFields = { name: true, path: true, code_signature: true, + hash: true, malware_signature: true, - pe: { - original_file_name: true, - }, + pe: true, }, dns: true, event: true, @@ -61,6 +62,7 @@ const allowlistBaseEventFields: AllowlistFields = { mtime: true, directory: true, hash: true, + pe: true, Ext: { bytes_compressed: true, bytes_compressed_present: true, 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 71e8b8e11c215..240634bccdca4 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 @@ -58,6 +58,9 @@ describe('TelemetryEventsSender', () => { path: 'X', test: 'me', another: 'nope', + pe: { + original_file_name: 'malware.exe', + }, Ext: { bytes_compressed: 'data up to 4mb', bytes_compressed_present: 'data up to 4mb', @@ -89,6 +92,9 @@ describe('TelemetryEventsSender', () => { executable: null, // null fields are never allowlisted working_directory: '/some/usr/dir', entity_id: 'some_entity_id', + Ext: { + protection: 'PsProtectedSignerAntimalware-Light', + }, }, Responses: '{ "result": 0 }', // >= 7.15 Target: { @@ -132,6 +138,9 @@ describe('TelemetryEventsSender', () => { size: 3, created: 0, path: 'X', + pe: { + original_file_name: 'malware.exe', + }, Ext: { bytes_compressed: 'data up to 4mb', bytes_compressed_present: 'data up to 4mb', @@ -159,6 +168,9 @@ describe('TelemetryEventsSender', () => { name: 'foo.exe', working_directory: '/some/usr/dir', entity_id: 'some_entity_id', + Ext: { + protection: 'PsProtectedSignerAntimalware-Light', + }, }, Responses: '{ "result": 0 }', Target: { diff --git a/x-pack/plugins/session_view/common/mocks/constants/session_view_process.mock.ts b/x-pack/plugins/session_view/common/mocks/constants/session_view_process.mock.ts index 6def7c7bcbd47..76f954d1fe72e 100644 --- a/x-pack/plugins/session_view/common/mocks/constants/session_view_process.mock.ts +++ b/x-pack/plugins/session_view/common/mocks/constants/session_view_process.mock.ts @@ -819,8 +819,8 @@ export const mockAlerts: ProcessEvent[] = [ architecture: 'x86_64', hostname: 'james-fleet-714-2', id: '48c1b3f1ac5da4e0057fc9f60f4d1d5d', - ip: '127.0.0.1,::1,10.132.0.50,fe80::7d39:3147:4d9a:f809', - mac: '42:01:0a:84:00:32', + ip: ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809'], + mac: ['42:01:0a:84:00:32'], name: 'james-fleet-714-2', os: { family: 'centos', @@ -1006,8 +1006,8 @@ export const mockAlerts: ProcessEvent[] = [ architecture: 'x86_64', hostname: 'james-fleet-714-2', id: '48c1b3f1ac5da4e0057fc9f60f4d1d5d', - ip: '127.0.0.1,::1,10.132.0.50,fe80::7d39:3147:4d9a:f809', - mac: '42:01:0a:84:00:32', + ip: ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809'], + mac: ['42:01:0a:84:00:32'], name: 'james-fleet-714-2', os: { family: 'centos', @@ -1285,8 +1285,8 @@ export const childProcessMock: Process = { architecture: 'x86_64', hostname: 'james-fleet-714-2', id: '48c1b3f1ac5da4e0057fc9f60f4d1d5d', - ip: '127.0.0.1,::1,10.132.0.50,fe80::7d39:3147:4d9a:f809', - mac: '42:01:0a:84:00:32', + ip: ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809'], + mac: ['42:01:0a:84:00:32'], name: 'james-fleet-714-2', os: { family: 'centos', @@ -1370,8 +1370,8 @@ export const processMock: Process = { architecture: 'x86_64', hostname: 'james-fleet-714-2', id: '48c1b3f1ac5da4e0057fc9f60f4d1d5d', - ip: '127.0.0.1,::1,10.132.0.50,fe80::7d39:3147:4d9a:f809', - mac: '42:01:0a:84:00:32', + ip: ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809'], + mac: ['42:01:0a:84:00:32'], name: 'james-fleet-714-2', os: { family: 'centos', diff --git a/x-pack/plugins/session_view/common/mocks/responses/session_view_process_events.mock.ts b/x-pack/plugins/session_view/common/mocks/responses/session_view_process_events.mock.ts index 47849f859ba9c..78206cc1a6320 100644 --- a/x-pack/plugins/session_view/common/mocks/responses/session_view_process_events.mock.ts +++ b/x-pack/plugins/session_view/common/mocks/responses/session_view_process_events.mock.ts @@ -24,8 +24,8 @@ export const sessionViewProcessEventsMock: ProcessEventResults = { architecture: 'x86_64', hostname: 'james-fleet-714-2', id: '48c1b3f1ac5da4e0057fc9f60f4d1d5d', - ip: '127.0.0.1,::1,10.132.0.50,fe80::7d39:3147:4d9a:f809', - mac: '42:01:0a:84:00:32', + ip: ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809'], + mac: ['42:01:0a:84:00:32'], name: 'james-fleet-714-2', os: { Ext: { @@ -427,8 +427,8 @@ export const sessionViewProcessEventsMock: ProcessEventResults = { architecture: 'x86_64', hostname: 'james-fleet-714-2', id: '48c1b3f1ac5da4e0057fc9f60f4d1d5d', - ip: '127.0.0.1,::1,10.132.0.50,fe80::7d39:3147:4d9a:f809', - mac: '42:01:0a:84:00:32', + ip: ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809'], + mac: ['42:01:0a:84:00:32'], name: 'james-fleet-714-2', os: { Ext: { @@ -836,8 +836,8 @@ export const sessionViewProcessEventsMock: ProcessEventResults = { architecture: 'x86_64', hostname: 'james-fleet-714-2', id: '48c1b3f1ac5da4e0057fc9f60f4d1d5d', - ip: '127.0.0.1,::1,10.132.0.50,fe80::7d39:3147:4d9a:f809', - mac: '42:01:0a:84:00:32', + ip: ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809'], + mac: ['42:01:0a:84:00:32'], name: 'james-fleet-714-2', os: { Ext: { diff --git a/x-pack/plugins/session_view/common/types/process_tree/index.ts b/x-pack/plugins/session_view/common/types/process_tree/index.ts index 11f5aeb2ffac2..f337b6a38c742 100644 --- a/x-pack/plugins/session_view/common/types/process_tree/index.ts +++ b/x-pack/plugins/session_view/common/types/process_tree/index.ts @@ -97,8 +97,8 @@ export interface ProcessEventHost { architecture?: string; hostname?: string; id?: string; - ip?: string; - mac?: string; + ip?: string[]; + mac?: string[]; name?: string; os?: { family?: string; diff --git a/x-pack/plugins/session_view/public/components/detail_panel_copy/index.test.tsx b/x-pack/plugins/session_view/public/components/detail_panel_copy/index.test.tsx index 3489b516689de..2b1f53c9ab8ab 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_copy/index.test.tsx +++ b/x-pack/plugins/session_view/public/components/detail_panel_copy/index.test.tsx @@ -24,7 +24,9 @@ describe('DetailPanelCopy component', () => { describe('When DetailPanelCopy is mounted', () => { it('renders DetailPanelCopy correctly', async () => { renderResult = mockedContext.render( - {TEST_CHILD} + + {TEST_CHILD} + ); expect(renderResult.queryByText(TEST_TEXT_COPY)).toBeVisible(); diff --git a/x-pack/plugins/session_view/public/components/detail_panel_copy/index.tsx b/x-pack/plugins/session_view/public/components/detail_panel_copy/index.tsx index 92bfe6bd0c73e..72febd9ea25ea 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_copy/index.tsx +++ b/x-pack/plugins/session_view/public/components/detail_panel_copy/index.tsx @@ -8,12 +8,12 @@ import React, { ReactNode } from 'react'; import { EuiButtonIcon, EuiCopy, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { DetailPanelListItem } from '../detail_panel_list_item'; -import { dataOrDash } from '../../utils/data_or_dash'; import { useStyles } from './styles'; interface DetailPanelCopyDeps { children: ReactNode; textToCopy: string; + tooltipContent: ReactNode; display?: 'inlineBlock' | 'block' | undefined; } @@ -28,6 +28,7 @@ interface DetailPanelListItemProps { export const DetailPanelCopy = ({ children, textToCopy, + tooltipContent, display = 'inlineBlock', }: DetailPanelCopyDeps) => { const styles = useStyles(); @@ -57,7 +58,7 @@ export const DetailPanelCopy = ({ return ( - + <>{children} diff --git a/x-pack/plugins/session_view/public/components/detail_panel_host_tab/helpers.test.ts b/x-pack/plugins/session_view/public/components/detail_panel_host_tab/helpers.test.ts new file mode 100644 index 0000000000000..a2d096d91310e --- /dev/null +++ b/x-pack/plugins/session_view/public/components/detail_panel_host_tab/helpers.test.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 { ProcessEventHost } from '../../../common/types/process_tree'; +import { DASH } from '../../constants'; +import { getHostData } from './helpers'; + +const MOCK_HOST_DATA: ProcessEventHost = { + architecture: 'x86_64', + hostname: 'james-fleet-714-2', + id: '48c1b3f1ac5da4e0057fc9f60f4d1d5d', + ip: ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809'], + mac: ['42:01:0a:84:00:32'], + name: 'james-fleet-714-2', + os: { + family: 'centos', + full: 'CentOS 7.9.2009', + kernel: '3.10.0-1160.31.1.el7.x86_64 #1 SMP Thu Jun 10 13:32:12 UTC 2021', + name: 'Linux', + platform: 'centos', + version: '7.9.2009', + }, +}; + +describe('detail panel host tab helpers tests', () => { + it('getHostData returns fields with a dash with undefined host', () => { + const result = getHostData(undefined); + expect(result.architecture).toEqual(DASH); + expect(result.hostname).toEqual(DASH); + expect(result.id).toEqual(DASH); + expect(result.ip).toEqual(DASH); + expect(result.mac).toEqual(DASH); + expect(result.name).toEqual(DASH); + expect(result.os.family).toEqual(DASH); + expect(result.os.full).toEqual(DASH); + expect(result.os.kernel).toEqual(DASH); + expect(result.os.name).toEqual(DASH); + expect(result.os.platform).toEqual(DASH); + expect(result.os.version).toEqual(DASH); + }); + + it('getHostData returns dashes for missing fields', () => { + const result = getHostData({ + ...MOCK_HOST_DATA, + ip: ['127.0.0.1', '', '', 'fe80::7d39:3147:4d9a:f809'], + name: undefined, + os: { + ...MOCK_HOST_DATA.os, + full: undefined, + platform: undefined, + }, + }); + expect(result.architecture).toEqual(MOCK_HOST_DATA.architecture); + expect(result.hostname).toEqual(MOCK_HOST_DATA.hostname); + expect(result.id).toEqual(MOCK_HOST_DATA.id); + expect(result.ip).toEqual(['127.0.0.1', DASH, DASH, 'fe80::7d39:3147:4d9a:f809'].join(', ')); + expect(result.mac).toEqual(MOCK_HOST_DATA.mac?.join(', ')); + expect(result.name).toEqual(DASH); + expect(result.os.family).toEqual(MOCK_HOST_DATA.os?.family); + expect(result.os.full).toEqual(DASH); + expect(result.os.kernel).toEqual(MOCK_HOST_DATA.os?.kernel); + expect(result.os.name).toEqual(MOCK_HOST_DATA.os?.name); + expect(result.os.platform).toEqual(DASH); + expect(result.os.version).toEqual(MOCK_HOST_DATA.os?.version); + }); + + it('getHostData returns all data provided', () => { + const result = getHostData(MOCK_HOST_DATA); + expect(result.architecture).toEqual(MOCK_HOST_DATA.architecture); + expect(result.hostname).toEqual(MOCK_HOST_DATA.hostname); + expect(result.id).toEqual(MOCK_HOST_DATA.id); + expect(result.ip).toEqual(MOCK_HOST_DATA.ip?.join(', ')); + expect(result.mac).toEqual(MOCK_HOST_DATA.mac?.join(', ')); + expect(result.name).toEqual(MOCK_HOST_DATA.name); + expect(result.os.family).toEqual(MOCK_HOST_DATA.os?.family); + expect(result.os.full).toEqual(MOCK_HOST_DATA.os?.full); + expect(result.os.kernel).toEqual(MOCK_HOST_DATA.os?.kernel); + expect(result.os.name).toEqual(MOCK_HOST_DATA.os?.name); + expect(result.os.platform).toEqual(MOCK_HOST_DATA.os?.platform); + expect(result.os.version).toEqual(MOCK_HOST_DATA.os?.version); + }); +}); diff --git a/x-pack/plugins/session_view/public/components/detail_panel_host_tab/helpers.ts b/x-pack/plugins/session_view/public/components/detail_panel_host_tab/helpers.ts new file mode 100644 index 0000000000000..72565f5885e37 --- /dev/null +++ b/x-pack/plugins/session_view/public/components/detail_panel_host_tab/helpers.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 { ProcessEventHost } from '../../../common/types/process_tree'; +import { DASH } from '../../constants'; +import { DetailPanelHost } from '../../types'; +import { dataOrDash } from '../../utils/data_or_dash'; + +export const getHostData = (host: ProcessEventHost | undefined): DetailPanelHost => { + const detailPanelHost: DetailPanelHost = { + architecture: DASH, + hostname: DASH, + id: DASH, + ip: DASH, + mac: DASH, + name: DASH, + os: { + family: DASH, + full: DASH, + kernel: DASH, + name: DASH, + platform: DASH, + version: DASH, + }, + }; + + if (!host) { + return detailPanelHost; + } + + detailPanelHost.hostname = dataOrDash(host.hostname).toString(); + detailPanelHost.id = dataOrDash(host.id).toString(); + detailPanelHost.ip = host.ip?.map?.((ip) => dataOrDash(ip)).join(', ') ?? DASH; + detailPanelHost.mac = host.mac?.map?.((mac) => dataOrDash(mac)).join(', ') ?? DASH; + detailPanelHost.name = dataOrDash(host.name).toString(); + detailPanelHost.architecture = dataOrDash(host.architecture).toString(); + detailPanelHost.os.family = dataOrDash(host.os?.family).toString(); + detailPanelHost.os.full = dataOrDash(host.os?.full).toString(); + detailPanelHost.os.kernel = dataOrDash(host.os?.kernel).toString(); + detailPanelHost.os.name = dataOrDash(host.os?.name).toString(); + detailPanelHost.os.platform = dataOrDash(host.os?.platform).toString(); + detailPanelHost.os.version = dataOrDash(host.os?.version).toString(); + + return detailPanelHost; +}; diff --git a/x-pack/plugins/session_view/public/components/detail_panel_host_tab/index.test.tsx b/x-pack/plugins/session_view/public/components/detail_panel_host_tab/index.test.tsx index 17e9102fb8ed9..41a5ada524974 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_host_tab/index.test.tsx +++ b/x-pack/plugins/session_view/public/components/detail_panel_host_tab/index.test.tsx @@ -13,8 +13,8 @@ import { DetailPanelHostTab } from '.'; const TEST_ARCHITECTURE = 'x86_64'; const TEST_HOSTNAME = 'host-james-fleet-714-2'; const TEST_ID = '48c1b3f1ac5da4e0057fc9f60f4d1d5d'; -const TEST_IP = '127.0.0.1,::1,10.132.0.50,fe80::7d39:3147:4d9a:f809'; -const TEST_MAC = '42:01:0a:84:00:32'; +const TEST_IP = ['127.0.0.1', '::1', '10.132.0.50', 'fe80::7d39:3147:4d9a:f809']; +const TEST_MAC = ['42:01:0a:84:00:32']; const TEST_NAME = 'name-james-fleet-714-2'; const TEST_OS_FAMILY = 'family-centos'; const TEST_OS_FULL = 'full-CentOS 7.9.2009'; @@ -62,8 +62,8 @@ describe('DetailPanelHostTab component', () => { expect(renderResult.queryByText(TEST_ARCHITECTURE)).toBeVisible(); expect(renderResult.queryByText(TEST_HOSTNAME)).toBeVisible(); expect(renderResult.queryByText(TEST_ID)).toBeVisible(); - expect(renderResult.queryByText(TEST_IP)).toBeVisible(); - expect(renderResult.queryByText(TEST_MAC)).toBeVisible(); + expect(renderResult.queryByText(TEST_IP.join(', '))).toBeVisible(); + expect(renderResult.queryByText(TEST_MAC.join(', '))).toBeVisible(); expect(renderResult.queryByText(TEST_NAME)).toBeVisible(); // expand host os accordion diff --git a/x-pack/plugins/session_view/public/components/detail_panel_host_tab/index.tsx b/x-pack/plugins/session_view/public/components/detail_panel_host_tab/index.tsx index 49e77089972a4..2b1c2f97fa738 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_host_tab/index.tsx +++ b/x-pack/plugins/session_view/public/components/detail_panel_host_tab/index.tsx @@ -4,15 +4,15 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React from 'react'; +import React, { useMemo } from 'react'; import { EuiTextColor } from '@elastic/eui'; import { ProcessEventHost } from '../../../common/types/process_tree'; import { DetailPanelAccordion } from '../detail_panel_accordion'; import { DetailPanelCopy } from '../detail_panel_copy'; import { DetailPanelDescriptionList } from '../detail_panel_description_list'; import { DetailPanelListItem } from '../detail_panel_list_item'; -import { dataOrDash } from '../../utils/data_or_dash'; import { useStyles } from '../detail_panel_process_tab/styles'; +import { getHostData } from './helpers'; interface DetailPanelHostTabDeps { processHost?: ProcessEventHost; @@ -23,6 +23,7 @@ interface DetailPanelHostTabDeps { */ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { const styles = useStyles(); + const hostData = useMemo(() => getHostData(processHost), [processHost]); return ( <> @@ -31,9 +32,12 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { { title: hostname, description: ( - + - {dataOrDash(processHost?.hostname)} + {hostData.hostname} ), @@ -41,9 +45,12 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { { title: id, description: ( - + - {dataOrDash(processHost?.id)} + {hostData.id} ), @@ -51,9 +58,12 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { { title: ip, description: ( - + - {dataOrDash(processHost?.ip)} + {hostData.ip} ), @@ -61,9 +71,12 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { { title: mac, description: ( - + - {dataOrDash(processHost?.mac)} + {hostData.mac} ), @@ -71,9 +84,12 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { { title: name, description: ( - + - {dataOrDash(processHost?.name)} + {hostData.name} ), @@ -88,10 +104,11 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { title: architecture, description: ( - {dataOrDash(processHost?.architecture)} + {hostData.architecture} ), @@ -100,10 +117,11 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { title: os.family, description: ( - {dataOrDash(processHost?.os?.family)} + {hostData.os.family} ), @@ -111,9 +129,12 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { { title: os.full, description: ( - + - {dataOrDash(processHost?.os?.full)} + {hostData.os.full} ), @@ -122,10 +143,11 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { title: os.kernel, description: ( - {dataOrDash(processHost?.os?.kernel)} + {hostData.os.kernel} ), @@ -133,9 +155,12 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { { title: os.name, description: ( - + - {dataOrDash(processHost?.os?.name)} + {hostData.os.name} ), @@ -144,10 +169,11 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { title: os.platform, description: ( - {dataOrDash(processHost?.os?.platform)} + {hostData.os.platform} ), @@ -156,10 +182,11 @@ export const DetailPanelHostTab = ({ processHost }: DetailPanelHostTabDeps) => { title: os.version, description: ( - {dataOrDash(processHost?.os?.version)} + {hostData.os.version} ), diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.test.ts b/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.test.ts index de5339fa2bbbe..a50c6e73e198d 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.test.ts +++ b/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.test.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { DASH } from '../../constants'; import { getProcessExecutableCopyText, formatProcessArgs, getIsInterativeString } from './helpers'; describe('detail panel process tab helpers tests', () => { @@ -36,7 +37,7 @@ describe('detail panel process tab helpers tests', () => { it("formatProcessArgs returns '-' when given empty args array", () => { const result = formatProcessArgs([]); - expect(result).toEqual('-'); + expect(result).toEqual(DASH); }); it('formatProcessArgs returns formatted args string', () => { diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.ts b/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.ts index 4584e7fb217dd..4417a5329a752 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.ts +++ b/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.ts @@ -5,7 +5,29 @@ * 2.0. */ -import { Teletype } from '../../../common/types/process_tree'; +import { EventAction, Process, ProcessFields, Teletype } from '../../../common/types/process_tree'; +import { DetailPanelProcess, DetailPanelProcessLeader } from '../../types'; +import { DASH } from '../../constants'; +import { dataOrDash } from '../../utils/data_or_dash'; + +const FILTER_FORKS_EXECS = [EventAction.fork, EventAction.exec]; + +const DEFAULT_PROCESS_DATA: DetailPanelProcessLeader = { + id: DASH, + name: DASH, + start: DASH, + end: DASH, + exitCode: DASH, + userName: DASH, + groupName: DASH, + workingDirectory: DASH, + interactive: DASH, + args: DASH, + pid: DASH, + entryMetaType: DASH, + entryMetaSourceIp: DASH, + executable: [[DASH]], +}; /** * Serialize an array of executable tuples to a copyable text. @@ -32,11 +54,11 @@ export const getProcessExecutableCopyText = (executable: string[][]): string => /** * Format an array of args for display. * - * @param {String[]} args + * @param {String[] | undefined} args * @return {String} formatted string of process args */ -export const formatProcessArgs = (args: string[]): string => - args.length ? `[${args.map((arg) => `'${arg}'`).join(', ')}]` : '-'; +export const formatProcessArgs = (args: string[] | undefined): string => + args && args.length && args.map ? `[${args.map((arg) => `'${arg}'`).join(', ')}]` : DASH; /** * Get isInteractive boolean string from tty. @@ -46,3 +68,86 @@ export const formatProcessArgs = (args: string[]): string => */ export const getIsInterativeString = (tty: Teletype | undefined): string => !!tty ? 'True' : 'False'; + +const getDetailPanelProcessLeader = ( + leader: ProcessFields | undefined +): DetailPanelProcessLeader => ({ + ...leader, + id: leader?.entity_id ?? DEFAULT_PROCESS_DATA.id, + name: leader?.name ?? DEFAULT_PROCESS_DATA.name, + start: leader?.start ?? DEFAULT_PROCESS_DATA.start, + end: leader?.end ?? DEFAULT_PROCESS_DATA.end, + exitCode: leader?.exit_code?.toString() ?? DEFAULT_PROCESS_DATA.exitCode, + interactive: getIsInterativeString(leader?.tty), + userName: leader?.user?.name ?? DEFAULT_PROCESS_DATA.userName, + groupName: leader?.group?.name ?? DEFAULT_PROCESS_DATA.groupName, + workingDirectory: leader?.working_directory ?? DEFAULT_PROCESS_DATA.workingDirectory, + args: formatProcessArgs(leader?.args) ?? DEFAULT_PROCESS_DATA.args, + pid: leader?.pid?.toString() ?? DEFAULT_PROCESS_DATA.pid, + // TODO: get the event action of leader + executable: leader?.executable ? [[leader?.executable]] : DEFAULT_PROCESS_DATA.executable, + entryMetaType: leader?.entry_meta?.type ?? DEFAULT_PROCESS_DATA.entryMetaType, + entryMetaSourceIp: leader?.entry_meta?.source?.ip ?? DEFAULT_PROCESS_DATA.entryMetaSourceIp, +}); + +export const getDetailPanelProcess = (process: Process | null): DetailPanelProcess => { + const processData = { + id: DEFAULT_PROCESS_DATA.id, + start: DEFAULT_PROCESS_DATA.start, + end: DEFAULT_PROCESS_DATA.end, + exitCode: DEFAULT_PROCESS_DATA.exitCode, + interactive: DEFAULT_PROCESS_DATA.interactive, + userName: DEFAULT_PROCESS_DATA.userName, + groupName: DEFAULT_PROCESS_DATA.groupName, + args: DEFAULT_PROCESS_DATA.args, + pid: DEFAULT_PROCESS_DATA.pid, + executable: DEFAULT_PROCESS_DATA.executable, + workingDirectory: DEFAULT_PROCESS_DATA.workingDirectory, + entryLeader: DEFAULT_PROCESS_DATA, + sessionLeader: DEFAULT_PROCESS_DATA, + groupLeader: DEFAULT_PROCESS_DATA, + parent: DEFAULT_PROCESS_DATA, + } as DetailPanelProcess; + if (!process) { + return processData; + } + + const details = process.getDetails(); + + processData.id = `${dataOrDash(process.id)}`; + processData.start = `${dataOrDash(details.process?.start)}`; + processData.end = `${dataOrDash(process.getEndTime())}`; + processData.exitCode = `${dataOrDash(details.process?.exit_code)}`; + processData.interactive = getIsInterativeString(details.process?.tty); + processData.userName = `${dataOrDash(details.process?.user?.name)}`; + processData.groupName = `${dataOrDash(details.process?.group?.name)}`; + processData.pid = `${dataOrDash(details.process?.pid)}`; + processData.workingDirectory = `${dataOrDash(details.process?.working_directory)}`; + if (details.process?.args) { + processData.args = formatProcessArgs(details.process.args); + } + + // we grab the executable from each process lifecycle event to give an indication + // of the processes journey. Processes can sometimes exec multiple times, so it's good + // information to have. + processData.executable = []; + process.events.forEach((event) => { + if ( + event.process?.executable && + event.event?.action && + FILTER_FORKS_EXECS.includes(event.event.action) + ) { + processData.executable.push([event.process.executable, `(${event.event.action})`]); + } + }); + if (!processData.executable.length) { + processData.executable = DEFAULT_PROCESS_DATA.executable; + } + + processData.entryLeader = getDetailPanelProcessLeader(details?.process?.entry_leader); + processData.sessionLeader = getDetailPanelProcessLeader(details?.process?.session_leader); + processData.groupLeader = getDetailPanelProcessLeader(details?.process?.group_leader); + processData.parent = getDetailPanelProcessLeader(details?.process?.parent); + + return processData; +}; diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.test.tsx b/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.test.tsx index 7daaf997e2af8..488d83ca9880e 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.test.tsx +++ b/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.test.tsx @@ -7,60 +7,15 @@ import React from 'react'; import { AppContextTestRender, createAppRootMockRenderer } from '../../test'; -import { DetailPanelProcess, DetailPanelProcessLeader } from '../../types'; +import { sessionViewBasicProcessMock } from '../../../common/mocks/constants/session_view_process.mock'; import { DetailPanelProcessTab } from '.'; -const getLeaderDetail = (leader: string): DetailPanelProcessLeader => ({ - id: `${leader}-id`, - name: `${leader}-name`, - start: new Date('2022-02-24').toISOString(), - entryMetaType: 'sshd', - working_directory: '/home/jack', - tty: { - char_device: { - major: 8, - minor: 1, - }, - }, - args: ['ls'], - userName: `${leader}-jack`, - groupName: `${leader}-jack-group`, - pid: 1234, - entryMetaSourceIp: '10.132.0.50', - executable: '/usr/bin/bash', -}); - -const TEST_PROCESS_DETAIL: DetailPanelProcess = { - id: 'process-id', - start: new Date('2022-02-22').toISOString(), - end: new Date('2022-02-23').toISOString(), - exit_code: 137, - userName: 'process-jack', - groupName: 'process-jack-group', - args: ['vi', 'test.txt'], - executable: [ - ['test-executable-cmd', '(fork)'], - ['test-executable-cmd', '(exec)'], - ['test-executable-cmd', '(end)'], - ], - working_directory: '/home/jack', - tty: { - char_device: { - major: 8, - minor: 1, - }, - }, - pid: 1233, - entryLeader: getLeaderDetail('entryLeader'), - sessionLeader: getLeaderDetail('sessionLeader'), - groupLeader: getLeaderDetail('groupLeader'), - parent: getLeaderDetail('parent'), -}; - describe('DetailPanelProcessTab component', () => { let render: () => ReturnType; let renderResult: ReturnType; let mockedContext: AppContextTestRender; + const processDetail = sessionViewBasicProcessMock.getDetails(); + const MOCK_PROCESS_END = '2021-11-24T15:25:04.210Z'; beforeEach(() => { mockedContext = createAppRootMockRenderer(); @@ -69,21 +24,29 @@ describe('DetailPanelProcessTab component', () => { describe('When DetailPanelProcessTab is mounted', () => { it('renders DetailPanelProcessTab correctly', async () => { renderResult = mockedContext.render( - + MOCK_PROCESS_END, + }} + /> ); // Process detail rendered correctly - expect(renderResult.queryByText(TEST_PROCESS_DETAIL.id)).toBeVisible(); - expect(renderResult.queryByText(TEST_PROCESS_DETAIL.start)).toBeVisible(); - expect(renderResult.queryByText(TEST_PROCESS_DETAIL.end)).toBeVisible(); - expect(renderResult.queryByText(TEST_PROCESS_DETAIL.exit_code!)).toBeVisible(); - expect(renderResult.queryByText(TEST_PROCESS_DETAIL.userName)).toBeVisible(); - expect(renderResult.queryByText(`['vi', 'test.txt']`)).toBeVisible(); - expect(renderResult.queryAllByText('test-executable-cmd')).toHaveLength(3); + expect(renderResult.queryByText(processDetail!.process!.entity_id!)).toBeVisible(); + expect(renderResult.queryByText(processDetail!.process!.start!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_PROCESS_END)).toBeVisible(); + expect(renderResult.queryByText(processDetail!.process!.exit_code!)).toBeVisible(); + expect(renderResult.queryAllByText(processDetail!.process!.user!.name!)).toHaveLength(10); + expect(renderResult.queryAllByText(processDetail!.process!.working_directory!)).toHaveLength( + 5 + ); + expect(renderResult.queryByText(`['bash']`)).toBeVisible(); + expect(renderResult.queryAllByText('/usr/bin/bash')).toHaveLength(5); + expect(renderResult.queryByText('/usr/bin/vi')).toBeVisible(); expect(renderResult.queryByText('(fork)')).toBeVisible(); expect(renderResult.queryByText('(exec)')).toBeVisible(); - expect(renderResult.queryByText('(end)')).toBeVisible(); - expect(renderResult.queryByText(TEST_PROCESS_DETAIL.pid!)).toBeVisible(); + expect(renderResult.queryByText(processDetail!.process!.pid!)).toBeVisible(); // Process tab accordions rendered correctly // TODO: revert back when we have jump to leaders button working diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.tsx b/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.tsx index 7fbf2f262f9cf..f62c6188203a2 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.tsx +++ b/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.tsx @@ -4,20 +4,20 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { ReactNode } from 'react'; +import React, { ReactNode, useCallback, useMemo } from 'react'; import { EuiTextColor } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { DetailPanelProcess } from '../../types'; +import { Process } from '../../../common/types/process_tree'; import { DetailPanelAccordion } from '../detail_panel_accordion'; import { DetailPanelCopy } from '../detail_panel_copy'; import { DetailPanelDescriptionList } from '../detail_panel_description_list'; import { DetailPanelListItem } from '../detail_panel_list_item'; import { dataOrDash } from '../../utils/data_or_dash'; -import { getProcessExecutableCopyText, formatProcessArgs, getIsInterativeString } from './helpers'; +import { getProcessExecutableCopyText, getDetailPanelProcess } from './helpers'; import { useStyles } from './styles'; interface DetailPanelProcessTabDeps { - processDetail: DetailPanelProcess; + selectedProcess: Process | null; } type ListItems = Array<{ @@ -70,8 +70,30 @@ const LEADER_FIELD_PREFIX = [ /** * Detail panel in the session view. */ -export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDeps) => { +export const DetailPanelProcessTab = ({ selectedProcess }: DetailPanelProcessTabDeps) => { const styles = useStyles(); + + const processDetail = useMemo(() => getDetailPanelProcess(selectedProcess), [selectedProcess]); + const renderExecs = useCallback( + (executable: string[][]) => + executable.map((execTuple, idx) => { + const [exec, eventAction] = execTuple; + return ( +
+ + {exec} + + {eventAction && ( + + {eventAction} + + )} +
+ ); + }), + [styles.descriptionSemibold, styles.ellipsis, styles.executableAction] + ); + const leaderListItems = [ processDetail.entryLeader, processDetail.sessionLeader, @@ -82,27 +104,29 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe id, start, end, - exit_code: exitCode, + exitCode, entryMetaType, - tty, - working_directory: workingDirectory, + interactive, + workingDirectory, args, + executable, pid, userName, groupName, entryMetaSourceIp, } = leader; - const leaderArgs = formatProcessArgs(args); - const isLeaderInteractive = getIsInterativeString(tty); + + const leaderExecutableText = getProcessExecutableCopyText(executable); const listItems: ListItems = [ { title: entity_id, description: ( - {dataOrDash(id)} + {id} ), @@ -110,8 +134,22 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe { title: args, description: ( - - {leaderArgs} + + {args} + + ), + }, + { + title: executable, + description: ( + + {renderExecs(executable)} ), }, @@ -119,10 +157,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: interactive, description: ( - {isLeaderInteractive} + {interactive} ), @@ -131,12 +170,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: working_directory, description: ( - {dataOrDash(workingDirectory)} + {workingDirectory} ), @@ -144,9 +182,12 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe { title: pid, description: ( - + - {dataOrDash(pid)} + {pid} ), @@ -154,16 +195,22 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe { title: start, description: ( - - {dataOrDash(start)} + + {start} ), }, { title: end, description: ( - - {dataOrDash(end)} + + {end} ), }, @@ -171,10 +218,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: exit_code, description: ( - {dataOrDash(exitCode)} + {exitCode} ), @@ -183,9 +231,10 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: user.name, description: ( - {dataOrDash(userName)} + {userName} ), }, @@ -193,9 +242,10 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: group.name, description: ( - {dataOrDash(groupName)} + {groupName} ), }, @@ -207,12 +257,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: entry_meta.type, description: ( - {dataOrDash(entryMetaType)} + {entryMetaType} ), @@ -221,9 +270,8 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: entry_meta.source.ip, description: ( {dataOrDash(entryMetaSourceIp)} @@ -244,17 +292,15 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe start, end, executable, - exit_code: exitCode, + exitCode, pid, - working_directory: workingDirectory, - tty, + workingDirectory, + interactive, userName, groupName, args, } = processDetail; - - const isInteractive = getIsInterativeString(tty); - const processArgs = formatProcessArgs(args); + const executableText = getProcessExecutableCopyText(executable); return ( <> @@ -264,10 +310,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: entity_id, description: ( - {dataOrDash(id)} + {id} ), @@ -275,8 +322,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe { title: args, description: ( - - {processArgs} + + {args} ), }, @@ -284,24 +334,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: executable, description: ( - {executable.map((execTuple, idx) => { - const [exec, eventAction] = execTuple; - return ( -
- - {dataOrDash(exec)} - - - {eventAction} - -
- ); - })} + {renderExecs(executable)}
), }, @@ -309,10 +346,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: interactive, description: ( - {isInteractive} + {interactive} ), @@ -321,12 +359,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: working_directory, description: ( - {dataOrDash(workingDirectory)} + {workingDirectory} ), @@ -334,9 +371,12 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe { title: pid, description: ( - + - {dataOrDash(pid)} + {pid} ), @@ -344,16 +384,22 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe { title: start, description: ( - - {dataOrDash(start)} + + {start} ), }, { title: end, description: ( - - {dataOrDash(end)} + + {end} ), }, @@ -361,10 +407,11 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: exit_code, description: ( - {dataOrDash(exitCode)} + {exitCode} ), @@ -373,9 +420,10 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: user.name, description: ( - {dataOrDash(userName)} + {userName} ), }, @@ -383,9 +431,10 @@ export const DetailPanelProcessTab = ({ processDetail }: DetailPanelProcessTabDe title: group.name, description: ( - {dataOrDash(groupName)} + {groupName} ), }, diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap b/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap index 9614bb1267ea5..b26778c8f8eea 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap @@ -6,7 +6,7 @@ Object { "baseElement":
@@ -28,7 +28,7 @@ Object { data-euiicon-type="alert" />
cmd test alert
@@ -52,7 +52,7 @@ Object { , "container":
@@ -74,7 +74,7 @@ Object { data-euiicon-type="alert" />
cmd test alert
diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/index.tsx b/x-pack/plugins/session_view/public/components/process_tree_alert/index.tsx index 954492782ab93..f01f08f8e3095 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_alert/index.tsx +++ b/x-pack/plugins/session_view/public/components/process_tree_alert/index.tsx @@ -73,7 +73,9 @@ export const ProcessTreeAlert = ({ onClick={handleExpandClick} /> - {dataOrDash(name)} + + {dataOrDash(name)} + {dataOrDash(status)} diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/styles.ts b/x-pack/plugins/session_view/public/components/process_tree_alert/styles.ts index db06be06cc2aa..e8d3b0374c978 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_alert/styles.ts +++ b/x-pack/plugins/session_view/public/components/process_tree_alert/styles.ts @@ -6,8 +6,9 @@ */ import { useMemo } from 'react'; -import { useEuiTheme, transparentize } from '@elastic/eui'; +import { transparentize } from '@elastic/eui'; import { CSSObject } from '@emotion/react'; +import { useEuiTheme } from '../../hooks'; interface StylesDeps { isInvestigated: boolean; @@ -15,7 +16,7 @@ interface StylesDeps { } export const useStyles = ({ isInvestigated, isSelected }: StylesDeps) => { - const { euiTheme } = useEuiTheme(); + const { euiTheme, euiVars } = useEuiTheme(); const cached = useMemo(() => { const { size, colors, font } = euiTheme; @@ -45,8 +46,7 @@ export const useStyles = ({ isInvestigated, isSelected }: StylesDeps) => { display: 'flex', gap: size.s, alignItems: 'center', - minHeight: '20px', - padding: `${size.xs} ${size.base}`, + padding: `0 ${size.base}`, boxSizing: 'content-box', cursor: 'pointer', '&:not(:last-child)': { @@ -56,9 +56,12 @@ export const useStyles = ({ isInvestigated, isSelected }: StylesDeps) => { '&:hover': { background: hoverBgColor, }, - button: { + '&& button': { flexShrink: 0, marginRight: size.s, + '&:hover, &:focus, &:focus-within': { + backgroundColor: transparentize(euiVars.buttonsBackgroundNormalDefaultPrimary, 0.2), + }, }, }; @@ -66,11 +69,17 @@ export const useStyles = ({ isInvestigated, isSelected }: StylesDeps) => { textTransform: 'capitalize', }; + const alertName: CSSObject = { + padding: `${size.xs} 0`, + color: colors.title, + }; + return { alert, alertStatus, + alertName, }; - }, [euiTheme, isInvestigated, isSelected]); + }, [euiTheme, isInvestigated, isSelected, euiVars]); return cached; }; diff --git a/x-pack/plugins/session_view/public/components/process_tree_alerts/styles.ts b/x-pack/plugins/session_view/public/components/process_tree_alerts/styles.ts index bd95d87258178..a82a2253f4b2f 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_alerts/styles.ts +++ b/x-pack/plugins/session_view/public/components/process_tree_alerts/styles.ts @@ -16,7 +16,7 @@ export const useStyles = () => { const { size, colors, border } = euiTheme; const container: CSSObject = { - margin: `${size.xs} ${size.base} 0 ${size.xs}`, + margin: `${size.xs} ${size.base} ${size.base} ${size.xs}`, color: colors.text, padding: `${size.s} 0`, borderStyle: 'solid', diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/index.test.tsx b/x-pack/plugins/session_view/public/components/process_tree_node/index.test.tsx index 7daceaa366c43..1eba726607c10 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_node/index.test.tsx +++ b/x-pack/plugins/session_view/public/components/process_tree_node/index.test.tsx @@ -57,7 +57,9 @@ describe('ProcessTreeNode component', () => { it('should have an alternate rendering for a session leader', async () => { renderResult = mockedContext.render(); - expect(renderResult.container.textContent).toEqual(' bash started by vagrant'); + expect(renderResult.container.textContent?.replace(/\s+/g, ' ')).toEqual( + ' bash started by vagrant' + ); }); // commented out until we get new UX for orphans treatment aka disjointed tree diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/index.tsx b/x-pack/plugins/session_view/public/components/process_tree_node/index.tsx index d868dee04cbf5..db81734c65937 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_node/index.tsx +++ b/x-pack/plugins/session_view/public/components/process_tree_node/index.tsx @@ -33,6 +33,8 @@ import { AlertButton, ChildrenProcessesButton } from './buttons'; import { useButtonStyles } from './use_button_styles'; import { KIBANA_DATE_FORMAT } from '../../../common/constants'; import { useStyles } from './styles'; +import { SplitText } from './split_text'; +import { Nbsp } from './nbsp'; export interface ProcessDeps { process: Process; @@ -255,14 +257,21 @@ export function ProcessTreeNode({ onClick={onProcessClicked} > {isSessionLeader ? ( - <> - {' '} - {dataOrDash(name || args?.[0])}{' '} - {' '} - {dataOrDash(user?.name)} - + + + + {dataOrDash(name || args?.[0])} + + + + + + + + {dataOrDash(user?.name)} + ) : ( - + <> {showTimestamp && ( {timeStampsNormal} @@ -270,13 +279,15 @@ export function ProcessTreeNode({ )} - {' '} - - {dataOrDash(workingDirectory)}  - {dataOrDash(args?.[0])}{' '} - {args?.slice(1).join(' ')} + + + {dataOrDash(workingDirectory)} + + {dataOrDash(args?.[0])} + + {args?.slice(1).join(' ') || ''} - + )} {showUserEscalation && ( diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/nbsp.tsx b/x-pack/plugins/session_view/public/components/process_tree_node/nbsp.tsx new file mode 100644 index 0000000000000..65274cd0b6ade --- /dev/null +++ b/x-pack/plugins/session_view/public/components/process_tree_node/nbsp.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { CSSObject } from '@emotion/react'; + +const css: CSSObject = { + width: '6px', + display: 'inline-block', +}; + +// Renders a non-breaking space with a specific width. +export const Nbsp = () => { + return  ; +}; diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/split_text.test.tsx b/x-pack/plugins/session_view/public/components/process_tree_node/split_text.test.tsx new file mode 100644 index 0000000000000..eaa18b18d81cf --- /dev/null +++ b/x-pack/plugins/session_view/public/components/process_tree_node/split_text.test.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { SplitText } from './split_text'; + +describe('SplitText component', () => { + it('should split a text into one span for each character', async () => { + const text = 'hello world'; + + const renderResult = render({text}); + for (const char of text.replace(/\s+/g, '').split('')) { + expect(await renderResult.findAllByText(char)).toBeTruthy(); + } + expect(renderResult.container.textContent?.replace(/\s+/g, ' ')).toEqual(text); + }); + it('should provide an acessible label for screen readers', async () => { + const text = 'hello world'; + + const renderResult = render({text}); + expect(renderResult.queryByRole('document', { name: text })).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/split_text.tsx b/x-pack/plugins/session_view/public/components/process_tree_node/split_text.tsx new file mode 100644 index 0000000000000..d31590c9ab967 --- /dev/null +++ b/x-pack/plugins/session_view/public/components/process_tree_node/split_text.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { CSSObject } from '@emotion/react'; + +type Props = { + children: string; + role?: string; +}; + +const css: CSSObject = { + '&&': { + display: 'inline', + fontSize: 0, + lineHeight: 0, + }, +}; + +// Split a text into multiple spans, each of which a single character. This is +// useful for creating inline "like" text but still having control over the blocks +// exclusive features, such height or line-height. +// It adds a `aria-label` attribute to a parent span, which is used by screen readers to +// read the text as a single block. +export const SplitText = ({ children, role = 'document', ...props }: Props) => ( + + {children.split('').map(function (char, index) { + return ( + + ); + })} + +); diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/styles.ts b/x-pack/plugins/session_view/public/components/process_tree_node/styles.ts index e328c28be8bad..b68df480064b3 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_node/styles.ts +++ b/x-pack/plugins/session_view/public/components/process_tree_node/styles.ts @@ -30,14 +30,15 @@ export const useStyles = ({ const cached = useMemo(() => { const { colors, border, size, font } = euiTheme; + const ALERT_INDICATOR_WIDTH = '3px'; + const LINE_HEIGHT = '21px'; + const FONT_SIZE = '13px'; const TREE_INDENT = `calc(${size.l} + ${size.xxs})`; const PROCESS_TREE_LEFT_PADDING = size.s; const darkText: CSSObject = { color: colors.text, fontFamily: font.familyCode, - paddingLeft: size.xxs, - paddingRight: size.xs, }; const children: CSSObject = { @@ -84,15 +85,19 @@ export const useStyles = ({ const { bgColor, borderColor, hoverColor, searchResColor } = getHighlightColors(); + const fontSpacingReset: CSSObject = { + fontSize: 0, + lineHeight: 0, + }; + const processNode: CSSObject = { + ...fontSpacingReset, display: 'block', cursor: 'pointer', position: 'relative', - padding: `${size.xs} 0px`, marginBottom: isSessionLeader ? size.s : '0px', '&:hover:before': { backgroundColor: hoverColor, - transform: `translateY(-${size.xs})`, }, '&:before': { position: 'absolute', @@ -100,10 +105,29 @@ export const useStyles = ({ pointerEvents: 'none', content: `''`, marginLeft: `calc(-${depth} * ${TREE_INDENT} - ${PROCESS_TREE_LEFT_PADDING})`, - borderLeft: `${size.xs} solid ${borderColor}`, + borderLeft: `${ALERT_INDICATOR_WIDTH} solid ${borderColor}`, backgroundColor: bgColor, width: `calc(100% + ${depth} * ${TREE_INDENT} + ${PROCESS_TREE_LEFT_PADDING})`, - transform: `translateY(-${size.xs})`, + }, + }; + + const textSection: CSSObject = { + marginLeft: size.s, + span: { + fontSize: FONT_SIZE, + lineHeight: LINE_HEIGHT, + verticalAlign: 'middle', + display: 'inline-block', + }, + }; + + const sessionLeader: CSSObject = { + ...fontSpacingReset, + 'span, b': { + fontSize: FONT_SIZE, + lineHeight: LINE_HEIGHT, + display: 'inline-block', + verticalAlign: 'middle', }, }; @@ -119,16 +143,17 @@ export const useStyles = ({ verticalAlign: 'middle', color: euiVars.euiTextSubduedColor, wordBreak: 'break-all', - minHeight: `calc(${size.l} - ${size.xxs})`, - lineHeight: `calc(${size.l} - ${size.xxs})`, + padding: `${size.xs} 0px`, + button: { + marginLeft: '6px', + marginRight: size.xxs, + }, }; const workingDir: CSSObject = { color: colors.successText, fontFamily: font.familyCode, fontWeight: font.weight.regular, - paddingLeft: size.s, - paddingRight: size.xxs, }; const timeStamp: CSSObject = { @@ -139,6 +164,7 @@ export const useStyles = ({ paddingRight: size.base, paddingLeft: size.xxl, position: 'relative', + lineHeight: LINE_HEIGHT, }; const alertDetails: CSSObject = { @@ -157,6 +183,8 @@ export const useStyles = ({ timeStamp, alertDetails, icon, + textSection, + sessionLeader, }; }, [depth, euiTheme, hasAlerts, hasInvestigatedAlert, isSelected, euiVars, isSessionLeader]); diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/use_button_styles.ts b/x-pack/plugins/session_view/public/components/process_tree_node/use_button_styles.ts index 04d3eb793bfda..8cd4e2c5004b4 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_node/use_button_styles.ts +++ b/x-pack/plugins/session_view/public/components/process_tree_node/use_button_styles.ts @@ -37,7 +37,8 @@ export const useButtonStyles = () => { }, }, '&&:hover, &&:focus': { - background: transparentize(euiVars.euiColorVis6, 0.04), + background: transparentize(euiVars.euiColorVis6, 0.12), + textDecoration: 'none', }, '&.isExpanded > span svg': { transform: `rotate(180deg)`, @@ -61,7 +62,8 @@ export const useButtonStyles = () => { background: transparentize(euiVars.euiColorDanger, 0.04), border: `${border.width.thin} solid ${transparentize(euiVars.euiColorDanger, 0.48)}`, '&&:hover, &&:focus': { - background: transparentize(euiVars.euiColorDanger, 0.04), + background: transparentize(euiVars.euiColorDanger, 0.12), + textDecoration: 'none', }, '&.isExpanded': { color: colors.ghost, diff --git a/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.test.ts b/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.test.ts new file mode 100644 index 0000000000000..70b0fe7ec272f --- /dev/null +++ b/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.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. + */ +import { getSelectedTabContent } from './helpers'; +import { EuiTabProps } from '../../types'; + +const TABS: EuiTabProps[] = [ + { + id: '1', + name: 'Process', + content: 'process content', + }, + { + id: '2', + name: 'Host', + content: 'host content', + }, + { + id: '3', + name: 'Alert', + content: 'alert content', + }, +]; + +describe('session view detail panel helpers tests', () => { + it('getSelectedTabContent works', () => { + const result = getSelectedTabContent(TABS, '1'); + expect(result).toBe(TABS[0].content); + }); + + it('getSelectedTabContent returns null if tab id not found', () => { + const result = getSelectedTabContent(TABS, 'process'); + expect(result).toBeNull(); + }); +}); diff --git a/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.ts b/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.ts index e4e6cb0134bbc..755c24f83361a 100644 --- a/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.ts +++ b/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.ts @@ -4,108 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { EventAction, Process, ProcessFields } from '../../../common/types/process_tree'; -import { DetailPanelProcess, EuiTabProps } from '../../types'; - -const FILTER_FORKS_EXECS = [EventAction.fork, EventAction.exec]; - -const DEFAULT_PROCESS_DATA = { - id: '', - name: '', - start: '', - end: '', - userName: '', - groupName: '', - working_directory: '', - args: [], - entryMetaType: '', - entryMetaSourceIp: '', - executable: '', -}; - -const getDetailPanelProcessLeader = (leader: ProcessFields | undefined) => ({ - ...leader, - name: leader?.name ?? DEFAULT_PROCESS_DATA.name, - start: leader?.start ?? DEFAULT_PROCESS_DATA.start, - working_directory: leader?.working_directory ?? DEFAULT_PROCESS_DATA.working_directory, - args: leader?.args ?? DEFAULT_PROCESS_DATA.args, - executable: leader?.executable ?? DEFAULT_PROCESS_DATA.executable, - id: leader?.entity_id ?? DEFAULT_PROCESS_DATA.id, - entryMetaType: leader?.entry_meta?.type ?? DEFAULT_PROCESS_DATA.entryMetaType, - userName: leader?.user?.name ?? DEFAULT_PROCESS_DATA.userName, - groupName: leader?.group?.name ?? DEFAULT_PROCESS_DATA.groupName, - entryMetaSourceIp: leader?.entry_meta?.source?.ip ?? DEFAULT_PROCESS_DATA.entryMetaSourceIp, -}); - -export const getDetailPanelProcess = (process: Process | null) => { - const processData = {} as DetailPanelProcess; - if (!process) { - return { - id: DEFAULT_PROCESS_DATA.id, - start: DEFAULT_PROCESS_DATA.start, - end: DEFAULT_PROCESS_DATA.end, - userName: DEFAULT_PROCESS_DATA.userName, - groupName: DEFAULT_PROCESS_DATA.groupName, - args: DEFAULT_PROCESS_DATA.args, - executable: [], - working_directory: DEFAULT_PROCESS_DATA.working_directory, - entryLeader: DEFAULT_PROCESS_DATA, - sessionLeader: DEFAULT_PROCESS_DATA, - groupLeader: DEFAULT_PROCESS_DATA, - parent: DEFAULT_PROCESS_DATA, - }; - } - - const details = process.getDetails(); - - processData.id = process.id; - processData.start = details.process?.start ?? ''; - processData.args = []; - processData.executable = []; - - if (!processData.userName) { - processData.userName = details.process?.user?.name ?? ''; - } - if (!processData.groupName) { - processData.groupName = details.process?.group?.name ?? ''; - } - if (!processData.pid) { - processData.pid = details.process?.pid; - } - if (!processData.working_directory) { - processData.working_directory = details.process?.working_directory ?? ''; - } - if (!processData.tty) { - processData.tty = details.process?.tty; - } - if (details.process?.args && details.process.args.length > 0) { - processData.args = details.process.args; - } - if (details.process?.exit_code !== undefined) { - processData.exit_code = details.process.exit_code; - } - - // we grab the executable from each process lifecycle event to give an indication - // of the processes journey. Processes can sometimes exec multiple times, so it's good - // information to have. - process.events.forEach((event) => { - if ( - event.process?.executable && - event.event?.action && - FILTER_FORKS_EXECS.includes(event.event.action) - ) { - processData.executable.push([event.process.executable, `(${event.event.action})`]); - } - }); - - processData.end = process.getEndTime(); - processData.entryLeader = getDetailPanelProcessLeader(details?.process?.entry_leader); - processData.sessionLeader = getDetailPanelProcessLeader(details?.process?.session_leader); - processData.groupLeader = getDetailPanelProcessLeader(details?.process?.group_leader); - processData.parent = getDetailPanelProcessLeader(details?.process?.parent); - - return processData; -}; +import { EuiTabProps } from '../../types'; export const getSelectedTabContent = (tabs: EuiTabProps[], selectedTabId: string) => { const selectedTab = tabs.find((tab) => tab.id === selectedTabId); diff --git a/x-pack/plugins/session_view/public/components/session_view_detail_panel/index.tsx b/x-pack/plugins/session_view/public/components/session_view_detail_panel/index.tsx index 130d15ca4df30..a22ad026c4395 100644 --- a/x-pack/plugins/session_view/public/components/session_view_detail_panel/index.tsx +++ b/x-pack/plugins/session_view/public/components/session_view_detail_panel/index.tsx @@ -9,7 +9,7 @@ import { EuiTabs, EuiTab, EuiNotificationBadge } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { EuiTabProps } from '../../types'; import { Process, ProcessEvent } from '../../../common/types/process_tree'; -import { getDetailPanelProcess, getSelectedTabContent } from './helpers'; +import { getSelectedTabContent } from './helpers'; import { DetailPanelProcessTab } from '../detail_panel_process_tab'; import { DetailPanelHostTab } from '../detail_panel_host_tab'; import { useStyles } from './styles'; @@ -35,7 +35,6 @@ export const SessionViewDetailPanel = ({ onShowAlertDetails, }: SessionViewDetailPanelDeps) => { const [selectedTabId, setSelectedTabId] = useState('process'); - const processDetail = useMemo(() => getDetailPanelProcess(selectedProcess), [selectedProcess]); const alertsCount = useMemo(() => { if (!alerts) { @@ -54,7 +53,7 @@ export const SessionViewDetailPanel = ({ name: i18n.translate('xpack.sessionView.detailsPanel.process', { defaultMessage: 'Process', }), - content: , + content: , }, { id: 'host', @@ -85,12 +84,11 @@ export const SessionViewDetailPanel = ({ ]; }, [ alerts, + selectedProcess, alertsCount, - processDetail, - selectedProcess?.events, + onJumpToEvent, onShowAlertDetails, investigatedAlertId, - onJumpToEvent, ]); const onSelectedTabChanged = useCallback((id: string) => { diff --git a/x-pack/plugins/session_view/public/constants.ts b/x-pack/plugins/session_view/public/constants.ts new file mode 100644 index 0000000000000..2f7306bf3e4a8 --- /dev/null +++ b/x-pack/plugins/session_view/public/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 DASH = '-'; diff --git a/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts b/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts index f7021f6146f09..02f7dd479d2ac 100644 --- a/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts +++ b/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts @@ -13,6 +13,7 @@ type EuiThemeProps = Parameters; type ExtraEuiVars = { // eslint-disable-next-line @typescript-eslint/naming-convention euiColorVis6_asText: string; + buttonsBackgroundNormalDefaultPrimary: string; }; type EuiVars = typeof euiLightVars & ExtraEuiVars; type EuiThemeReturn = ReturnType & { euiVars: EuiVars }; @@ -29,6 +30,7 @@ export const useEuiTheme = (...props: EuiThemeProps): EuiThemeReturn => { const extraEuiVars: ExtraEuiVars = { // eslint-disable-next-line @typescript-eslint/naming-convention euiColorVis6_asText: shade(themeVars.euiColorVis6, 0.335), + buttonsBackgroundNormalDefaultPrimary: '#006DE4', }; return { diff --git a/x-pack/plugins/session_view/public/types.ts b/x-pack/plugins/session_view/public/types.ts index 8e5b9a7ed83f2..1f90ae05b0791 100644 --- a/x-pack/plugins/session_view/public/types.ts +++ b/x-pack/plugins/session_view/public/types.ts @@ -6,7 +6,6 @@ */ import { ReactNode } from 'react'; import { CoreStart } from '@kbn/core/public'; -import { Teletype } from '../common/types/process_tree'; export type SessionViewServices = CoreStart; @@ -43,14 +42,14 @@ export interface DetailPanelProcess { id: string; start: string; end: string; - exit_code?: number; + exitCode: string; userName: string; groupName: string; - args: string[]; + args: string; executable: string[][]; - working_directory: string; - tty?: Teletype; - pid?: number; + workingDirectory: string; + interactive: string; + pid: string; entryLeader: DetailPanelProcessLeader; sessionLeader: DetailPanelProcessLeader; groupLeader: DetailPanelProcessLeader; @@ -61,17 +60,34 @@ export interface DetailPanelProcessLeader { id: string; name: string; start: string; - end?: string; - exit_code?: number; + end: string; + exitCode: string; userName: string; groupName: string; - working_directory: string; - tty?: Teletype; - args: string[]; - pid?: number; + workingDirectory: string; + interactive: string; + args: string; + pid: string; entryMetaType: string; entryMetaSourceIp: string; - executable: string; + executable: string[][]; +} + +export interface DetailPanelHost { + architecture: string; + hostname: string; + id: string; + ip: string; + mac: string; + name: string; + os: { + family: string; + full: string; + kernel: string; + name: string; + platform: string; + version: string; + }; } export interface SessionViewStart { diff --git a/x-pack/plugins/session_view/public/utils/data_or_dash.test.ts b/x-pack/plugins/session_view/public/utils/data_or_dash.test.ts index 12ef44cf1d708..c4950bb8d20b0 100644 --- a/x-pack/plugins/session_view/public/utils/data_or_dash.test.ts +++ b/x-pack/plugins/session_view/public/utils/data_or_dash.test.ts @@ -5,11 +5,11 @@ * 2.0. */ +import { DASH } from '../constants'; import { dataOrDash } from './data_or_dash'; const TEST_STRING = '123'; const TEST_NUMBER = 123; -const DASH = '-'; describe('dataOrDash(data)', () => { it('works for a valid string', () => { diff --git a/x-pack/plugins/session_view/public/utils/data_or_dash.ts b/x-pack/plugins/session_view/public/utils/data_or_dash.ts index ff6c2fb9bc1ff..15c82b47220d2 100644 --- a/x-pack/plugins/session_view/public/utils/data_or_dash.ts +++ b/x-pack/plugins/session_view/public/utils/data_or_dash.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { DASH } from '../constants'; + /** * Returns a dash ('-') if data is undefined, and empty string, or a NaN. * @@ -15,7 +17,7 @@ */ export const dataOrDash = (data: string | number | undefined): string | number => { if (data === undefined || data === '' || (typeof data === 'number' && isNaN(data))) { - return '-'; + return DASH; } return data; diff --git a/x-pack/plugins/synthetics/common/constants/plugin.ts b/x-pack/plugins/synthetics/common/constants/plugin.ts index c0a6ed02477f5..3ebf5227961c8 100644 --- a/x-pack/plugins/synthetics/common/constants/plugin.ts +++ b/x-pack/plugins/synthetics/common/constants/plugin.ts @@ -14,6 +14,7 @@ export const PLUGIN = { description: 'The description text that will appear in the feature catalogue.', }), ID: 'uptime', + SYNTHETICS_PLUGIN_ID: 'synthetics', LOCAL_STORAGE_KEY: 'xpack.synthetics.', NAME: i18n.translate('xpack.synthetics.featureRegistry.syntheticsFeatureName', { defaultMessage: 'Synthetics and Uptime', diff --git a/x-pack/plugins/synthetics/e2e/config.ts b/x-pack/plugins/synthetics/e2e/config.ts index e8af8510fe5dc..42e97eb21e90a 100644 --- a/x-pack/plugins/synthetics/e2e/config.ts +++ b/x-pack/plugins/synthetics/e2e/config.ts @@ -19,7 +19,7 @@ async function config({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../../test/common/config.js') ); const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('../../../test/functional/config.js') + require.resolve('../../../test/functional/config.base.js') ); const kibanaConfig = readKibanaConfig(); diff --git a/x-pack/plugins/synthetics/e2e/tasks/es_archiver.ts b/x-pack/plugins/synthetics/e2e/tasks/es_archiver.ts index dac5672bdf649..bbb66b19f5a5e 100644 --- a/x-pack/plugins/synthetics/e2e/tasks/es_archiver.ts +++ b/x-pack/plugins/synthetics/e2e/tasks/es_archiver.ts @@ -16,7 +16,7 @@ const NODE_TLS_REJECT_UNAUTHORIZED = '1'; export const esArchiverLoad = (folder: string) => { const path = Path.join(ES_ARCHIVE_DIR, folder); execSync( - `node ../../../../scripts/es_archiver load "${path}" --config ../../../test/functional/config.js`, + `node ../../../../scripts/es_archiver load "${path}" --config ../../../test/functional/config.base.js`, { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } ); }; @@ -24,14 +24,14 @@ export const esArchiverLoad = (folder: string) => { export const esArchiverUnload = (folder: string) => { const path = Path.join(ES_ARCHIVE_DIR, folder); execSync( - `node ../../../../scripts/es_archiver unload "${path}" --config ../../../test/functional/config.js`, + `node ../../../../scripts/es_archiver unload "${path}" --config ../../../test/functional/config.base.js`, { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } ); }; export const esArchiverResetKibana = () => { execSync( - `node ../../../../scripts/es_archiver empty-kibana-index --config ../../../test/functional/config.js`, + `node ../../../../scripts/es_archiver empty-kibana-index --config ../../../test/functional/config.base.js`, { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } ); }; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx new file mode 100644 index 0000000000000..7040da99c39a3 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { SyntheticsDatePicker } from './synthetics_date_picker'; +import { startPlugins } from '../../../utils/testing/__mocks__/synthetics_plugin_start_mock'; +import { createMemoryHistory } from 'history'; +import { render } from '../../../utils/testing'; +import { fireEvent } from '@testing-library/dom'; + +describe('SyntheticsDatePicker component', () => { + jest.setTimeout(10_000); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders properly with mock data', async () => { + const { findByText } = render(); + expect(await findByText('Last 15 minutes')).toBeInTheDocument(); + expect(await findByText('Refresh')).toBeInTheDocument(); + }); + + it('uses shared date range state when there is no url date range state', async () => { + const customHistory = createMemoryHistory({ + initialEntries: ['/?dateRangeStart=now-15m&dateRangeEnd=now'], + }); + + jest.spyOn(customHistory, 'push'); + + const { findByText } = render(, { + history: customHistory, + core: startPlugins, + }); + + expect(await findByText('~ 15 minutes ago')).toBeInTheDocument(); + + expect(await findByText('~ 30 minutes ago')).toBeInTheDocument(); + + expect(customHistory.push).toHaveBeenCalledWith({ + pathname: '/', + search: 'dateRangeEnd=now-15m&dateRangeStart=now-30m', + }); + }); + + it('should use url date range even if shared date range is present', async () => { + const customHistory = createMemoryHistory({ + initialEntries: ['/?g=%22%22&dateRangeStart=now-10m&dateRangeEnd=now'], + }); + + jest.spyOn(customHistory, 'push'); + + const { findByText } = render(, { + history: customHistory, + core: startPlugins, + }); + + expect(await findByText('Last 10 minutes')).toBeInTheDocument(); + + // it should update shared state + + expect(startPlugins.data.query.timefilter.timefilter.setTime).toHaveBeenCalledWith({ + from: 'now-10m', + to: 'now', + }); + }); + + it('should handle on change', async () => { + const customHistory = createMemoryHistory({ + initialEntries: ['/?g=%22%22&dateRangeStart=now-10m&dateRangeEnd=now'], + }); + + jest.spyOn(customHistory, 'push'); + + const { findByText, getByTestId, findByTestId } = render(, { + history: customHistory, + core: startPlugins, + }); + + expect(await findByText('Last 10 minutes')).toBeInTheDocument(); + + fireEvent.click(getByTestId('superDatePickerToggleQuickMenuButton')); + + fireEvent.click(await findByTestId('superDatePickerCommonlyUsed_Today')); + + expect(await findByText('Today')).toBeInTheDocument(); + + // it should update shared state + + expect(startPlugins.data.query.timefilter.timefilter.setTime).toHaveBeenCalledTimes(2); + + expect(startPlugins.data.query.timefilter.timefilter.setTime).toHaveBeenCalledWith({ + from: 'now-10m', + to: 'now', + }); + + expect(startPlugins.data.query.timefilter.timefilter.setTime).toHaveBeenLastCalledWith({ + from: 'now/d', + to: 'now', + }); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx new file mode 100644 index 0000000000000..b9da1c098716d --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.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, { useContext, useEffect } from 'react'; +import { EuiSuperDatePicker } from '@elastic/eui'; +import { useUrlParams } from '../../../hooks'; +import { CLIENT_DEFAULTS } from '../../../../../../common/constants'; +import { + SyntheticsSettingsContext, + SyntheticsStartupPluginsContext, + SyntheticsRefreshContext, +} from '../../../contexts'; + +const isSyntheticsDefaultDateRange = (dateRangeStart: string, dateRangeEnd: string) => { + const { DATE_RANGE_START, DATE_RANGE_END } = CLIENT_DEFAULTS; + + return dateRangeStart === DATE_RANGE_START && dateRangeEnd === DATE_RANGE_END; +}; + +export const SyntheticsDatePicker = () => { + const [getUrlParams, updateUrl] = useUrlParams(); + const { commonlyUsedRanges } = useContext(SyntheticsSettingsContext); + const { refreshApp } = useContext(SyntheticsRefreshContext); + + const { data } = useContext(SyntheticsStartupPluginsContext); + + // read time from state and update the url + const sharedTimeState = data?.query.timefilter.timefilter.getTime(); + + const { + autorefreshInterval, + autorefreshIsPaused, + dateRangeStart: start, + dateRangeEnd: end, + } = getUrlParams(); + + useEffect(() => { + const { from, to } = sharedTimeState ?? {}; + // if it's synthetics default range, and we have shared state from kibana, let's use that + if (isSyntheticsDefaultDateRange(start, end) && (from !== start || to !== end)) { + updateUrl({ dateRangeStart: from, dateRangeEnd: to }); + } else if (from !== start || to !== end) { + // if it's coming url. let's update shared state + data?.query.timefilter.timefilter.setTime({ from: start, to: end }); + } + + // only need at start, rest date picker on change fucn will take care off + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const euiCommonlyUsedRanges = commonlyUsedRanges + ? commonlyUsedRanges.map( + ({ from, to, display }: { from: string; to: string; display: string }) => { + return { + start: from, + end: to, + label: display, + }; + } + ) + : CLIENT_DEFAULTS.COMMONLY_USED_DATE_RANGES; + + return ( + { + if (data?.query?.timefilter?.timefilter) { + data?.query.timefilter.timefilter.setTime({ from: startN, to: endN }); + } + + updateUrl({ dateRangeStart: startN, dateRangeEnd: endN }); + refreshApp(); + }} + onRefresh={refreshApp} + onRefreshChange={({ isPaused, refreshInterval }) => { + updateUrl({ + autorefreshInterval: + refreshInterval === undefined ? autorefreshInterval : refreshInterval, + autorefreshIsPaused: isPaused, + }); + }} + /> + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx new file mode 100644 index 0000000000000..69821360aab8b --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.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 { HeaderMenuPortal } from '@kbn/observability-plugin/public'; +import { AppMountParameters } from '@kbn/core/public'; +import { ActionMenuContent } from './action_menu_content'; + +export const ActionMenu = ({ appMountParameters }: { appMountParameters: AppMountParameters }) => ( + + + +); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx new file mode 100644 index 0000000000000..3137862025f15 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.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 React from 'react'; +import { fireEvent, waitFor } from '@testing-library/react'; +import { render } from '../../../utils/testing/rtl_helpers'; +import { ActionMenuContent } from './action_menu_content'; + +describe('ActionMenuContent', () => { + it('renders alerts dropdown', async () => { + const { getByLabelText, getByText } = render(); + + const alertsDropdown = getByLabelText('Open alerts and rules context menu'); + fireEvent.click(alertsDropdown); + + await waitFor(() => { + expect(getByText('Create rule')); + expect(getByText('Manage rules')); + }); + }); + + it('renders settings link', () => { + const { getByRole, getByText } = render(); + + const settingsAnchor = getByRole('link', { name: 'Navigate to the Uptime settings page' }); + expect(settingsAnchor.getAttribute('href')).toBe('/settings'); + expect(getByText('Settings')); + }); + + it('renders exploratory view link', () => { + const { getByLabelText, getByText } = render(); + + const analyzeAnchor = getByLabelText( + 'Navigate to the "Explore Data" view to visualize Synthetics/User data' + ); + + expect(analyzeAnchor.getAttribute('href')).toContain('/app/observability/exploratory-view'); + expect(getByText('Explore data')); + }); + + it('renders Add Data link', () => { + const { getByLabelText, getByText } = render(); + + const addDataAnchor = getByLabelText('Navigate to a tutorial about adding Uptime data'); + + // this href value is mocked, so it doesn't correspond to the real link + // that Kibana core services will provide + expect(addDataAnchor.getAttribute('href')).toBe('/home#/tutorial/uptimeMonitors'); + expect(getByText('Add data')); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx new file mode 100644 index 0000000000000..6d3d83146a42c --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiHeaderLinks, EuiToolTip, EuiHeaderLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useHistory, useRouteMatch } from 'react-router-dom'; +import { createExploratoryViewUrl } from '@kbn/observability-plugin/public'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { useSyntheticsSettingsContext } from '../../../contexts'; +import { useGetUrlParams } from '../../../hooks'; +import { ToggleAlertFlyoutButton } from '../../overview/alerts/alerts_containers/toggle_alert_flyout_button'; +import { MONITOR_ROUTE, SETTINGS_ROUTE } from '../../../../../../common/constants'; +import { stringifyUrlParams } from '../../../utils/url_params'; +import { InspectorHeaderLink } from './inspector_header_link'; +// import { monitorStatusSelector } from '../../../state/selectors'; +// import { ManageMonitorsBtn } from './manage_monitors_btn'; + +const ADD_DATA_LABEL = i18n.translate('xpack.synthetics.addDataButtonLabel', { + defaultMessage: 'Add data', +}); + +const ANALYZE_DATA = i18n.translate('xpack.synthetics.analyzeDataButtonLabel', { + defaultMessage: 'Explore data', +}); + +const ANALYZE_MESSAGE = i18n.translate('xpack.synthetics.analyzeDataButtonLabel.message', { + defaultMessage: + 'Explore Data allows you to select and filter result data in any dimension and look for the cause or impact of performance problems.', +}); + +export function ActionMenuContent(): React.ReactElement { + const kibana = useKibana(); + const { basePath } = useSyntheticsSettingsContext(); + const params = useGetUrlParams(); + const { dateRangeStart, dateRangeEnd } = params; + const history = useHistory(); + + const selectedMonitor = { + monitor: { id: undefined, name: 'test' }, + }; /* useSelector(monitorStatusSelector) TODO: Implement state for monitor status */ + + const detailRouteMatch = useRouteMatch(MONITOR_ROUTE); + const monitorId = selectedMonitor?.monitor?.id; + + const syntheticExploratoryViewLink = createExploratoryViewUrl( + { + reportType: 'kpi-over-time', + allSeries: [ + { + dataType: 'synthetics', + seriesType: 'area', + selectedMetricField: 'monitor.duration.us', + time: { from: dateRangeStart, to: dateRangeEnd }, + breakdown: monitorId ? 'observer.geo.name' : 'monitor.type', + reportDefinitions: { + 'monitor.name': + selectedMonitor?.monitor?.name && detailRouteMatch?.isExact === true + ? [selectedMonitor?.monitor?.name] + : [], + 'url.full': ['ALL_VALUES'], + }, + name: monitorId ? `${monitorId}-response-duration` : 'All monitors response duration', + }, + ], + }, + basePath + ); + + return ( + + {/* TODO: See if it's needed for new Synthetics App */} + + + + + + + + {ANALYZE_MESSAGE}

}> + + {ANALYZE_DATA} + +
+ + + {ADD_DATA_LABEL} + + +
+ ); +} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx new file mode 100644 index 0000000000000..b1166d342ff3e --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx @@ -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 { EuiHeaderLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { enableInspectEsQueries, useInspectorContext } from '@kbn/observability-plugin/public'; +import { ClientPluginsStart } from '../../../../../plugin'; +import { useSyntheticsSettingsContext } from '../../../contexts'; + +export function InspectorHeaderLink() { + const { + services: { inspector, uiSettings }, + } = useKibana(); + + const { isDev } = useSyntheticsSettingsContext(); + + const { inspectorAdapters } = useInspectorContext(); + + const isInspectorEnabled = uiSettings?.get(enableInspectEsQueries); + + const inspect = () => { + inspector.open(inspectorAdapters); + }; + + if (!isInspectorEnabled && !isDev) { + return null; + } + + return ( + + {i18n.translate('xpack.synthetics.inspectButtonText', { + defaultMessage: 'Inspect', + })} + + ); +} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/not_found.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/not_found.test.tsx new file mode 100644 index 0000000000000..0bade3c639a5e --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/not_found.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { NotFoundPage } from './not_found'; +import { render } from '../../../utils/testing'; + +describe('NotFoundPage', () => { + it('render component', async () => { + const { findByText } = render(); + + expect(await findByText('Page not found')).toBeInTheDocument(); + expect(await findByText('Back to home')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/not_found.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/not_found.tsx new file mode 100644 index 0000000000000..c94a7a7a06b6a --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/not_found.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiEmptyPrompt, + EuiPanel, + EuiTitle, + EuiFlexGroup, + EuiFlexItem, + EuiButton, +} from '@elastic/eui'; +import React from 'react'; +import { useHistory } from 'react-router-dom'; +import { FormattedMessage } from '@kbn/i18n-react'; + +export const NotFoundPage = () => { + const history = useHistory(); + return ( + + + + +

+ +

+ + } + body={ + + + + } + /> +
+
+
+ ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/synthetics_page_template.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/synthetics_page_template.test.tsx new file mode 100644 index 0000000000000..2c8201a175159 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/synthetics_page_template.test.tsx @@ -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. + */ + +// app.test.js +import React from 'react'; +import 'jest-styled-components'; +import { render } from '../../../utils/testing/rtl_helpers'; +import { SyntheticsPageTemplateComponent } from './synthetics_page_template'; +import { OVERVIEW_ROUTE } from '../../../../../../common/constants'; +import { useBreakpoints } from '../../../hooks/use_breakpoints'; + +jest.mock('../../../hooks/use_breakpoints', () => { + const down = jest.fn().mockReturnValue(false); + return { + useBreakpoints: () => ({ down }), + }; +}); + +describe('SyntheticsPageTemplateComponent', () => { + describe('styling', () => { + // In this test we use snapshots because we're asserting on generated + // styles. Writing assertions manually here could make this test really + // convoluted, and it require us to manually update styling strings + // according to `styled-components` generator, which is counter-productive. + // In general, however, we avoid snaphshot tests. + + it('does not apply header centering on bigger resolutions', () => { + const { container } = render(); + expect(container.firstChild).toBeDefined(); + }); + + it('applies the header centering on mobile', () => { + (useBreakpoints().down as jest.Mock).mockReturnValue(true); + const { container } = render(); + expect(container.firstChild).toBeDefined(); + }); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/synthetics_page_template.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/synthetics_page_template.tsx new file mode 100644 index 0000000000000..0e6c5565b842e --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/pages/synthetics_page_template.tsx @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useMemo } from 'react'; +import styled from 'styled-components'; +import { EuiPageHeaderProps, EuiPageTemplateProps } from '@elastic/eui'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { useInspectorContext } from '@kbn/observability-plugin/public'; +import { CERTIFICATES_ROUTE, OVERVIEW_ROUTE } from '../../../../../../common/constants'; +import { ClientPluginsStart } from '../../../../../plugin'; +import { useNoDataConfig } from '../../../hooks/use_no_data_config'; +import { EmptyStateLoading } from '../../overview/empty_state/empty_state_loading'; +import { EmptyStateError } from '../../overview/empty_state/empty_state_error'; +import { useHasData } from '../../overview/empty_state/use_has_data'; +import { useBreakpoints } from '../../../hooks'; + +interface Props { + path: string; + pageHeader?: EuiPageHeaderProps; +} + +const mobileCenteredHeader = ` + .euiPageHeaderContent > .euiFlexGroup > .euiFlexItem { + align-items: center; + } +`; + +export const SyntheticsPageTemplateComponent: React.FC = ({ + path, + pageHeader, + children, + ...pageTemplateProps +}) => { + const { + services: { observability }, + } = useKibana(); + const { down } = useBreakpoints(); + const isMobile = down('s'); + + const PageTemplateComponent = observability.navigation.PageTemplate; + const StyledPageTemplateComponent = useMemo(() => { + return styled(PageTemplateComponent)<{ isMobile: boolean }>` + .euiPageHeaderContent > .euiFlexGroup { + flex-wrap: wrap; + } + + ${(props) => (props.isMobile ? mobileCenteredHeader : '')} + `; + }, [PageTemplateComponent]); + + const noDataConfig = useNoDataConfig(); + + const { loading, error, data } = useHasData(); + const { inspectorAdapters } = useInspectorContext(); + + useEffect(() => { + inspectorAdapters.requests.reset(); + }, [inspectorAdapters.requests]); + + if (error) { + return ; + } + + const isMainRoute = path === OVERVIEW_ROUTE || path === CERTIFICATES_ROUTE; + + const showLoading = loading && isMainRoute && !data; + + return ( + <> + + {showLoading && } +
+ {children} +
+
+ + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/wrappers/service_allowed_wrapper.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/wrappers/service_allowed_wrapper.tsx new file mode 100644 index 0000000000000..163ed0d37b7c3 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/wrappers/service_allowed_wrapper.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 from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiButton, EuiEmptyPrompt, EuiLoadingLogo } from '@elastic/eui'; +import { useSyntheticsServiceAllowed } from '../../../hooks/use_service_allowed'; + +export const ServiceAllowedWrapper: React.FC = ({ children }) => { + const { isAllowed, signupUrl, loading } = useSyntheticsServiceAllowed(); + + if (loading) { + return ( + } + title={

{LOADING_MONITOR_MANAGEMENT_LABEL}

} + /> + ); + } + + // checking for explicit false + if (isAllowed === false) { + return ( + {MONITOR_MANAGEMENT_LABEL}} + body={

{PUBLIC_BETA_DESCRIPTION}

} + actions={[ + + {REQUEST_ACCESS_LABEL} + , + ]} + /> + ); + } + + return <>{children}; +}; + +const REQUEST_ACCESS_LABEL = i18n.translate('xpack.synthetics.monitorManagement.requestAccess', { + defaultMessage: 'Request access', +}); + +export const MONITOR_MANAGEMENT_LABEL = i18n.translate('xpack.synthetics.monitorManagement.label', { + defaultMessage: 'Monitor Management', +}); + +const LOADING_MONITOR_MANAGEMENT_LABEL = i18n.translate( + 'xpack.synthetics.monitorManagement.loading.label', + { + defaultMessage: 'Loading Monitor Management', + } +); + +export const PUBLIC_BETA_DESCRIPTION = i18n.translate( + 'xpack.synthetics.monitorManagement.publicBetaDescription', + { + defaultMessage: + "We've got a brand new app on the way. In the meantime, we're excited to give you early access to our globally managed testing infrastructure. This will allow you to upload synthetic monitors using our new point and click script recorder and manage your monitors with a new UI.", + } +); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_edit_page.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_edit_page.tsx new file mode 100644 index 0000000000000..d0a0c04150f8d --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_edit_page.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { useTrackPageview } from '@kbn/observability-plugin/public'; +import { useMonitorAddEditBreadcrumbs } from './use_breadcrumbs'; + +export const MonitorAddEditPage: React.FC = () => { + useTrackPageview({ app: 'synthetics', path: 'add-monitor' }); + useTrackPageview({ app: 'synthetics', path: 'add-monitor', delay: 15000 }); + useMonitorAddEditBreadcrumbs(); + + return ( + <> +

Monitor Add or Edit page

+ + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts new file mode 100644 index 0000000000000..2fb17340c25fc --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.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 { i18n } from '@kbn/i18n'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { useBreadcrumbs } from '../../hooks/use_breadcrumbs'; +import { MONITOR_ADD_ROUTE } from '../../../../../common/constants'; +import { PLUGIN } from '../../../../../common/constants/plugin'; + +export const useMonitorAddEditBreadcrumbs = () => { + const kibana = useKibana(); + const appPath = kibana.services.application?.getUrlForApp(PLUGIN.SYNTHETICS_PLUGIN_ID) ?? ''; + + useBreadcrumbs([ + { + text: ADD_MONITOR_CRUMB, + href: `${appPath}/${MONITOR_ADD_ROUTE}`, + }, + ]); +}; + +export const ADD_MONITOR_CRUMB = i18n.translate( + 'xpack.synthetics.monitorManagement.addMonitorCrumb', + { + defaultMessage: 'Add monitor', + } +); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_management/monitor_management_page.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_management/monitor_management_page.tsx new file mode 100644 index 0000000000000..c4ca665563f0d --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_management/monitor_management_page.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { useTrackPageview } from '@kbn/observability-plugin/public'; +import { useMonitorManagementBreadcrumbs } from './use_breadcrumbs'; + +export const MonitorManagementPage: React.FC = () => { + useTrackPageview({ app: 'synthetics', path: 'manage-monitors' }); + useTrackPageview({ app: 'synthetics', path: 'manage-monitors', delay: 15000 }); + useMonitorManagementBreadcrumbs(); + + return ( + <> +

Monitor Management List page (Monitor Management Page)

+ + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_management/use_breadcrumbs.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_management/use_breadcrumbs.ts new file mode 100644 index 0000000000000..ab44c1b7c37a2 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_management/use_breadcrumbs.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 { i18n } from '@kbn/i18n'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { useBreadcrumbs } from '../../hooks/use_breadcrumbs'; +import { MONITOR_MANAGEMENT_ROUTE } from '../../../../../common/constants'; +import { PLUGIN } from '../../../../../common/constants/plugin'; + +export const useMonitorManagementBreadcrumbs = () => { + const kibana = useKibana(); + const appPath = kibana.services.application?.getUrlForApp(PLUGIN.SYNTHETICS_PLUGIN_ID) ?? ''; + + useBreadcrumbs([ + { + text: MONITOR_MANAGEMENT_CRUMB, + href: `${appPath}/${MONITOR_MANAGEMENT_ROUTE}/all`, + }, + ]); +}; + +const MONITOR_MANAGEMENT_CRUMB = i18n.translate( + 'xpack.synthetics.monitorManagementPage.monitorManagementCrumb', + { + defaultMessage: 'Monitor Management', + } +); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/alerts_containers/synthetics_alerts_flyout_wrapper.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/alerts_containers/synthetics_alerts_flyout_wrapper.tsx new file mode 100644 index 0000000000000..7271e8cd2e998 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/alerts_containers/synthetics_alerts_flyout_wrapper.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 React from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { + selectAlertFlyoutVisibility, + selectAlertFlyoutType, + setAlertFlyoutVisible, +} from '../../../../state'; +import { SyntheticsAlertsFlyoutWrapperComponent } from '../synthetics_alerts_flyout_wrapper'; + +export const SyntheticsAlertsFlyoutWrapper: React.FC = () => { + const dispatch = useDispatch(); + const setAddFlyoutVisibility = (value: React.SetStateAction) => + // @ts-ignore the value here is a boolean, and it works with the action creator function + dispatch(setAlertFlyoutVisible(value)); + + const alertFlyoutVisible = useSelector(selectAlertFlyoutVisibility); + const alertTypeId = useSelector(selectAlertFlyoutType); + + return ( + + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx new file mode 100644 index 0000000000000..2fea38d99d094 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.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 { useDispatch } from 'react-redux'; +import { setAlertFlyoutType, setAlertFlyoutVisible } from '../../../../state'; +import { + ToggleAlertFlyoutButtonComponent, + ToggleAlertFlyoutButtonProps, +} from '../toggle_alert_flyout_button'; + +export const ToggleAlertFlyoutButton: React.FC = (props) => { + const dispatch = useDispatch(); + return ( + { + if (typeof value === 'string') { + dispatch(setAlertFlyoutType(value)); + dispatch(setAlertFlyoutVisible(true)); + } else { + dispatch(setAlertFlyoutVisible(value)); + } + }} + /> + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/synthetics_alerts_flyout_wrapper.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/synthetics_alerts_flyout_wrapper.tsx new file mode 100644 index 0000000000000..33c76176787cf --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/synthetics_alerts_flyout_wrapper.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { TriggersAndActionsUIPublicPluginStart } from '@kbn/triggers-actions-ui-plugin/public'; + +interface Props { + alertFlyoutVisible: boolean; + alertTypeId?: string; + setAlertFlyoutVisibility: React.Dispatch>; +} + +interface KibanaDeps { + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; +} + +export const SyntheticsAlertsFlyoutWrapperComponent = ({ + alertFlyoutVisible, + alertTypeId, + setAlertFlyoutVisibility, +}: Props) => { + const { triggersActionsUi } = useKibana().services; + const onCloseAlertFlyout = useCallback( + () => setAlertFlyoutVisibility(false), + [setAlertFlyoutVisibility] + ); + const AddAlertFlyout = useMemo( + () => + triggersActionsUi.getAddAlertFlyout({ + consumer: 'synthetics', + onClose: onCloseAlertFlyout, + ruleTypeId: alertTypeId, + canChangeTrigger: !alertTypeId, + }), + // eslint-disable-next-line react-hooks/exhaustive-deps + [onCloseAlertFlyout, alertTypeId] + ); + + return <>{alertFlyoutVisible && AddAlertFlyout}; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/toggle_alert_flyout_button.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/toggle_alert_flyout_button.test.tsx new file mode 100644 index 0000000000000..b185d3897d243 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/toggle_alert_flyout_button.test.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 from 'react'; +import userEvent from '@testing-library/user-event'; +import { render, forNearestButton, makeSyntheticsPermissionsCore } from '../../../utils/testing'; +import { ToggleAlertFlyoutButtonComponent } from './toggle_alert_flyout_button'; +import { ToggleFlyoutTranslations } from './translations'; + +describe('ToggleAlertFlyoutButtonComponent', () => { + describe('when users have write access to synthetics', () => { + it('enables the button to create a rule', () => { + const { getByText } = render( + , + { core: makeSyntheticsPermissionsCore({ save: true }) } + ); + userEvent.click(getByText('Alerts and rules')); + expect( + forNearestButton(getByText)(ToggleFlyoutTranslations.openAlertContextPanelLabel) + ).toBeEnabled(); + }); + + it("does not contain a tooltip explaining why the user can't create alerts", async () => { + const { getByText, findByText } = render( + , + { core: makeSyntheticsPermissionsCore({ save: true }) } + ); + userEvent.click(getByText('Alerts and rules')); + userEvent.hover(getByText(ToggleFlyoutTranslations.openAlertContextPanelLabel)); + await expect(() => + findByText('You need read-write access to Synthetics to create alerts in this app.') + ).rejects.toEqual(expect.anything()); + }); + }); + + describe("when users don't have write access to uptime", () => { + it('disables the button to create a rule', () => { + const { getByText } = render( + , + { core: makeSyntheticsPermissionsCore({ save: false }) } + ); + userEvent.click(getByText('Alerts and rules')); + expect( + forNearestButton(getByText)(ToggleFlyoutTranslations.openAlertContextPanelLabel) + ).toBeDisabled(); + }); + + it("contains a tooltip explaining why users can't create rules", async () => { + const { getByText, findByText } = render( + , + { core: makeSyntheticsPermissionsCore({ save: false }) } + ); + userEvent.click(getByText('Alerts and rules')); + userEvent.hover(getByText(ToggleFlyoutTranslations.openAlertContextPanelLabel)); + expect( + await findByText('You need read-write access to Uptime to create alerts in this app.') + ).toBeInTheDocument(); + }); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/toggle_alert_flyout_button.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/toggle_alert_flyout_button.tsx new file mode 100644 index 0000000000000..f29fe0941ee82 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/toggle_alert_flyout_button.tsx @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiHeaderLink, + EuiContextMenu, + EuiContextMenuPanelDescriptor, + EuiContextMenuPanelItemDescriptor, + EuiLink, + EuiPopover, +} from '@elastic/eui'; +import React, { useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { CLIENT_ALERT_TYPES } from '../../../../../../common/constants/alerts'; +import { ClientPluginsStart } from '../../../../../plugin'; + +import { ToggleFlyoutTranslations } from './translations'; + +interface ComponentProps { + setAlertFlyoutVisible: (value: boolean | string) => void; +} + +export interface ToggleAlertFlyoutButtonProps { + alertOptions?: string[]; +} + +type Props = ComponentProps & ToggleAlertFlyoutButtonProps; + +const ALERT_CONTEXT_MAIN_PANEL_ID = 0; +const ALERT_CONTEXT_SELECT_TYPE_PANEL_ID = 1; + +const noWritePermissionsTooltipContent = i18n.translate( + 'xpack.synthetics.alertDropdown.noWritePermissions', + { + defaultMessage: 'You need read-write access to Uptime to create alerts in this app.', + } +); + +export const ToggleAlertFlyoutButtonComponent: React.FC = ({ + alertOptions, + setAlertFlyoutVisible, +}) => { + const [isOpen, setIsOpen] = useState(false); + const kibana = useKibana(); + const { + services: { observability }, + } = useKibana(); + const manageRulesUrl = observability.useRulesLink(); + const hasUptimeWrite = kibana.services.application?.capabilities.uptime?.save ?? false; + + const monitorStatusAlertContextMenuItem: EuiContextMenuPanelItemDescriptor = { + 'aria-label': ToggleFlyoutTranslations.toggleMonitorStatusAriaLabel, + 'data-test-subj': 'xpack.synthetics.toggleAlertFlyout', + name: ToggleFlyoutTranslations.toggleMonitorStatusContent, + onClick: () => { + setAlertFlyoutVisible(CLIENT_ALERT_TYPES.MONITOR_STATUS); + setIsOpen(false); + }, + }; + + const tlsAlertContextMenuItem: EuiContextMenuPanelItemDescriptor = { + 'aria-label': ToggleFlyoutTranslations.toggleTlsAriaLabel, + 'data-test-subj': 'xpack.synthetics.toggleTlsAlertFlyout', + name: ToggleFlyoutTranslations.toggleTlsContent, + onClick: () => { + setAlertFlyoutVisible(CLIENT_ALERT_TYPES.TLS); + setIsOpen(false); + }, + }; + + const managementContextItem: EuiContextMenuPanelItemDescriptor = { + 'aria-label': ToggleFlyoutTranslations.navigateToAlertingUIAriaLabel, + 'data-test-subj': 'xpack.synthetics.navigateToAlertingUi', + name: ( + + + + ), + icon: 'tableOfContents', + }; + + let selectionItems: EuiContextMenuPanelItemDescriptor[] = []; + if (!alertOptions) { + selectionItems = [monitorStatusAlertContextMenuItem, tlsAlertContextMenuItem]; + } else { + alertOptions.forEach((option) => { + if (option === CLIENT_ALERT_TYPES.MONITOR_STATUS) + selectionItems.push(monitorStatusAlertContextMenuItem); + else if (option === CLIENT_ALERT_TYPES.TLS) selectionItems.push(tlsAlertContextMenuItem); + }); + } + + if (selectionItems.length === 1) { + selectionItems[0].icon = 'bell'; + } + + let panels: EuiContextMenuPanelDescriptor[]; + if (selectionItems.length === 1) { + panels = [ + { + id: ALERT_CONTEXT_MAIN_PANEL_ID, + items: [...selectionItems, managementContextItem], + }, + ]; + } else { + panels = [ + { + id: ALERT_CONTEXT_MAIN_PANEL_ID, + items: [ + { + 'aria-label': ToggleFlyoutTranslations.openAlertContextPanelAriaLabel, + 'data-test-subj': 'xpack.synthetics.openAlertContextPanel', + name: ToggleFlyoutTranslations.openAlertContextPanelLabel, + icon: 'bell', + panel: ALERT_CONTEXT_SELECT_TYPE_PANEL_ID, + toolTipContent: !hasUptimeWrite ? noWritePermissionsTooltipContent : null, + disabled: !hasUptimeWrite, + }, + managementContextItem, + ], + }, + { + id: ALERT_CONTEXT_SELECT_TYPE_PANEL_ID, + title: ToggleFlyoutTranslations.toggleAlertFlyoutButtonLabel, + items: selectionItems, + }, + ]; + } + + return ( + setIsOpen(!isOpen)} + > + + + } + closePopover={() => setIsOpen(false)} + isOpen={isOpen} + ownFocus + panelPaddingSize="none" + > + + + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/translations.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/translations.ts new file mode 100644 index 0000000000000..0580528b6b38c --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/alerts/translations.ts @@ -0,0 +1,345 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 SECONDS_TIME_RANGE = i18n.translate( + 'xpack.synthetics.alerts.timerangeUnitSelectable.secondsOption.ariaLabel', + { + defaultMessage: '"Seconds" time range select item', + } +); + +export const SECONDS = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.timerangeOption.seconds', + { + defaultMessage: 'seconds', + } +); + +export const MINUTES_TIME_RANGE = i18n.translate( + 'xpack.synthetics.alerts.timerangeUnitSelectable.minutesOption.ariaLabel', + { + defaultMessage: '"Minutes" time range select item', + } +); + +export const MINUTES = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.timerangeOption.minutes', + { + defaultMessage: 'minutes', + } +); + +export const HOURS_TIME_RANGE = i18n.translate( + 'xpack.synthetics.alerts.timerangeUnitSelectable.hoursOption.ariaLabel', + { + defaultMessage: '"Hours" time range select item', + } +); + +export const HOURS = i18n.translate('xpack.synthetics.alerts.monitorStatus.timerangeOption.hours', { + defaultMessage: 'hours', +}); + +export const DAYS_TIME_RANGE = i18n.translate( + 'xpack.synthetics.alerts.timerangeUnitSelectable.daysOption.ariaLabel', + { + defaultMessage: '"Days" time range select item', + } +); + +export const DAYS = i18n.translate('xpack.synthetics.alerts.monitorStatus.timerangeOption.days', { + defaultMessage: 'days', +}); + +export const WEEKS_TIME_RANGE = i18n.translate( + 'xpack.synthetics.alerts.timerangeUnitSelectable.weeksOption.ariaLabel', + { + defaultMessage: '"Weeks" time range select item', + } +); + +export const WEEKS = i18n.translate('xpack.synthetics.alerts.monitorStatus.timerangeOption.weeks', { + defaultMessage: 'weeks', +}); + +export const MONTHS_TIME_RANGE = i18n.translate( + 'xpack.synthetics.alerts.timerangeUnitSelectable.monthsOption.ariaLabel', + { + defaultMessage: '"Months" time range select item', + } +); + +export const MONTHS = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.timerangeOption.months', + { + defaultMessage: 'months', + } +); + +export const YEARS_TIME_RANGE = i18n.translate( + 'xpack.synthetics.alerts.timerangeUnitSelectable.yearsOption.ariaLabel', + { + defaultMessage: '"Years" time range select item', + } +); + +export const YEARS = i18n.translate('xpack.synthetics.alerts.monitorStatus.timerangeOption.years', { + defaultMessage: 'years', +}); + +export const ALERT_KUERY_BAR_ARIA = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.filterBar.ariaLabel', + { + defaultMessage: 'Input that allows filtering criteria for the monitor status alert', + } +); + +export const OPEN_THE_POPOVER_DOWN_COUNT = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.numTimesExpression.ariaLabel', + { + defaultMessage: 'Open the popover for down count input', + } +); + +export const ENTER_NUMBER_OF_DOWN_COUNTS = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.numTimesField.ariaLabel', + { + defaultMessage: 'Enter number of down counts required to trigger the alert', + } +); + +export const MATCHING_MONITORS_DOWN = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.numTimesExpression.matchingMonitors.description', + { + defaultMessage: 'matching monitors are down >', + } +); + +export const ANY_MONITOR_DOWN = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.numTimesExpression.anyMonitors.description', + { + defaultMessage: 'any monitor is down >', + } +); + +export const OPEN_THE_POPOVER_TIME_RANGE_VALUE = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.timerangeValueExpression.ariaLabel', + { + defaultMessage: 'Open the popover for time range value field', + } +); + +export const ENTER_NUMBER_OF_TIME_UNITS = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.timerangeValueField.ariaLabel', + { + defaultMessage: `Enter the number of time units for the alert's range`, + } +); + +export const ENTER_NUMBER_OF_TIME_UNITS_DESCRIPTION = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.timerangeValueField.expression', + { + defaultMessage: 'within', + } +); + +export const ENTER_NUMBER_OF_TIME_UNITS_VALUE = (value: number) => + i18n.translate('xpack.synthetics.alerts.monitorStatus.timerangeValueField.value', { + defaultMessage: 'last {value}', + values: { value }, + }); + +export const ENTER_AVAILABILITY_RANGE_ENABLED = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.isEnabledCheckbox.label', + { + defaultMessage: 'Availability', + } +); + +export const ENTER_AVAILABILITY_RANGE_POPOVER_ARIA_LABEL = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.timerangeValueField.popover.ariaLabel', + { + defaultMessage: 'Specify availability tracking time range', + } +); + +export const ENTER_AVAILABILITY_RANGE_UNITS_ARIA_LABEL = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.timerangeValueField.ariaLabel', + { + defaultMessage: `Enter the number of units for the alert's availability check.`, + } +); + +export const ENTER_AVAILABILITY_RANGE_UNITS_DESCRIPTION = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.timerangeValueField.expression', + { + defaultMessage: 'within the last', + } +); + +export const ENTER_AVAILABILITY_THRESHOLD_ARIA_LABEL = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.threshold.ariaLabel', + { + defaultMessage: 'Specify availability thresholds for this alert', + } +); + +export const ENTER_AVAILABILITY_THRESHOLD_INPUT_ARIA_LABEL = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.threshold.input.ariaLabel', + { + defaultMessage: 'Input an availability threshold to check for this alert', + } +); + +export const ENTER_AVAILABILITY_THRESHOLD_DESCRIPTION = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.threshold.description', + { + defaultMessage: 'matching monitors are up in', + description: + 'This fragment explains that an alert will fire for monitors matching user-specified criteria', + } +); + +export const ENTER_ANY_AVAILABILITY_THRESHOLD_DESCRIPTION = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.threshold.anyMonitorDescription', + { + defaultMessage: 'any monitor is up in', + description: + 'This fragment explains that an alert will fire for monitors matching user-specified criteria', + } +); + +export const ENTER_AVAILABILITY_THRESHOLD_VALUE = (value: string) => + i18n.translate('xpack.synthetics.alerts.monitorStatus.availability.threshold.value', { + defaultMessage: '< {value}% of checks', + description: + 'This fragment specifies criteria that will cause an alert to fire for uptime monitors', + values: { value }, + }); + +export const ENTER_AVAILABILITY_RANGE_SELECT_ARIA = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.unit.selectable', + { + defaultMessage: 'Use this select to set the availability range units for this alert', + } +); + +export const ENTER_AVAILABILITY_RANGE_SELECT_HEADLINE = i18n.translate( + 'xpack.synthetics.alerts.monitorStatus.availability.unit.headline', + { + defaultMessage: 'Select time range unit', + } +); + +export const ADD_FILTER = i18n.translate('xpack.synthetics.alerts.monitorStatus.addFilter', { + defaultMessage: `Add filter`, +}); + +export const LOCATION = i18n.translate('xpack.synthetics.alerts.monitorStatus.addFilter.location', { + defaultMessage: `Location`, +}); + +export const TAG = i18n.translate('xpack.synthetics.alerts.monitorStatus.addFilter.tag', { + defaultMessage: `Tag`, +}); + +export const PORT = i18n.translate('xpack.synthetics.alerts.monitorStatus.addFilter.port', { + defaultMessage: `Port`, +}); + +export const TYPE = i18n.translate('xpack.synthetics.alerts.monitorStatus.addFilter.type', { + defaultMessage: `Type`, +}); + +export const TlsTranslations = { + criteriaAriaLabel: i18n.translate('xpack.synthetics.alerts.tls.criteriaExpression.ariaLabel', { + defaultMessage: + 'An expression displaying the criteria for monitor that are watched by this alert', + }), + criteriaDescription: i18n.translate( + 'xpack.synthetics.alerts.tls.criteriaExpression.description', + { + defaultMessage: 'when', + description: + 'The context of this `when` is in the conditional sense, like "when there are three cookies, eat them all".', + } + ), + criteriaValue: i18n.translate('xpack.synthetics.alerts.tls.criteriaExpression.value', { + defaultMessage: 'any monitor', + }), + expirationAriaLabel: i18n.translate( + 'xpack.synthetics.alerts.tls.expirationExpression.ariaLabel', + { + defaultMessage: + 'An expression displaying the threshold that will trigger the TLS alert for certificate expiration', + } + ), + expirationDescription: i18n.translate( + 'xpack.synthetics.alerts.tls.expirationExpression.description', + { + defaultMessage: 'has a certificate expiring within', + } + ), + expirationValue: (value?: number) => + i18n.translate('xpack.synthetics.alerts.tls.expirationExpression.value', { + defaultMessage: '{value} days', + values: { value }, + }), + ageAriaLabel: i18n.translate('xpack.synthetics.alerts.tls.ageExpression.ariaLabel', { + defaultMessage: + 'An expressing displaying the threshold that will trigger the TLS alert for old certificates', + }), + ageDescription: i18n.translate('xpack.synthetics.alerts.tls.ageExpression.description', { + defaultMessage: 'or older than', + }), + ageValue: (value?: number) => + i18n.translate('xpack.synthetics.alerts.tls.ageExpression.value', { + defaultMessage: '{value} days', + values: { value }, + }), +}; + +export const ToggleFlyoutTranslations = { + toggleButtonAriaLabel: i18n.translate('xpack.synthetics.alertsPopover.toggleButton.ariaLabel', { + defaultMessage: 'Open alerts and rules context menu', + }), + openAlertContextPanelAriaLabel: i18n.translate( + 'xpack.synthetics.openAlertContextPanel.ariaLabel', + { + defaultMessage: 'Open the rule context panel so you can choose a rule type', + } + ), + openAlertContextPanelLabel: i18n.translate('xpack.synthetics.openAlertContextPanel.label', { + defaultMessage: 'Create rule', + }), + toggleTlsAriaLabel: i18n.translate('xpack.synthetics.toggleTlsAlertButton.ariaLabel', { + defaultMessage: 'Open TLS rule flyout', + }), + toggleTlsContent: i18n.translate('xpack.synthetics.toggleTlsAlertButton.content', { + defaultMessage: 'TLS rule', + }), + toggleMonitorStatusAriaLabel: i18n.translate('xpack.synthetics.toggleAlertFlyout.ariaLabel', { + defaultMessage: 'Open add rule flyout', + }), + toggleMonitorStatusContent: i18n.translate('xpack.synthetics.toggleAlertButton.content', { + defaultMessage: 'Monitor status rule', + }), + navigateToAlertingUIAriaLabel: i18n.translate('xpack.synthetics.navigateToAlertingUi', { + defaultMessage: 'Leave Uptime and go to Alerting Management page', + }), + navigateToAlertingButtonContent: i18n.translate( + 'xpack.synthetics.navigateToAlertingButton.content', + { + defaultMessage: 'Manage rules', + } + ), + toggleAlertFlyoutButtonLabel: i18n.translate('xpack.synthetics.alerts.createRulesPanel.title', { + defaultMessage: 'Create rules', + }), +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/empty_state_error.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/empty_state_error.tsx new file mode 100644 index 0000000000000..3f2150169e2df --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/empty_state_error.tsx @@ -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 { EuiEmptyPrompt, EuiPanel, EuiTitle, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { Fragment } from 'react'; +import { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; + +interface EmptyStateErrorProps { + errors: Array>; +} + +export const EmptyStateError = ({ errors }: EmptyStateErrorProps) => { + const unauthorized = errors.find( + (error) => error.message && error.message.includes('unauthorized') + ); + + return ( + + + + + {unauthorized ? ( +

+ {i18n.translate('xpack.synthetics.emptyStateError.notAuthorized', { + defaultMessage: + 'You are not authorized to view Uptime data, please contact your system administrator.', + })} +

+ ) : ( +

+ {i18n.translate('xpack.synthetics.emptyStateError.title', { + defaultMessage: 'Error', + })} +

+ )} + + } + body={ + + {!unauthorized && + errors.map((error) => ( +

+ {error.body?.message || error.message} +

+ ))} +
+ } + /> +
+
+
+ ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/empty_state_loading.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/empty_state_loading.tsx new file mode 100644 index 0000000000000..0f71c9bafa962 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/empty_state_loading.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiEmptyPrompt, EuiLoadingSpinner, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { Fragment } from 'react'; + +export const EmptyStateLoading = () => ( + + + + +

+ {i18n.translate('xpack.synthetics.emptyState.loadingMessage', { + defaultMessage: 'Loading…', + })} +

+
+ + } + /> +); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/use_has_data.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/use_has_data.tsx new file mode 100644 index 0000000000000..3561d841c7564 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/empty_state/use_has_data.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useContext, useEffect } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { getIndexStatus, selectIndexState } from '../../../state'; +import { SyntheticsRefreshContext } from '../../../contexts'; +// import { getDynamicSettings } from '../../../state/actions/dynamic_settings'; + +export const useHasData = () => { + const { loading, error, data } = useSelector(selectIndexState); + const { lastRefresh } = useContext(SyntheticsRefreshContext); + + // const { settings } = useSelector(selectDynamicSettings); // TODO: Add state for dynamicSettings + const settings = { heartbeatIndices: 'synthetics-*' }; + + const dispatch = useDispatch(); + + useEffect(() => { + dispatch(getIndexStatus()); + }, [dispatch, lastRefresh]); + + /* useEffect(() => { + dispatch(getDynamicSettings()); + }, [dispatch]);*/ + + return { + data, + error, + loading, + settings, + }; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/filter_group/labels.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/filter_group/labels.ts new file mode 100644 index 0000000000000..e1cf5e20e14c3 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/filter_group/labels.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 { i18n } from '@kbn/i18n'; + +export const filterLabels = { + LOCATION: i18n.translate('xpack.synthetics.filterBar.options.location.name', { + defaultMessage: 'Location', + }), + + PORT: i18n.translate('xpack.synthetics.filterBar.options.portLabel', { defaultMessage: 'Port' }), + + SCHEME: i18n.translate('xpack.synthetics.filterBar.options.schemeLabel', { + defaultMessage: 'Scheme', + }), + + TAG: i18n.translate('xpack.synthetics.filterBar.options.tagsLabel', { + defaultMessage: 'Tag', + }), +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/overview_page.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/overview_page.tsx new file mode 100644 index 0000000000000..4a370fc024423 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/overview_page.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 { EuiFlexGroup, EuiFlexItem, EuiLink } from '@elastic/eui'; +import React from 'react'; +import { useTrackPageview } from '@kbn/observability-plugin/public'; +import { useSyntheticsSettingsContext } from '../../contexts'; +import { useOverviewBreadcrumbs } from './use_breadcrumbs'; + +export const OverviewPage: React.FC = () => { + useTrackPageview({ app: 'synthetics', path: 'overview' }); + useTrackPageview({ app: 'synthetics', path: 'overview', delay: 15000 }); + useOverviewBreadcrumbs(); + const { basePath } = useSyntheticsSettingsContext(); + + return ( + + +

This page should show empty state or overview

+
+ + Monitor Management + + + Add Monitor + +
+ ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/use_breadcrumbs.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/use_breadcrumbs.ts new file mode 100644 index 0000000000000..d33a0fd3c20cc --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/overview/use_breadcrumbs.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { i18n } from '@kbn/i18n'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { useBreadcrumbs } from '../../hooks/use_breadcrumbs'; +import { PLUGIN } from '../../../../../common/constants/plugin'; + +export const useOverviewBreadcrumbs = () => { + const kibana = useKibana(); + const appPath = kibana.services.application?.getUrlForApp(PLUGIN.SYNTHETICS_PLUGIN_ID) ?? ''; + + useBreadcrumbs([ + { + text: OVERVIEW_PAGE_CRUMB, + href: `${appPath}`, + }, + ]); +}; + +export const OVERVIEW_PAGE_CRUMB = i18n.translate('xpack.synthetics.overviewPage.overviewCrumb', { + defaultMessage: 'Overview', +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/contexts/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/index.ts new file mode 100644 index 0000000000000..6a2e0226671fe --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/index.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './synthetics_refresh_context'; +export * from './synthetics_settings_context'; +export * from './synthetics_theme_context'; +export * from './synthetics_startup_plugins_context'; +export * from './synthetics_data_view_context'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx new file mode 100644 index 0000000000000..af657abd77540 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { createContext, useContext } from 'react'; +import { useFetcher } from '@kbn/observability-plugin/public'; +import { DataViewsPublicPluginStart, DataView } from '@kbn/data-views-plugin/public'; +import { useHasData } from '../components/overview/empty_state/use_has_data'; + +export const SyntheticsDataViewContext = createContext({} as DataView); + +export const SyntheticsDataViewContextProvider: React.FC<{ + dataViews: DataViewsPublicPluginStart; +}> = ({ children, dataViews }) => { + const { settings, data: indexStatus } = useHasData(); + + const heartbeatIndices = settings?.heartbeatIndices || ''; + + const { data } = useFetcher>(async () => { + if (heartbeatIndices && indexStatus?.indexExists) { + // this only creates an dateView in memory, not as saved object + return dataViews.create({ title: heartbeatIndices }); + } + }, [heartbeatIndices, indexStatus?.indexExists]); + + return ; +}; + +export const useSyntheticsDataView = () => useContext(SyntheticsDataViewContext); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx new file mode 100644 index 0000000000000..696054eeb618b --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { createContext, useContext, useMemo, useState } from 'react'; + +interface SyntheticsRefreshContext { + lastRefresh: number; + refreshApp: () => void; +} + +const defaultContext: SyntheticsRefreshContext = { + lastRefresh: 0, + refreshApp: () => { + throw new Error('App refresh was not initialized, set it when you invoke the context'); + }, +}; + +export const SyntheticsRefreshContext = createContext(defaultContext); + +export const SyntheticsRefreshContextProvider: React.FC = ({ children }) => { + const [lastRefresh, setLastRefresh] = useState(Date.now()); + + const refreshApp = () => { + const refreshTime = Date.now(); + setLastRefresh(refreshTime); + }; + + const value = useMemo(() => { + return { lastRefresh, refreshApp }; + }, [lastRefresh]); + + return ; +}; + +export const useSyntheticsRefreshContext = () => useContext(SyntheticsRefreshContext); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx new file mode 100644 index 0000000000000..61231cfde6dfe --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + AppMountParameters, + ChromeBadge, + ChromeBreadcrumb, + CoreStart, + I18nStart, +} from '@kbn/core/public'; +import React, { createContext, useContext, useMemo } from 'react'; +import { ClientPluginsSetup, ClientPluginsStart } from '../../../plugin'; +import { CLIENT_DEFAULTS, CONTEXT_DEFAULTS } from '../../../../common/constants'; +import { useGetUrlParams } from '../hooks'; + +export interface CommonlyUsedDateRange { + from: string; + to: string; + display: string; +} + +export interface SyntheticsAppProps { + basePath: string; + canSave: boolean; + core: CoreStart; + darkMode: boolean; + i18n: I18nStart; + isApmAvailable: boolean; + isInfraAvailable: boolean; + isLogsAvailable: boolean; + plugins: ClientPluginsSetup; + startPlugins: ClientPluginsStart; + setBadge: (badge?: ChromeBadge) => void; + renderGlobalHelpControls(): void; + commonlyUsedRanges: CommonlyUsedDateRange[]; + setBreadcrumbs: (crumbs: ChromeBreadcrumb[]) => void; + appMountParameters: AppMountParameters; + isDev: boolean; +} + +export interface SyntheticsSettingsContextValues { + basePath: string; + dateRangeStart: string; + dateRangeEnd: string; + isApmAvailable: boolean; + isInfraAvailable: boolean; + isLogsAvailable: boolean; + commonlyUsedRanges?: CommonlyUsedDateRange[]; + isDev?: boolean; +} + +const { BASE_PATH } = CONTEXT_DEFAULTS; + +const { DATE_RANGE_START, DATE_RANGE_END } = CLIENT_DEFAULTS; + +/** + * These are default values for the context. These defaults are typically + * overwritten by the Synthetics App upon its invocation. + */ +const defaultContext: SyntheticsSettingsContextValues = { + basePath: BASE_PATH, + dateRangeStart: DATE_RANGE_START, + dateRangeEnd: DATE_RANGE_END, + isApmAvailable: true, + isInfraAvailable: true, + isLogsAvailable: true, + isDev: false, +}; +export const SyntheticsSettingsContext = createContext(defaultContext); + +export const SyntheticsSettingsContextProvider: React.FC = ({ + children, + ...props +}) => { + const { basePath, isApmAvailable, isInfraAvailable, isLogsAvailable, commonlyUsedRanges, isDev } = + props; + + const { dateRangeStart, dateRangeEnd } = useGetUrlParams(); + + const value = useMemo(() => { + return { + isDev, + basePath, + isApmAvailable, + isInfraAvailable, + isLogsAvailable, + commonlyUsedRanges, + dateRangeStart: dateRangeStart ?? DATE_RANGE_START, + dateRangeEnd: dateRangeEnd ?? DATE_RANGE_END, + }; + }, [ + isDev, + basePath, + isApmAvailable, + isInfraAvailable, + isLogsAvailable, + dateRangeStart, + dateRangeEnd, + commonlyUsedRanges, + ]); + + return ; +}; + +export const useSyntheticsSettingsContext = () => useContext(SyntheticsSettingsContext); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_startup_plugins_context.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_startup_plugins_context.tsx new file mode 100644 index 0000000000000..75ee7b3d6ae67 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_startup_plugins_context.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 React, { createContext, useContext } from 'react'; +import { ClientPluginsStart } from '../../../plugin'; + +export const SyntheticsStartupPluginsContext = createContext>({}); + +export const SyntheticsStartupPluginsContextProvider: React.FC> = ({ + children, + ...props +}) => ; + +export const useSyntheticsStartPlugins = () => useContext(SyntheticsStartupPluginsContext); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_theme_context.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_theme_context.tsx new file mode 100644 index 0000000000000..32844de9d04c2 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/contexts/synthetics_theme_context.tsx @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { euiLightVars, euiDarkVars } from '@kbn/ui-theme'; +import React, { createContext, useMemo } from 'react'; +import { EUI_CHARTS_THEME_DARK, EUI_CHARTS_THEME_LIGHT } from '@elastic/eui/dist/eui_charts_theme'; +import { DARK_THEME, LIGHT_THEME, PartialTheme, Theme } from '@elastic/charts'; + +export interface SyntheticsAppColors { + danger: string; + dangerBehindText: string; + success: string; + gray: string; + range: string; + mean: string; + warning: string; + lightestShade: string; +} + +export interface SyntheticsThemeContextValues { + colors: SyntheticsAppColors; + chartTheme: { + baseTheme?: Theme; + theme?: PartialTheme; + }; +} + +/** + * These are default values for the context. These defaults are typically + * overwritten by the Synthetics App upon its invocation. + */ +const defaultContext: SyntheticsThemeContextValues = { + colors: { + danger: euiLightVars.euiColorDanger, + dangerBehindText: euiDarkVars.euiColorVis9_behindText, + mean: euiLightVars.euiColorPrimary, + range: euiLightVars.euiFocusBackgroundColor, + success: euiLightVars.euiColorSuccess, + warning: euiLightVars.euiColorWarning, + gray: euiLightVars.euiColorLightShade, + lightestShade: euiLightVars.euiColorLightestShade, + }, + chartTheme: { + baseTheme: LIGHT_THEME, + theme: EUI_CHARTS_THEME_LIGHT.theme, + }, +}; + +export const SyntheticsThemeContext = createContext(defaultContext); + +interface ThemeContextProps { + darkMode: boolean; +} + +export const SyntheticsThemeContextProvider: React.FC = ({ + darkMode, + children, +}) => { + let colors: SyntheticsAppColors; + if (darkMode) { + colors = { + danger: euiDarkVars.euiColorVis9, + dangerBehindText: euiDarkVars.euiColorVis9_behindText, + mean: euiDarkVars.euiColorPrimary, + gray: euiDarkVars.euiColorLightShade, + range: euiDarkVars.euiFocusBackgroundColor, + success: euiDarkVars.euiColorSuccess, + warning: euiDarkVars.euiColorWarning, + lightestShade: euiDarkVars.euiColorLightestShade, + }; + } else { + colors = { + danger: euiLightVars.euiColorVis9, + dangerBehindText: euiLightVars.euiColorVis9_behindText, + mean: euiLightVars.euiColorPrimary, + gray: euiLightVars.euiColorLightShade, + range: euiLightVars.euiFocusBackgroundColor, + success: euiLightVars.euiColorSuccess, + warning: euiLightVars.euiColorWarning, + lightestShade: euiLightVars.euiColorLightestShade, + }; + } + const value = useMemo(() => { + return { + colors, + chartTheme: { + baseTheme: darkMode ? DARK_THEME : LIGHT_THEME, + theme: darkMode ? EUI_CHARTS_THEME_DARK.theme : EUI_CHARTS_THEME_LIGHT.theme, + }, + }; + }, [colors, darkMode]); + + return ; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/index.ts new file mode 100644 index 0000000000000..a7df47d7a0f71 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './use_url_params'; +export * from './use_filter_update'; +export * from './use_breadcrumbs'; +export * from './use_telemetry'; +export * from './use_breakpoints'; +export * from './use_service_allowed'; +export * from './use_no_data_config'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx new file mode 100644 index 0000000000000..d2639da47e79e --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ChromeBreadcrumb } from '@kbn/core/public'; +import { render } from '../utils/testing'; +import React from 'react'; +import { Route } from 'react-router-dom'; +import { OVERVIEW_ROUTE } from '../../../../common/constants'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { + SyntheticsUrlParams, + getSupportedUrlParams, +} from '../utils/url_params/get_supported_url_params'; +import { makeBaseBreadcrumb, useBreadcrumbs } from './use_breadcrumbs'; + +describe('useBreadcrumbs', () => { + it('sets the given breadcrumbs', () => { + const [getBreadcrumbs, core] = mockCore(); + + const expectedCrumbs: ChromeBreadcrumb[] = [ + { text: 'Crumb: ', href: 'http://href.example.net' }, + { text: 'Crumb II: Son of Crumb', href: 'http://href2.example.net' }, + ]; + + const Component = () => { + useBreadcrumbs(expectedCrumbs); + return <>Hello; + }; + + render( + + + + + + ); + + const urlParams: SyntheticsUrlParams = getSupportedUrlParams({}); + expect(JSON.stringify(getBreadcrumbs())).toEqual( + JSON.stringify( + makeBaseBreadcrumb('/app/synthetics', '/app/observability', urlParams).concat( + expectedCrumbs + ) + ) + ); + }); +}); + +const mockCore: () => [() => ChromeBreadcrumb[], any] = () => { + let breadcrumbObj: ChromeBreadcrumb[] = []; + const get = () => { + return breadcrumbObj; + }; + const core = { + application: { + getUrlForApp: (app: string) => + app === 'synthetics' ? '/app/synthetics' : '/app/observability', + navigateToUrl: jest.fn(), + }, + chrome: { + setBreadcrumbs: (newBreadcrumbs: ChromeBreadcrumb[]) => { + breadcrumbObj = newBreadcrumbs; + }, + }, + }; + + return [get, core]; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts new file mode 100644 index 0000000000000..0902481c51a9c --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.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 { ChromeBreadcrumb } from '@kbn/core/public'; +import { i18n } from '@kbn/i18n'; +import { MouseEvent, useEffect } from 'react'; +import { EuiBreadcrumb } from '@elastic/eui'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { SyntheticsUrlParams, stringifyUrlParams } from '../utils/url_params'; +import { useUrlParams } from './use_url_params'; +import { PLUGIN } from '../../../../common/constants/plugin'; + +const EMPTY_QUERY = '?'; + +function handleBreadcrumbClick( + breadcrumbs: ChromeBreadcrumb[], + navigateToHref?: (url: string) => Promise +) { + return breadcrumbs.map((bc) => ({ + ...bc, + ...(bc.href + ? { + onClick: (event: MouseEvent) => { + if (navigateToHref && bc.href) { + event.preventDefault(); + navigateToHref(bc.href); + } + }, + } + : {}), + })); +} + +export const makeBaseBreadcrumb = ( + uptimePath: string, + observabilityPath: string, + params?: SyntheticsUrlParams +): [EuiBreadcrumb, EuiBreadcrumb] => { + if (params) { + const crumbParams: Partial = { ...params }; + + delete crumbParams.statusFilter; + const query = stringifyUrlParams(crumbParams, true); + uptimePath += query === EMPTY_QUERY ? '' : query; + } + + return [ + { + text: i18n.translate('xpack.synthetics.breadcrumbs.observabilityText', { + defaultMessage: 'Observability', + }), + href: observabilityPath, + }, + { + text: i18n.translate('xpack.synthetics.breadcrumbs.overviewBreadcrumbText', { + defaultMessage: 'Synthetics', + }), + href: uptimePath, + }, + ]; +}; + +export const useBreadcrumbs = (extraCrumbs: ChromeBreadcrumb[]) => { + const params = useUrlParams()[0](); + const kibana = useKibana(); + const setBreadcrumbs = kibana.services.chrome?.setBreadcrumbs; + const uptimePath = kibana.services.application?.getUrlForApp(PLUGIN.SYNTHETICS_PLUGIN_ID) ?? ''; + const observabilityPath = + kibana.services.application?.getUrlForApp('observability-overview') ?? ''; + const navigate = kibana.services.application?.navigateToUrl; + + useEffect(() => { + if (setBreadcrumbs) { + setBreadcrumbs( + handleBreadcrumbClick( + makeBaseBreadcrumb(uptimePath, observabilityPath, params).concat(extraCrumbs), + navigate + ) + ); + } + }, [uptimePath, observabilityPath, extraCrumbs, navigate, params, setBreadcrumbs]); +}; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/hooks/use_breakpoints.test.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breakpoints.test.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/hooks/use_breakpoints.test.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breakpoints.test.ts diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/hooks/use_breakpoints.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breakpoints.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/hooks/use_breakpoints.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_breakpoints.ts diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_filter_update.test.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_filter_update.test.ts new file mode 100644 index 0000000000000..da3a25a5fc9df --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_filter_update.test.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { addUpdatedField } from './use_filter_update'; + +describe('useFilterUpdate', () => { + describe('addUpdatedField', () => { + it('conditionally adds fields if they are new', () => { + const testVal = {}; + addUpdatedField('a val', 'newField', 'a new val', testVal); + expect(testVal).toEqual({ + newField: 'a new val', + }); + }); + + it('will add a field if the value is the same but not the default', () => { + const testVal = {}; + addUpdatedField('a val', 'newField', 'a val', testVal); + expect(testVal).toEqual({ newField: 'a val' }); + }); + + it(`won't add a field if the current value is empty`, () => { + const testVal = {}; + addUpdatedField('', 'newField', '', testVal); + expect(testVal).toEqual({}); + }); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_filter_update.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_filter_update.ts new file mode 100644 index 0000000000000..5578230ab2cf0 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_filter_update.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 { useEffect } from 'react'; +import { useUrlParams } from './use_url_params'; + +export const parseFiltersMap = (currentFilters: string): Map => { + try { + return new Map(JSON.parse(currentFilters)); + } catch { + return new Map(); + } +}; + +const getUpdateFilters = ( + filterKueries: Map, + fieldName: string, + values?: string[] +): string => { + // add new term to filter map, toggle it off if already present + const updatedFilterMap = new Map(filterKueries); + updatedFilterMap.set(fieldName, values ?? []); + updatedFilterMap.forEach((value, key) => { + if (typeof value !== 'undefined' && value.length === 0) { + updatedFilterMap.delete(key); + } + }); + + // store the new set of filters + const persistedFilters = Array.from(updatedFilterMap); + return persistedFilters.length === 0 ? '' : JSON.stringify(persistedFilters); +}; + +export function addUpdatedField( + current: string, + key: string, + updated: string, + objToUpdate: { [key: string]: string } +): void { + if (current !== updated || current !== '') { + objToUpdate[key] = updated; + } +} + +export const useFilterUpdate = ( + fieldName: string, + values: string[], + notValues: string[], + shouldUpdateUrl: boolean = true +) => { + const [getUrlParams, updateUrl] = useUrlParams(); + + const { filters, excludedFilters } = getUrlParams(); + + useEffect(() => { + const currentFiltersMap: Map = parseFiltersMap(filters); + const currentExclusionsMap: Map = parseFiltersMap(excludedFilters); + const newFiltersString = getUpdateFilters(currentFiltersMap, fieldName, values); + const newExclusionsString = getUpdateFilters(currentExclusionsMap, fieldName, notValues); + + const update: { [key: string]: string } = {}; + + addUpdatedField(filters, 'filters', newFiltersString, update); + addUpdatedField(excludedFilters, 'excludedFilters', newExclusionsString, update); + + if (shouldUpdateUrl && Object.keys(update).length > 0) { + // reset pagination whenever filters change + updateUrl({ ...update, pagination: '' }); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [fieldName, values, notValues]); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_no_data_config.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_no_data_config.ts new file mode 100644 index 0000000000000..6243d2f5d8c8a --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_no_data_config.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 { i18n } from '@kbn/i18n'; +import { useContext } from 'react'; +import { useSelector } from 'react-redux'; +import { KibanaPageTemplateProps, useKibana } from '@kbn/kibana-react-plugin/public'; +import { SyntheticsSettingsContext } from '../contexts'; +import { ClientPluginsStart } from '../../../plugin'; +import { selectIndexState } from '../state'; + +export function useNoDataConfig(): KibanaPageTemplateProps['noDataConfig'] { + const { basePath } = useContext(SyntheticsSettingsContext); + + const { + services: { docLinks }, + } = useKibana(); + + const { data } = useSelector(selectIndexState); + + // Returns no data config when there is no historical data + if (data && !data.indexExists) { + return { + solution: i18n.translate('xpack.synthetics.noDataConfig.solutionName', { + defaultMessage: 'Observability', + }), + actions: { + beats: { + title: i18n.translate('xpack.synthetics.noDataConfig.beatsCard.title', { + defaultMessage: 'Add monitors with Heartbeat', + }), + description: i18n.translate('xpack.synthetics.noDataConfig.beatsCard.description', { + defaultMessage: + 'Proactively monitor the availability of your sites and services. Receive alerts and resolve issues faster to optimize your users experience.', + }), + href: basePath + `/app/home#/tutorial/uptimeMonitors`, + }, + }, + docsLink: docLinks!.links.observability.guide, + }; + } +} +// TODO: Change no data config for Synthetics diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_service_allowed.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_service_allowed.ts new file mode 100644 index 0000000000000..12a2ed7043973 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_service_allowed.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 { useDispatch } from 'react-redux'; +import { useEffect } from 'react'; +// import { syntheticsServiceAllowedSelector } from '../../../state/selectors'; +// import { getSyntheticsServiceAllowed } from '../../../state/actions'; + +export const useSyntheticsServiceAllowed = () => { + const dispatch = useDispatch(); + + useEffect(() => { + // dispatch(getSyntheticsServiceAllowed.get()); + }, [dispatch]); + + // return useSelector(syntheticsServiceAllowedSelector); + // TODO Implement for Synthetics App + return { isAllowed: true, signupUrl: 'https://example.com', loading: false }; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_telemetry.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_telemetry.ts new file mode 100644 index 0000000000000..f97e4c4b2be09 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_telemetry.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 { useEffect } from 'react'; +import { useGetUrlParams } from './use_url_params'; +import { apiService } from '../utils/api_service'; +// import { API_URLS } from '../../../common/constants'; + +export enum SyntheticsPage { + Overview = 'Overview', + Monitor = 'Monitor', + MonitorAdd = 'AddMonitor', + MonitorEdit = 'EditMonitor', + MonitorManagement = 'MonitorManagement', + Settings = 'Settings', + Certificates = 'Certificates', + StepDetail = 'StepDetail', + SyntheticCheckStepsPage = 'SyntheticCheckStepsPage', + NotFound = '__not-found__', +} + +export const useSyntheticsTelemetry = (page?: SyntheticsPage) => { + const { dateRangeStart, dateRangeEnd, autorefreshInterval, autorefreshIsPaused } = + useGetUrlParams(); + + useEffect(() => { + if (!apiService.http) throw new Error('Core http services are not defined'); + + /* + TODO: Add/Modify telemetry endpoint for synthetics + const params = { + page, + autorefreshInterval: autorefreshInterval / 1000, // divide by 1000 to keep it in secs + dateStart: dateRangeStart, + dateEnd: dateRangeEnd, + autoRefreshEnabled: !autorefreshIsPaused, + };*/ + setTimeout(() => { + // apiService.post(API_URLS.LOG_PAGE_VIEW, params); + }, 100); + }, [autorefreshInterval, autorefreshIsPaused, dateRangeEnd, dateRangeStart, page]); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx new file mode 100644 index 0000000000000..d1e9ceae998b5 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import DateMath from '@kbn/datemath'; +import userEvent from '@testing-library/user-event'; +import { render } from '../utils/testing'; +import React, { useState, Fragment } from 'react'; +import { useUrlParams, SyntheticsUrlParamsHook } from './use_url_params'; +import { SyntheticsRefreshContext } from '../contexts'; + +interface MockUrlParamsComponentProps { + hook: SyntheticsUrlParamsHook; + updateParams?: { [key: string]: any }; +} + +const UseUrlParamsTestComponent = ({ hook, updateParams }: MockUrlParamsComponentProps) => { + const [params, setParams] = useState({}); + const [getUrlParams, updateUrlParams] = hook(); + const queryParams = getUrlParams(); + return ( + + {Object.keys(params).length > 0 ?
{JSON.stringify(params)}
: null} + + +
+ ); +}; + +describe('useUrlParams', () => { + let dateMathSpy: any; + const MOCK_DATE_VALUE = 20; + + beforeEach(() => { + dateMathSpy = jest.spyOn(DateMath, 'parse'); + dateMathSpy.mockReturnValue(MOCK_DATE_VALUE); + }); + + it('accepts router props, updates URL params, and returns the current params', async () => { + const { findByText, history } = render( + + + + ); + + const pushSpy = jest.spyOn(history, 'push'); + + const setUrlParamsButton = await findByText('Set url params'); + userEvent.click(setUrlParamsButton); + expect(pushSpy).toHaveBeenCalledWith({ + pathname: '/', + search: 'dateRangeEnd=now&dateRangeStart=now-12d', + }); + pushSpy.mockClear(); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.ts b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.ts new file mode 100644 index 0000000000000..ec31c711cffc7 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useEffect } from 'react'; +import { stringify } from 'query-string'; +import { useLocation, useHistory } from 'react-router-dom'; +import { useDispatch, useSelector } from 'react-redux'; +import { SyntheticsUrlParams, getSupportedUrlParams } from '../utils/url_params'; + +// TODO: Create the following imports for new Synthetics App +import { selectedFiltersSelector } from '../../../legacy_uptime/state/selectors'; +import { setSelectedFilters } from '../../../legacy_uptime/state/actions/selected_filters'; +import { getFiltersFromMap } from '../../../legacy_uptime/hooks/use_selected_filters'; +import { getParsedParams } from '../../../legacy_uptime/lib/helper/parse_search'; + +export type GetUrlParams = () => SyntheticsUrlParams; +export type UpdateUrlParams = (updatedParams: { + [key: string]: string | number | boolean | undefined; +}) => void; + +export type SyntheticsUrlParamsHook = () => [GetUrlParams, UpdateUrlParams]; + +export const useGetUrlParams: GetUrlParams = () => { + const { search } = useLocation(); + + return getSupportedUrlParams(getParsedParams(search)); +}; + +const getMapFromFilters = (value: any): Map | undefined => { + try { + return new Map(JSON.parse(value)); + } catch { + return undefined; + } +}; + +export const useUrlParams: SyntheticsUrlParamsHook = () => { + const { pathname, search } = useLocation(); + const history = useHistory(); + const dispatch = useDispatch(); + const selectedFilters = useSelector(selectedFiltersSelector); + const { filters } = useGetUrlParams(); + + useEffect(() => { + if (selectedFilters === null) { + const filterMap = getMapFromFilters(filters); + if (filterMap) { + dispatch(setSelectedFilters(getFiltersFromMap(filterMap))); + } + } + }, [dispatch, filters, selectedFilters]); + + const updateUrlParams: UpdateUrlParams = useCallback( + (updatedParams) => { + const currentParams = getParsedParams(search); + const mergedParams = { + ...currentParams, + ...updatedParams, + }; + + const updatedSearch = stringify( + // drop any parameters that have no value + Object.keys(mergedParams).reduce((params, key) => { + const value = mergedParams[key]; + if (value === undefined || value === '') { + return params; + } + return { + ...params, + [key]: value, + }; + }, {}) + ); + + // only update the URL if the search has actually changed + if (search !== updatedSearch) { + history.push({ pathname, search: updatedSearch }); + } + const filterMap = getMapFromFilters(mergedParams.filters); + if (!filterMap) { + dispatch(setSelectedFilters(null)); + } else { + dispatch(setSelectedFilters(getFiltersFromMap(filterMap))); + } + }, + [dispatch, history, pathname, search] + ); + + return [useGetUrlParams, updateUrlParams]; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/render_app.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/render_app.tsx index c4b05ea7a2e0c..76b86c0b82383 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/render_app.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/render_app.tsx @@ -7,9 +7,17 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { i18n as i18nFormatter } from '@kbn/i18n'; import { AppMountParameters, CoreStart } from '@kbn/core/public'; +import { SyntheticsAppProps } from './contexts'; +import { getIntegratedAppAvailability } from './utils/adapters'; +import { + DEFAULT_DARK_MODE, + DEFAULT_TIMEPICKER_QUICK_RANGES, + INTEGRATED_SOLUTIONS, +} from '../../../common/constants'; +import { SyntheticsApp } from './synthetics_app'; import { ClientPluginsSetup, ClientPluginsStart } from '../../plugin'; -import { SyntheticsApp } from '../synthetics_app'; export function renderApp( core: CoreStart, @@ -18,7 +26,56 @@ export function renderApp( appMountParameters: AppMountParameters, isDev: boolean ) { - ReactDOM.render(, appMountParameters.element); + const { + application: { capabilities }, + chrome: { setBadge, setHelpExtension }, + docLinks, + http: { basePath }, + i18n, + } = core; + + const { apm, infrastructure, logs } = getIntegratedAppAvailability( + capabilities, + INTEGRATED_SOLUTIONS + ); + + const canSave = (capabilities.uptime.save ?? false) as boolean; // TODO: Determine for synthetics + + const props: SyntheticsAppProps = { + isDev, + plugins, + canSave, + core, + i18n, + startPlugins, + basePath: basePath.get(), + darkMode: core.uiSettings.get(DEFAULT_DARK_MODE), + commonlyUsedRanges: core.uiSettings.get(DEFAULT_TIMEPICKER_QUICK_RANGES), + isApmAvailable: apm, + isInfraAvailable: infrastructure, + isLogsAvailable: logs, + renderGlobalHelpControls: () => + setHelpExtension({ + appName: i18nFormatter.translate('xpack.synthetics.header.appName', { + defaultMessage: 'Synthetics', + }), + links: [ + { + linkType: 'documentation', + href: `${docLinks.links.observability.monitorUptime}`, // TODO: Include synthetics link + }, + { + linkType: 'discuss', + href: 'https://discuss.elastic.co/c/uptime', // TODO: Include synthetics link + }, + ], + }), + setBadge, + appMountParameters, + setBreadcrumbs: core.chrome.setBreadcrumbs, + }; + + ReactDOM.render(, appMountParameters.element); return () => { ReactDOM.unmountComponentAtNode(appMountParameters.element); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/routes.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/routes.tsx new file mode 100644 index 0000000000000..d20c390c84b59 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/routes.tsx @@ -0,0 +1,184 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC, useEffect } from 'react'; +import { EuiPageTemplateProps, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { Route, Switch } from 'react-router-dom'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; +import { APP_WRAPPER_CLASS } from '@kbn/core/public'; +import { useInspectorContext } from '@kbn/observability-plugin/public'; +import { MonitorAddEditPage } from './components/monitor_add_edit/monitor_add_edit_page'; +import { OverviewPage } from './components/overview/overview_page'; +import { SyntheticsPageTemplateComponent } from './components/common/pages/synthetics_page_template'; +import { NotFoundPage } from './components/common/pages/not_found'; +import { ServiceAllowedWrapper } from './components/common/wrappers/service_allowed_wrapper'; +import { + MONITOR_ADD_ROUTE, + MONITOR_MANAGEMENT_ROUTE, + OVERVIEW_ROUTE, +} from '../../../common/constants'; +import { MonitorManagementPage } from './components/monitor_management/monitor_management_page'; +import { apiService } from './utils/api_service'; +import { SyntheticsPage, useSyntheticsTelemetry } from './hooks/use_telemetry'; + +type RouteProps = { + path: string; + component: React.FC; + dataTestSubj: string; + title: string; + telemetryId: SyntheticsPage; + pageHeader: { + pageTitle: string | JSX.Element; + children?: JSX.Element; + rightSideItems?: JSX.Element[]; + }; +} & EuiPageTemplateProps; + +const baseTitle = i18n.translate('xpack.synthetics.routes.baseTitle', { + defaultMessage: 'Synthetics - Kibana', +}); + +export const MONITOR_MANAGEMENT_LABEL = i18n.translate( + 'xpack.synthetics.monitorManagement.heading', + { + defaultMessage: 'Monitor Management', + } +); + +const getRoutes = (): RouteProps[] => { + return [ + { + title: i18n.translate('xpack.synthetics.overviewRoute.title', { + defaultMessage: 'Synthetics Overview | {baseTitle}', + values: { baseTitle }, + }), + path: OVERVIEW_ROUTE, + component: () => , + dataTestSubj: 'syntheticsOverviewPage', + telemetryId: SyntheticsPage.Overview, + pageHeader: { + pageTitle: ( + + + + + + ), + rightSideItems: [ + /* */ + ], + }, + }, + { + title: i18n.translate('xpack.synthetics.monitorManagementRoute.title', { + defaultMessage: 'Monitor Management | {baseTitle}', + values: { baseTitle }, + }), + path: MONITOR_MANAGEMENT_ROUTE, + component: () => ( + + + + ), + dataTestSubj: 'syntheticsMonitorManagementPage', + telemetryId: SyntheticsPage.MonitorManagement, + pageHeader: { + pageTitle: ( + + + + + + ), + rightSideItems: [ + /* */ + ], + }, + }, + { + title: i18n.translate('xpack.synthetics.addMonitorRoute.title', { + defaultMessage: 'Add Monitor | {baseTitle}', + values: { baseTitle }, + }), + path: MONITOR_ADD_ROUTE, + component: () => ( + + + + ), + dataTestSubj: 'syntheticsMonitorAddPage', + telemetryId: SyntheticsPage.MonitorAdd, + pageHeader: { + pageTitle: ( + + ), + }, + // bottomBar: , + bottomBarProps: { paddingSize: 'm' as const }, + }, + ]; +}; + +const RouteInit: React.FC> = ({ + path, + title, + telemetryId, +}) => { + useSyntheticsTelemetry(telemetryId); + useEffect(() => { + document.title = title; + }, [path, title]); + return null; +}; + +export const PageRouter: FC = () => { + const routes = getRoutes(); + const { addInspectorRequest } = useInspectorContext(); + + apiService.addInspectorRequest = addInspectorRequest; + + return ( + + {routes.map( + ({ + title, + path, + component: RouteComponent, + dataTestSubj, + telemetryId, + pageHeader, + ...pageTemplateProps + }) => ( + +
+ {/* TODO: See if the callout is needed for Synthetics App as well */} + + + + +
+
+ ) + )} + +
+ ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/index.ts new file mode 100644 index 0000000000000..153eab7415cd5 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/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. + */ + +export { store, storage } from './store'; + +export type { RooState as AppState } from './root_reducer'; + +export * from './ui'; +export * from './index_status'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/actions.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/actions.ts new file mode 100644 index 0000000000000..0b359a52502fa --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/actions.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IHttpFetchError } from '@kbn/core/public'; +import { createAction } from '@reduxjs/toolkit'; +import { StatesIndexStatus } from '../../../../../common/runtime_types'; + +export const getIndexStatus = createAction('[INDEX STATUS] GET'); +export const getIndexStatusSuccess = createAction('[INDEX STATUS] GET SUCCESS'); +export const getIndexStatusFail = createAction('[INDEX STATUS] GET FAIL'); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/api.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/api.ts new file mode 100644 index 0000000000000..f2d5e326ba2ab --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/api.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { API_URLS } from '../../../../../common/constants'; +import { StatesIndexStatus, StatesIndexStatusType } from '../../../../../common/runtime_types'; +import { apiService } from '../../utils/api_service'; + +export const fetchIndexStatus = async (): Promise => { + return await apiService.get(API_URLS.INDEX_STATUS, undefined, StatesIndexStatusType); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/effects.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/effects.ts new file mode 100644 index 0000000000000..cf0eaf83e5c2c --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/effects.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { takeLeading } from 'redux-saga/effects'; +import { getIndexStatus, getIndexStatusSuccess, getIndexStatusFail } from './actions'; +import { fetchEffectFactory } from '../utils/fetch_effect'; +import { fetchIndexStatus } from './api'; + +export function* fetchIndexStatusEffect() { + yield takeLeading( + getIndexStatus, + fetchEffectFactory(fetchIndexStatus, getIndexStatusSuccess, getIndexStatusFail) + ); +} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/index.ts new file mode 100644 index 0000000000000..e140145bb324a --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/index.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 { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; +import { createReducer } from '@reduxjs/toolkit'; +import { StatesIndexStatus } from '../../../../../common/runtime_types'; + +import { getIndexStatus, getIndexStatusSuccess, getIndexStatusFail } from './actions'; + +export interface IndexStatusState { + data: StatesIndexStatus | null; + loading: boolean; + error: IHttpFetchError | null; +} + +const initialState: IndexStatusState = { + data: null, + loading: false, + error: null, +}; + +export const indexStatusReducer = createReducer(initialState, (builder) => { + builder + .addCase(getIndexStatus, (state) => { + state.loading = true; + }) + .addCase(getIndexStatusSuccess, (state, action) => { + state.data = action.payload; + state.loading = false; + }) + .addCase(getIndexStatusFail, (state, action) => { + state.error = action.payload as IHttpFetchError; + state.loading = false; + }); +}); + +export * from './actions'; +export * from './effects'; +export * from './selectors'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/selectors.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/selectors.ts new file mode 100644 index 0000000000000..7d7da80b692a2 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/index_status/selectors.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 { createSelector } from 'reselect'; +import type { RooState } from '../root_reducer'; + +const getState = (appState: RooState) => appState.indexStatus; +export const selectIndexState = createSelector(getState, (state) => state); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/root_effect.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_effect.ts new file mode 100644 index 0000000000000..7d1aaa60aa4f3 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_effect.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 { all, fork } from 'redux-saga/effects'; +import { fetchIndexStatusEffect } from './index_status'; + +export const rootEffect = function* root(): Generator { + yield all([fork(fetchIndexStatusEffect)]); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts new file mode 100644 index 0000000000000..a57c0af9e6fdb --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { combineReducers } from '@reduxjs/toolkit'; + +import { uiReducer } from './ui'; +import { indexStatusReducer } from './index_status'; + +export const rootReducer = combineReducers({ + ui: uiReducer, + indexStatus: indexStatusReducer, +}); + +export type RooState = ReturnType; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/store.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/store.ts new file mode 100644 index 0000000000000..19320f0102a99 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/store.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { configureStore } from '@reduxjs/toolkit'; +import createSagaMiddleware from 'redux-saga'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { rootEffect } from './root_effect'; +import { rootReducer } from './root_reducer'; + +const sagaMW = createSagaMiddleware(); + +export const store = configureStore({ + reducer: rootReducer, + middleware: (getDefaultMiddleware) => getDefaultMiddleware({ thunk: false }).concat(sagaMW), + devTools: process.env.NODE_ENV !== 'production', + preloadedState: {}, + enhancers: [], +}); + +sagaMW.run(rootEffect); + +export const storage = new Storage(window.localStorage); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/actions.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/actions.ts new file mode 100644 index 0000000000000..d613b3f3d3509 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/actions.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 { createAction } from '@reduxjs/toolkit'; + +export interface PopoverState { + id: string; + open: boolean; +} + +export const setAlertFlyoutVisible = createAction('[UI] TOGGLE ALERT FLYOUT'); + +export const setAlertFlyoutType = createAction('[UI] SET ALERT FLYOUT TYPE'); + +export const setBasePath = createAction('[UI] SET BASE PATH'); + +export const setEsKueryString = createAction('[UI] SET ES KUERY STRING'); + +export const setSearchTextAction = createAction('[UI] SET SEARCH'); + +export const toggleIntegrationsPopover = createAction( + '[UI] TOGGLE INTEGRATION POPOVER STATE' +); + +export const setSelectedMonitorId = createAction('[UI] SET MONITOR ID'); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/index.ts new file mode 100644 index 0000000000000..618e6dd524767 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/index.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createReducer } from '@reduxjs/toolkit'; + +import { + PopoverState, + toggleIntegrationsPopover, + setBasePath, + setEsKueryString, + setAlertFlyoutType, + setAlertFlyoutVisible, + setSearchTextAction, + setSelectedMonitorId, +} from './actions'; + +export interface UiState { + alertFlyoutVisible: boolean; + alertFlyoutType?: string; + basePath: string; + esKuery: string; + searchText: string; + integrationsPopoverOpen: PopoverState | null; + monitorId: string; +} + +const initialState: UiState = { + alertFlyoutVisible: false, + basePath: '', + esKuery: '', + searchText: '', + integrationsPopoverOpen: null, + monitorId: '', +}; + +export const uiReducer = createReducer(initialState, (builder) => { + builder + .addCase(toggleIntegrationsPopover, (state, action) => { + state.integrationsPopoverOpen = action.payload; + }) + .addCase(setAlertFlyoutVisible, (state, action) => { + state.alertFlyoutVisible = action.payload ?? !state.alertFlyoutVisible; + }) + .addCase(setAlertFlyoutType, (state, action) => { + state.alertFlyoutType = action.payload; + }) + .addCase(setBasePath, (state, action) => { + state.basePath = action.payload; + }) + .addCase(setEsKueryString, (state, action) => { + state.esKuery = action.payload; + }) + .addCase(setSearchTextAction, (state, action) => { + state.searchText = action.payload; + }) + .addCase(setSelectedMonitorId, (state, action) => { + state.monitorId = action.payload; + }); +}); + +export * from './actions'; +export * from './selectors'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/selectors.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/selectors.ts new file mode 100644 index 0000000000000..52d9841cde961 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/ui/selectors.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createSelector } from 'reselect'; +import type { RooState } from '../root_reducer'; + +const uiStateSelector = (appState: RooState) => appState.ui; +export const selectBasePath = createSelector(uiStateSelector, ({ basePath }) => basePath); + +export const selectIsIntegrationsPopupOpen = createSelector( + uiStateSelector, + ({ integrationsPopoverOpen }) => integrationsPopoverOpen +); + +export const selectAlertFlyoutVisibility = createSelector( + uiStateSelector, + ({ alertFlyoutVisible }) => alertFlyoutVisible +); + +export const selectAlertFlyoutType = createSelector( + uiStateSelector, + ({ alertFlyoutType }) => alertFlyoutType +); + +export const selectEsKuery = createSelector(uiStateSelector, ({ esKuery }) => esKuery); + +export const selectSearchText = createSelector(uiStateSelector, ({ searchText }) => searchText); + +export const selectMonitorId = createSelector(uiStateSelector, ({ monitorId }) => monitorId); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts new file mode 100644 index 0000000000000..387ceeb56a514 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/utils/fetch_effect.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 { call, put } from 'redux-saga/effects'; +import { Action } from 'redux-actions'; +import { IHttpFetchError } from '@kbn/core/public'; + +/** + * Factory function for a fetch effect. It expects three action creators, + * one to call for a fetch, one to call for success, and one to handle failures. + * @param fetch creates a fetch action + * @param success creates a success action + * @param fail creates a failure action + * @template T the action type expected by the fetch action + * @template R the type that the API request should return on success + * @template S the type of the success action + * @template F the type of the failure action + */ +export function fetchEffectFactory( + fetch: (request: T) => Promise, + success: (response: R) => Action, + fail: (error: IHttpFetchError) => Action +) { + return function* (action: Action): Generator { + try { + const response = yield call(fetch, action.payload); + if (response instanceof Error) { + // eslint-disable-next-line no-console + console.error(response); + + yield put(fail(response as IHttpFetchError)); + } else { + yield put(success(response as R)); + } + } catch (error) { + // eslint-disable-next-line no-console + console.error(error); + yield put(fail(error as IHttpFetchError)); + } + }; +} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx new file mode 100644 index 0000000000000..614f77ddff5d7 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx @@ -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 React, { useEffect } from 'react'; +import { Provider as ReduxProvider } from 'react-redux'; +import { Router } from 'react-router-dom'; +import { EuiErrorBoundary } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { APP_WRAPPER_CLASS } from '@kbn/core/public'; +import { + KibanaContextProvider, + KibanaThemeProvider, + RedirectAppLinks, +} from '@kbn/kibana-react-plugin/public'; +import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { InspectorContextProvider } from '@kbn/observability-plugin/public'; +import { SyntheticsAlertsFlyoutWrapper } from './components/overview/alerts/alerts_containers/synthetics_alerts_flyout_wrapper'; +import { SyntheticsAppProps } from './contexts'; + +import { + SyntheticsRefreshContextProvider, + SyntheticsSettingsContextProvider, + SyntheticsThemeContextProvider, + SyntheticsStartupPluginsContextProvider, + SyntheticsDataViewContextProvider, +} from './contexts'; + +import { PageRouter } from './routes'; +import { store, storage, setBasePath } from './state'; +import { kibanaService } from './utils/kibana_service'; +import { ActionMenu } from './components/common/header/action_menu'; + +const Application = (props: SyntheticsAppProps) => { + const { + basePath, + canSave, + core, + darkMode, + i18n: i18nCore, + plugins, + renderGlobalHelpControls, + setBadge, + startPlugins, + appMountParameters, + } = props; + + useEffect(() => { + renderGlobalHelpControls(); + setBadge( + !canSave + ? { + text: i18n.translate('xpack.synthetics.badge.readOnly.text', { + defaultMessage: 'Read only', + }), + tooltip: i18n.translate('xpack.synthetics.badge.readOnly.tooltip', { + defaultMessage: 'Unable to save', + }), + iconType: 'glasses', + } + : undefined + ); + }, [canSave, renderGlobalHelpControls, setBadge]); + + kibanaService.core = core; + kibanaService.theme = props.appMountParameters.theme$; + + store.dispatch(setBasePath(basePath)); + + return ( + + + + + + + + + + + + +
+ + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+ ); +}; + +export const SyntheticsApp = (props: SyntheticsAppProps) => ; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts new file mode 100644 index 0000000000000..c00be7d8b0ca0 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.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. + */ + +interface IntegratedAppsAvailability { + [key: string]: boolean; +} + +export const getIntegratedAppAvailability = ( + capabilities: any, + integratedApps: string[] +): IntegratedAppsAvailability => { + return integratedApps.reduce((supportedSolutions: IntegratedAppsAvailability, solutionName) => { + supportedSolutions[solutionName] = + capabilities[solutionName] && capabilities[solutionName].show === true; + return supportedSolutions; + }, {}); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/adapters/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/adapters/index.ts new file mode 100644 index 0000000000000..2d0e4b7b2ba6f --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/adapters/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './capabilities_adapter'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/api_service/api_service.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/api_service/api_service.ts new file mode 100644 index 0000000000000..cbba8cf02cf22 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/api_service/api_service.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 { isRight } from 'fp-ts/lib/Either'; +import { formatErrors } from '@kbn/securitysolution-io-ts-utils'; +import { HttpFetchQuery, HttpSetup } from '@kbn/core/public'; +import { FETCH_STATUS, AddInspectorRequest } from '@kbn/observability-plugin/public'; + +class ApiService { + private static instance: ApiService; + private _http!: HttpSetup; + private _addInspectorRequest!: AddInspectorRequest; + + public get http() { + return this._http; + } + + public set http(httpSetup: HttpSetup) { + this._http = httpSetup; + } + + public get addInspectorRequest() { + return this._addInspectorRequest; + } + + public set addInspectorRequest(addInspectorRequest: AddInspectorRequest) { + this._addInspectorRequest = addInspectorRequest; + } + + private constructor() {} + + static getInstance(): ApiService { + if (!ApiService.instance) { + ApiService.instance = new ApiService(); + } + + return ApiService.instance; + } + + public async get( + apiUrl: string, + params?: HttpFetchQuery, + decodeType?: any, + asResponse = false + ) { + const response = await this._http!.fetch({ + path: apiUrl, + query: params, + asResponse, + }); + + this.addInspectorRequest?.({ data: response, status: FETCH_STATUS.SUCCESS, loading: false }); + + if (decodeType) { + const decoded = decodeType.decode(response); + if (isRight(decoded)) { + return decoded.right as T; + } else { + // eslint-disable-next-line no-console + console.error( + `API ${apiUrl} is not returning expected response, ${formatErrors( + decoded.left + )} for response`, + response + ); + } + } + + return response; + } + + public async post(apiUrl: string, data?: any, decodeType?: any) { + const response = await this._http!.post(apiUrl, { + method: 'POST', + body: JSON.stringify(data), + }); + + this.addInspectorRequest?.({ data: response, status: FETCH_STATUS.SUCCESS, loading: false }); + + if (decodeType) { + const decoded = decodeType.decode(response); + if (isRight(decoded)) { + return decoded.right as T; + } else { + // eslint-disable-next-line no-console + console.warn( + `API ${apiUrl} is not returning expected response, ${formatErrors(decoded.left)}` + ); + } + } + return response; + } + + public async put(apiUrl: string, data?: any, decodeType?: any) { + const response = await this._http!.put(apiUrl, { + method: 'PUT', + body: JSON.stringify(data), + }); + + if (decodeType) { + const decoded = decodeType.decode(response); + if (isRight(decoded)) { + return decoded.right as T; + } else { + // eslint-disable-next-line no-console + console.warn( + `API ${apiUrl} is not returning expected response, ${formatErrors(decoded.left)}` + ); + } + } + return response; + } + + public async delete(apiUrl: string) { + const response = await this._http!.delete(apiUrl); + if (response instanceof Error) { + throw response; + } + return response; + } +} + +export const apiService = ApiService.getInstance(); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/api_service/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/api_service/index.ts new file mode 100644 index 0000000000000..566bde2d4b777 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/api_service/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './api_service'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/kibana_service/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/kibana_service/index.ts new file mode 100644 index 0000000000000..c623088ee9ba4 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/kibana_service/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './kibana_service'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/kibana_service/kibana_service.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/kibana_service/kibana_service.ts new file mode 100644 index 0000000000000..06fa2b892b4a0 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/kibana_service/kibana_service.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 type { Observable } from 'rxjs'; +import type { CoreStart, CoreTheme } from '@kbn/core/public'; +import { apiService } from '../api_service/api_service'; + +class KibanaService { + private static instance: KibanaService; + private _core!: CoreStart; + private _theme!: Observable; + + public get core() { + return this._core; + } + + public set core(coreStart: CoreStart) { + this._core = coreStart; + apiService.http = this._core.http; + } + + public get theme() { + return this._theme; + } + + public set theme(coreTheme: Observable) { + this._theme = coreTheme; + } + + public get toasts() { + return this._core.notifications.toasts; + } + + private constructor() {} + + static getInstance(): KibanaService { + if (!KibanaService.instance) { + KibanaService.instance = new KibanaService(); + } + + return KibanaService.instance; + } +} + +export const kibanaService = KibanaService.getInstance(); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/syncthetics_store.mock.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/syncthetics_store.mock.ts new file mode 100644 index 0000000000000..adf2a15e70fa6 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/syncthetics_store.mock.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 { AppState } from '../../../state'; + +/** + * NOTE: This variable name MUST start with 'mock*' in order for + * Jest to accept its use within a jest.mock() + */ +export const mockState: AppState = { + ui: { + alertFlyoutVisible: false, + basePath: 'yyz', + esKuery: '', + integrationsPopoverOpen: null, + searchText: '', + monitorId: '', + }, + indexStatus: { + data: null, + error: null, + loading: false, + }, +}; + +// TODO: Complete mock state diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts new file mode 100644 index 0000000000000..981e6a5e2ae3b --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.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. + */ + +interface InputTimeRange { + from: string; + to: string; +} + +export const startPlugins = { + data: { + query: { + timefilter: { + timefilter: { + getTime: () => ({ to: 'now-15m', from: 'now-30m' }), + setTime: jest.fn(({ from, to }: InputTimeRange) => {}), + }, + }, + }, + }, +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/get_supported_url_params.test.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/get_supported_url_params.test.ts new file mode 100644 index 0000000000000..89419ca61ed43 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/get_supported_url_params.test.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import DateMath from '@kbn/datemath'; +import { getSupportedUrlParams } from '../url_params'; +import { CLIENT_DEFAULTS } from '../../../../../common/constants'; + +describe('getSupportedUrlParams', () => { + let dateMathSpy: any; + const MOCK_DATE_VALUE = 20; + + beforeEach(() => { + dateMathSpy = jest.spyOn(DateMath, 'parse'); + dateMathSpy.mockReturnValue(MOCK_DATE_VALUE); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('returns custom values', () => { + const customValues = { + autorefreshInterval: '23', + autorefreshIsPaused: 'false', + dateRangeStart: 'now-15m', + dateRangeEnd: 'now', + monitorListPageIndex: '23', + monitorListPageSize: '50', + monitorListSortDirection: 'desc', + monitorListSortField: 'monitor.status', + search: 'monitor.status: down', + selectedPingStatus: 'up', + }; + + const expected = { + absoluteDateRangeEnd: 20, + absoluteDateRangeStart: 20, + autorefreshInterval: 23, + autorefreshIsPaused: false, + dateRangeEnd: 'now', + dateRangeStart: 'now-15m', + search: 'monitor.status: down', + }; + + const result = getSupportedUrlParams(customValues); + expect(result).toMatchObject(expected); + }); + + it('returns default values', () => { + const { + AUTOREFRESH_INTERVAL, + AUTOREFRESH_IS_PAUSED, + DATE_RANGE_START, + DATE_RANGE_END, + FILTERS, + SEARCH, + STATUS_FILTER, + } = CLIENT_DEFAULTS; + const result = getSupportedUrlParams({}); + expect(result).toEqual({ + absoluteDateRangeStart: MOCK_DATE_VALUE, + absoluteDateRangeEnd: MOCK_DATE_VALUE, + autorefreshInterval: AUTOREFRESH_INTERVAL, + autorefreshIsPaused: AUTOREFRESH_IS_PAUSED, + dateRangeStart: DATE_RANGE_START, + dateRangeEnd: DATE_RANGE_END, + excludedFilters: '', + filters: FILTERS, + focusConnectorField: false, + pagination: undefined, + search: SEARCH, + statusFilter: STATUS_FILTER, + query: '', + }); + }); + + it('returns the first item for string arrays', () => { + const result = getSupportedUrlParams({ + dateRangeStart: ['now-18d', 'now-11d', 'now-5m'], + }); + + const expected = { + absoluteDateRangeEnd: 20, + absoluteDateRangeStart: 20, + autorefreshInterval: 60000, + }; + + expect(result).toMatchObject(expected); + }); + + it('provides defaults for undefined values', () => { + const result = getSupportedUrlParams({ + dateRangeStart: undefined, + }); + + const expected = { + absoluteDateRangeStart: 20, + }; + + expect(result).toMatchObject(expected); + }); + + it('provides defaults for empty string array values', () => { + const result = getSupportedUrlParams({ + dateRangeStart: [], + }); + + const expected = { + absoluteDateRangeStart: 20, + }; + + expect(result).toMatchObject(expected); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/get_supported_url_params.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/get_supported_url_params.ts new file mode 100644 index 0000000000000..c9badbcf7f728 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/get_supported_url_params.ts @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { parseIsPaused } from '../url_params/parse_is_paused'; +import { parseUrlInt } from '../url_params/parse_url_int'; +import { CLIENT_DEFAULTS } from '../../../../../common/constants'; +import { parseAbsoluteDate } from '../url_params/parse_absolute_date'; + +export interface SyntheticsUrlParams { + absoluteDateRangeStart: number; + absoluteDateRangeEnd: number; + autorefreshInterval: number; + autorefreshIsPaused: boolean; + dateRangeStart: string; + dateRangeEnd: string; + pagination?: string; + filters: string; + excludedFilters: string; + search: string; + statusFilter: string; + focusConnectorField?: boolean; + query?: string; +} + +const { + ABSOLUTE_DATE_RANGE_START, + ABSOLUTE_DATE_RANGE_END, + AUTOREFRESH_INTERVAL, + AUTOREFRESH_IS_PAUSED, + DATE_RANGE_START, + DATE_RANGE_END, + SEARCH, + FILTERS, + STATUS_FILTER, +} = CLIENT_DEFAULTS; + +/** + * Gets the current URL values for the application. If no item is present + * for the URL, a default value is supplied. + * + * @param params A set of key-value pairs where the value is either + * undefined or a string/string array. If a string array is passed, + * only the first item is chosen. Support for lists in the URL will + * require further development. + */ +export const getSupportedUrlParams = (params: { + [key: string]: string | string[] | undefined | null; +}): SyntheticsUrlParams => { + const filteredParams: { [key: string]: string | undefined } = {}; + Object.keys(params).forEach((key) => { + let value: string | undefined; + if (params[key] === undefined) { + value = undefined; + } else if (Array.isArray(params[key])) { + // @ts-ignore this must be an array, and it's ok if the + // 0th element is undefined + value = params[key][0]; + } else { + // @ts-ignore this will not be an array because the preceding + // block tests for that + value = params[key]; + } + filteredParams[key] = value; + }); + + const { + autorefreshInterval, + autorefreshIsPaused, + dateRangeStart, + dateRangeEnd, + filters, + excludedFilters, + search, + statusFilter, + pagination, + focusConnectorField, + query, + } = filteredParams; + + return { + pagination, + absoluteDateRangeStart: parseAbsoluteDate( + dateRangeStart || DATE_RANGE_START, + ABSOLUTE_DATE_RANGE_START + ), + absoluteDateRangeEnd: parseAbsoluteDate( + dateRangeEnd || DATE_RANGE_END, + ABSOLUTE_DATE_RANGE_END, + { roundUp: true } + ), + autorefreshInterval: parseUrlInt(autorefreshInterval, AUTOREFRESH_INTERVAL), + autorefreshIsPaused: parseIsPaused(autorefreshIsPaused, AUTOREFRESH_IS_PAUSED), + dateRangeStart: dateRangeStart || DATE_RANGE_START, + dateRangeEnd: dateRangeEnd || DATE_RANGE_END, + filters: filters || FILTERS, + excludedFilters: excludedFilters || '', + search: search || SEARCH, + statusFilter: statusFilter || STATUS_FILTER, + focusConnectorField: !!focusConnectorField, + query: query || '', + }; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx new file mode 100644 index 0000000000000..23831b1a4bc25 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx @@ -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 React from 'react'; +import type { Store } from 'redux'; +import { createStore as createReduxStore, applyMiddleware } from 'redux'; + +import { Provider as ReduxProvider } from 'react-redux'; +import createSagaMiddleware from 'redux-saga'; + +import { AppState } from '../../state'; +import { rootReducer } from '../../state/root_reducer'; +import { rootEffect } from '../../state/root_effect'; + +const createRealStore = (): Store => { + const sagaMW = createSagaMiddleware(); + const store = createReduxStore(rootReducer, applyMiddleware(sagaMW)); + sagaMW.run(rootEffect); + return store; +}; + +export const MountWithReduxProvider: React.FC<{ state?: AppState; useRealStore?: boolean }> = ({ + children, + state, + useRealStore, +}) => { + const store = useRealStore + ? createRealStore() + : { + dispatch: jest.fn(), + getState: jest.fn().mockReturnValue(state || { selectedFilters: null }), + subscribe: jest.fn(), + replaceReducer: jest.fn(), + [Symbol.observable]: jest.fn(), + }; + + return {children}; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/index.ts new file mode 100644 index 0000000000000..cebc9f5030293 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './rtl_helpers'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx new file mode 100644 index 0000000000000..51c186c352a5b --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx @@ -0,0 +1,363 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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, { ReactElement, ReactNode } from 'react'; +import { of } from 'rxjs'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { + render as reactTestLibRender, + MatcherFunction, + RenderOptions, +} from '@testing-library/react'; +import { Router, Route } from 'react-router-dom'; +import { merge } from 'lodash'; +import { createMemoryHistory, History } from 'history'; +import { CoreStart } from '@kbn/core/public'; +import { I18nProvider } from '@kbn/i18n-react'; +import { EuiPageTemplate } from '@elastic/eui'; +import { coreMock } from '@kbn/core/public/mocks'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { configure } from '@testing-library/dom'; +import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; +import { KibanaContextProvider, KibanaServices } from '@kbn/kibana-react-plugin/public'; +import { triggersActionsUiMock } from '@kbn/triggers-actions-ui-plugin/public/mocks'; +import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; +import { mockState } from './__mocks__/syncthetics_store.mock'; +import { MountWithReduxProvider } from './helper_with_redux'; +import { AppState } from '../../state'; +import { stringifyUrlParams } from '../url_params'; +import { ClientPluginsStart } from '../../../../plugin'; +import { + SyntheticsRefreshContextProvider, + SyntheticsStartupPluginsContextProvider, +} from '../../contexts'; +import { kibanaService } from '../kibana_service'; + +type DeepPartial = { + [P in keyof T]?: DeepPartial; +}; + +interface KibanaProps { + services?: KibanaServices; +} + +export interface KibanaProviderOptions { + core?: DeepPartial & Partial; + kibanaProps?: KibanaProps; +} + +interface MockKibanaProviderProps extends KibanaProviderOptions { + children: ReactElement | ReactNode; +} + +interface MockRouterProps extends MockKibanaProviderProps { + history?: History; + path?: string; +} + +type Url = + | string + | { + path: string; + queryParams: Record; + }; + +interface RenderRouterOptions extends KibanaProviderOptions { + history?: History; + renderOptions?: Omit; + state?: Partial | DeepPartial; + url?: Url; + path?: string; +} + +function getSetting(key: string): T { + return 'MMM D, YYYY @ HH:mm:ss.SSS' as unknown as T; +} + +function setSetting$(key: string): T { + return of('MMM D, YYYY @ HH:mm:ss.SSS') as unknown as T; +} + +const createMockStore = () => { + let store: Record = {}; + return { + get: jest.fn().mockImplementation((key) => store[key]), + set: jest.fn().mockImplementation((key, value) => (store[key] = value)), + remove: jest.fn().mockImplementation((key: string) => delete store[key]), + clear: jest.fn().mockImplementation(() => (store = {})), + }; +}; + +const mockAppUrls: Record = { + uptime: '/app/uptime', + observability: '/app/observability', + '/home#/tutorial/uptimeMonitors': '/home#/tutorial/uptimeMonitors', +}; + +/* default mock core */ +export const defaultCore = coreMock.createStart(); +export const mockCore: () => Partial = () => { + const core: Partial = { + ...defaultCore, + application: { + ...defaultCore.application, + getUrlForApp: (app: string) => mockAppUrls[app], + navigateToUrl: jest.fn(), + capabilities: { + ...defaultCore.application.capabilities, + uptime: { + 'alerting:save': true, + configureSettings: true, + save: true, + show: true, + }, + actions: { + save: true, + }, + }, + }, + uiSettings: { + ...defaultCore.uiSettings, + get: getSetting, + get$: setSetting$, + }, + usageCollection: { + reportUiCounter: () => {}, + }, + triggersActionsUi: triggersActionsUiMock.createStart(), + storage: createMockStore(), + data: dataPluginMock.createStartContract(), + observability: { + useRulesLink: () => ({ href: 'newRuleLink' }), + navigation: { + // @ts-ignore + PageTemplate: EuiPageTemplate, + }, + ExploratoryViewEmbeddable: () =>
Embeddable exploratory view
, + }, + }; + + return core; +}; + +/* Mock Provider Components */ +export function MockKibanaProvider({ + children, + core, + kibanaProps, +}: MockKibanaProviderProps) { + const coreOptions = merge({}, mockCore(), core); + + kibanaService.core = coreOptions as any; + + return ( + + + + + {children} + + + + + ); +} + +export function MockRouter({ + children, + core, + path, + history = createMemoryHistory(), + kibanaProps, +}: MockRouterProps) { + return ( + + + {children} + + + ); +} +configure({ testIdAttribute: 'data-test-subj' }); + +export const MockRedux = ({ + state, + history = createMemoryHistory(), + children, + path, +}: { + state: Partial; + history?: History; + children: React.ReactNode; + path?: string; + useRealStore?: boolean; +}) => { + const testState: AppState = { + ...mockState, + ...state, + }; + + return ( + + + {children} + + + ); +}; + +export function WrappedHelper({ + children, + core, + kibanaProps, + state, + url, + useRealStore, + path, + history = createMemoryHistory(), +}: RenderRouterOptions & { children: ReactElement; useRealStore?: boolean }) { + const testState: AppState = merge({}, mockState, state); + + return ( + + + {children} + + + ); +} + +/* Custom react testing library render */ +export function render( + ui: ReactElement, + { + history = createMemoryHistory(), + core, + kibanaProps, + renderOptions, + state, + url, + path, + useRealStore, + }: RenderRouterOptions & { useRealStore?: boolean } = {} +) { + if (url) { + history = getHistoryFromUrl(url); + } + + return { + ...reactTestLibRender( + + {ui} + , + renderOptions + ), + history, + }; +} + +const getHistoryFromUrl = (url: Url) => { + if (typeof url === 'string') { + return createMemoryHistory({ + initialEntries: [url], + }); + } + + return createMemoryHistory({ + initialEntries: [url.path + stringifyUrlParams(url.queryParams)], + }); +}; + +const forNearestTag = + (tag: string) => + (getByText: (f: MatcherFunction) => HTMLElement | null) => + (text: string): HTMLElement | null => + getByText((_content: string, node: Element | null) => { + if (!node) return false; + const noOtherButtonHasText = Array.from(node.children).every( + (child) => child && (child.textContent !== text || child.tagName.toLowerCase() !== tag) + ); + return ( + noOtherButtonHasText && node.textContent === text && node.tagName.toLowerCase() === tag + ); + }); + +// This function allows us to query for the nearest button with test +// no matter whether it has nested tags or not (as EuiButton elements do). +export const forNearestButton = forNearestTag('button'); + +export const forNearestAnchor = forNearestTag('a'); + +export const makeSyntheticsPermissionsCore = ( + permissions: Partial<{ + 'alerting:save': boolean; + configureSettings: boolean; + save: boolean; + show: boolean; + }> +) => { + return { + application: { + capabilities: { + uptime: { + 'alerting:save': true, + configureSettings: true, + save: true, + show: true, + ...permissions, + }, + }, + }, + }; +}; + +// This function filters out the queried elements which appear only +// either on mobile or desktop. +// +// It does so by filtering those with the class passed as the `classWrapper`. +// For mobile, we filter classes which tell elements to be hidden on desktop. +// For desktop, we do the opposite. +// +// We have this function because EUI will manipulate the visibility of some +// elements through pure CSS, which we can't assert on tests. Therefore, +// we look for the corresponding class wrapper. +const finderWithClassWrapper = + (classWrapper: string) => + ( + getterFn: (f: MatcherFunction) => HTMLElement | null, + customAttribute?: keyof Element | keyof HTMLElement + ) => + (text: string): HTMLElement | null => + getterFn((_content: string, node: Element | null) => { + if (!node) return false; + // There are actually properties that are not in Element but which + // appear on the `node`, so we must cast the customAttribute as a keyof Element + const content = node[(customAttribute as keyof Element) ?? 'innerHTML']; + if (content === text && wrappedInClass(node, classWrapper)) return true; + return false; + }); + +const wrappedInClass = (element: HTMLElement | Element, classWrapper: string): boolean => { + if (element.className.includes(classWrapper)) return true; + if (element.parentElement) return wrappedInClass(element.parentElement, classWrapper); + return false; +}; + +export const forMobileOnly = finderWithClassWrapper('hideForDesktop'); +export const forDesktopOnly = finderWithClassWrapper('hideForMobile'); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts new file mode 100644 index 0000000000000..5e67d8f0e6026 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import DateMath from '@kbn/datemath'; +import { getSupportedUrlParams } from './get_supported_url_params'; +import { CLIENT_DEFAULTS } from '../../../../../common/constants'; + +describe('getSupportedUrlParams', () => { + let dateMathSpy: any; + const MOCK_DATE_VALUE = 20; + + beforeEach(() => { + dateMathSpy = jest.spyOn(DateMath, 'parse'); + dateMathSpy.mockReturnValue(MOCK_DATE_VALUE); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('returns custom values', () => { + const customValues = { + autorefreshInterval: '23', + autorefreshIsPaused: 'false', + dateRangeStart: 'now-15m', + dateRangeEnd: 'now', + monitorListPageIndex: '23', + monitorListPageSize: '50', + monitorListSortDirection: 'desc', + monitorListSortField: 'monitor.status', + search: 'monitor.status: down', + selectedPingStatus: 'up', + }; + + const expected = { + absoluteDateRangeEnd: 20, + absoluteDateRangeStart: 20, + autorefreshInterval: 23, + autorefreshIsPaused: false, + dateRangeEnd: 'now', + dateRangeStart: 'now-15m', + search: 'monitor.status: down', + }; + + const result = getSupportedUrlParams(customValues); + expect(result).toMatchObject(expected); + }); + + it('returns default values', () => { + const { + AUTOREFRESH_INTERVAL, + AUTOREFRESH_IS_PAUSED, + DATE_RANGE_START, + DATE_RANGE_END, + FILTERS, + SEARCH, + STATUS_FILTER, + } = CLIENT_DEFAULTS; + const result = getSupportedUrlParams({}); + expect(result).toEqual({ + absoluteDateRangeStart: MOCK_DATE_VALUE, + absoluteDateRangeEnd: MOCK_DATE_VALUE, + autorefreshInterval: AUTOREFRESH_INTERVAL, + autorefreshIsPaused: AUTOREFRESH_IS_PAUSED, + dateRangeStart: DATE_RANGE_START, + dateRangeEnd: DATE_RANGE_END, + excludedFilters: '', + filters: FILTERS, + focusConnectorField: false, + pagination: undefined, + search: SEARCH, + statusFilter: STATUS_FILTER, + query: '', + }); + }); + + it('returns the first item for string arrays', () => { + const result = getSupportedUrlParams({ + dateRangeStart: ['now-18d', 'now-11d', 'now-5m'], + }); + + const expected = { + absoluteDateRangeEnd: 20, + absoluteDateRangeStart: 20, + autorefreshInterval: 60000, + }; + + expect(result).toMatchObject(expected); + }); + + it('provides defaults for undefined values', () => { + const result = getSupportedUrlParams({ + dateRangeStart: undefined, + }); + + const expected = { + absoluteDateRangeStart: 20, + }; + + expect(result).toMatchObject(expected); + }); + + it('provides defaults for empty string array values', () => { + const result = getSupportedUrlParams({ + dateRangeStart: [], + }); + + const expected = { + absoluteDateRangeStart: 20, + }; + + expect(result).toMatchObject(expected); + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts new file mode 100644 index 0000000000000..1036c07973b27 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { parseIsPaused } from './parse_is_paused'; +import { parseUrlInt } from './parse_url_int'; +import { CLIENT_DEFAULTS } from '../../../../../common/constants'; +import { parseAbsoluteDate } from './parse_absolute_date'; + +// TODO: Change for Synthetics App if needed (Copied from legacy_uptime) +export interface SyntheticsUrlParams { + absoluteDateRangeStart: number; + absoluteDateRangeEnd: number; + autorefreshInterval: number; + autorefreshIsPaused: boolean; + dateRangeStart: string; + dateRangeEnd: string; + pagination?: string; + filters: string; + excludedFilters: string; + search: string; + statusFilter: string; + focusConnectorField?: boolean; + query?: string; +} + +const { + ABSOLUTE_DATE_RANGE_START, + ABSOLUTE_DATE_RANGE_END, + AUTOREFRESH_INTERVAL, + AUTOREFRESH_IS_PAUSED, + DATE_RANGE_START, + DATE_RANGE_END, + SEARCH, + FILTERS, + STATUS_FILTER, +} = CLIENT_DEFAULTS; + +/** + * Gets the current URL values for the application. If no item is present + * for the URL, a default value is supplied. + * + * @param params A set of key-value pairs where the value is either + * undefined or a string/string array. If a string array is passed, + * only the first item is chosen. Support for lists in the URL will + * require further development. + */ +export const getSupportedUrlParams = (params: { + [key: string]: string | string[] | undefined | null; +}): SyntheticsUrlParams => { + const filteredParams: { [key: string]: string | undefined } = {}; + Object.keys(params).forEach((key) => { + let value: string | undefined; + if (params[key] === undefined) { + value = undefined; + } else if (Array.isArray(params[key])) { + // @ts-ignore this must be an array, and it's ok if the + // 0th element is undefined + value = params[key][0]; + } else { + // @ts-ignore this will not be an array because the preceding + // block tests for that + value = params[key]; + } + filteredParams[key] = value; + }); + + const { + autorefreshInterval, + autorefreshIsPaused, + dateRangeStart, + dateRangeEnd, + filters, + excludedFilters, + search, + statusFilter, + pagination, + focusConnectorField, + query, + } = filteredParams; + + return { + pagination, + absoluteDateRangeStart: parseAbsoluteDate( + dateRangeStart || DATE_RANGE_START, + ABSOLUTE_DATE_RANGE_START + ), + absoluteDateRangeEnd: parseAbsoluteDate( + dateRangeEnd || DATE_RANGE_END, + ABSOLUTE_DATE_RANGE_END, + { roundUp: true } + ), + autorefreshInterval: parseUrlInt(autorefreshInterval, AUTOREFRESH_INTERVAL), + autorefreshIsPaused: parseIsPaused(autorefreshIsPaused, AUTOREFRESH_IS_PAUSED), + dateRangeStart: dateRangeStart || DATE_RANGE_START, + dateRangeEnd: dateRangeEnd || DATE_RANGE_END, + filters: filters || FILTERS, + excludedFilters: excludedFilters || '', + search: search || SEARCH, + statusFilter: statusFilter || STATUS_FILTER, + focusConnectorField: !!focusConnectorField, + query: query || '', + }; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/index.ts new file mode 100644 index 0000000000000..a3f27112b0e81 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/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 type { SyntheticsUrlParams } from './get_supported_url_params'; +export { getSupportedUrlParams } from './get_supported_url_params'; +export * from './stringify_url_params'; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_is_paused.test.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_is_paused.test.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_is_paused.test.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_is_paused.test.ts diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_is_paused.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_is_paused.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_is_paused.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_is_paused.ts diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_url_int.test.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_url_int.test.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_url_int.test.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_url_int.test.ts diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_url_int.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_url_int.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/parse_url_int.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_url_int.ts diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/stringify_url_params.test.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts similarity index 100% rename from x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/stringify_url_params.test.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/stringify_url_params.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts similarity index 86% rename from x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/stringify_url_params.ts rename to x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts index 2bb5f9a3c13e3..59c71af795cce 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/stringify_url_params.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts @@ -6,8 +6,8 @@ */ import { stringify } from 'query-string'; -import { UptimeUrlParams } from './url_params'; -import { CLIENT_DEFAULTS } from '../../../../common/constants'; +import { SyntheticsUrlParams } from './get_supported_url_params'; +import { CLIENT_DEFAULTS } from '../../../../../common/constants'; const { AUTOREFRESH_INTERVAL, @@ -17,7 +17,7 @@ const { FOCUS_CONNECTOR_FIELD, } = CLIENT_DEFAULTS; -export const stringifyUrlParams = (params: Partial, ignoreEmpty = false) => { +export const stringifyUrlParams = (params: Partial, ignoreEmpty = false) => { if (ignoreEmpty) { // We don't want to encode this values because they are often set to Date.now(), the relative // values in dateRangeStart are better for a URL. diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/app/render_app.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/app/render_app.tsx index efb35813201ae..446a329901815 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/app/render_app.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/app/render_app.tsx @@ -55,7 +55,7 @@ export function renderApp( isLogsAvailable: logs, renderGlobalHelpControls: () => setHelpExtension({ - appName: i18nFormatter.translate('xpack.synthetics.header.appName', { + appName: i18nFormatter.translate('xpack.synthetics.legacyHeader.appName', { defaultMessage: 'Uptime', }), links: [ diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_page_template.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_page_template.test.tsx index 38105052f352e..57ae3a6514505 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_page_template.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_page_template.test.tsx @@ -11,9 +11,9 @@ import 'jest-styled-components'; import { render } from '../lib/helper/rtl_helpers'; import { UptimePageTemplateComponent } from './uptime_page_template'; import { OVERVIEW_ROUTE } from '../../../common/constants'; -import { useBreakpoints } from '../hooks/use_breakpoints'; +import { useBreakpoints } from '../../apps/synthetics/hooks/use_breakpoints'; -jest.mock('../hooks/use_breakpoints', () => { +jest.mock('../../apps/synthetics/hooks/use_breakpoints', () => { const down = jest.fn().mockReturnValue(false); return { useBreakpoints: () => ({ down }), diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_page_template.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_page_template.tsx index 08ebd5f06a69b..ade54e1e6f61a 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_page_template.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/app/uptime_page_template.tsx @@ -16,7 +16,7 @@ import { useNoDataConfig } from './use_no_data_config'; import { EmptyStateLoading } from '../components/overview/empty_state/empty_state_loading'; import { EmptyStateError } from '../components/overview/empty_state/empty_state_error'; import { useHasData } from '../components/overview/empty_state/use_has_data'; -import { useBreakpoints } from '../hooks/use_breakpoints'; +import { useBreakpoints } from '../../apps/synthetics/hooks/use_breakpoints'; interface Props { path: string; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/common/header/action_menu_content.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/common/header/action_menu_content.tsx index 1fb150bd9e70e..e1330d9924261 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/common/header/action_menu_content.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/common/header/action_menu_content.tsx @@ -17,7 +17,7 @@ import { useUptimeSettingsContext } from '../../../contexts/uptime_settings_cont import { useGetUrlParams } from '../../../hooks'; import { ToggleAlertFlyoutButton } from '../../overview/alerts/alerts_containers'; import { MONITOR_ROUTE, SETTINGS_ROUTE } from '../../../../../common/constants'; -import { stringifyUrlParams } from '../../../lib/helper/stringify_url_params'; +import { stringifyUrlParams } from '../../../../apps/synthetics/utils/url_params/stringify_url_params'; import { InspectorHeaderLink } from './inspector_header_link'; import { monitorStatusSelector } from '../../../state/selectors'; import { ManageMonitorsBtn } from './manage_monitors_btn'; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/common/header/page_tabs.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/common/header/page_tabs.tsx index 9711a9d7acb9e..08725ac203bab 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/common/header/page_tabs.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/common/header/page_tabs.tsx @@ -12,7 +12,7 @@ import { i18n } from '@kbn/i18n'; import { useHistory, useRouteMatch } from 'react-router-dom'; import { CERTIFICATES_ROUTE, OVERVIEW_ROUTE } from '../../../../../common/constants'; import { useGetUrlParams } from '../../../hooks'; -import { stringifyUrlParams } from '../../../lib/helper/stringify_url_params'; +import { stringifyUrlParams } from '../../../../apps/synthetics/utils/url_params/stringify_url_params'; const tabs = [ { diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx index 1003b51319136..0e4d03e3ce438 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx @@ -10,7 +10,7 @@ import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from import { euiStyled } from '@kbn/kibana-react-plugin/common'; import { ScreenshotRefImageData } from '../../../../../../../common/runtime_types'; -import { useBreakpoints } from '../../../../../hooks'; +import { useBreakpoints } from '../../../../../../apps/synthetics/hooks/use_breakpoints'; import { nextAriaLabel, prevAriaLabel } from './translations'; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/action_bar/action_bar.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/action_bar/action_bar.tsx index 3bd6be5eb9750..80e614eb4d77f 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/action_bar/action_bar.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/action_bar/action_bar.tsx @@ -65,7 +65,7 @@ export const ActionBar = ({ } return setMonitor({ monitor, - id: monitorId ? Buffer.from(monitorId, 'base64').toString('utf8') : undefined, + id: monitorId, }); }, [monitor, monitorId, isValid, isSaving]); diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/hooks/use_monitor_list.ts b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/hooks/use_monitor_list.ts new file mode 100644 index 0000000000000..e0899571f38b8 --- /dev/null +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/hooks/use_monitor_list.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 { useEffect, useReducer, Reducer } from 'react'; +import { useDispatch } from 'react-redux'; +import { useParams } from 'react-router-dom'; +import { getMonitors } from '../../../state/actions'; +import { ConfigKey } from '../../../../../common/constants/monitor_management'; +import { MonitorManagementListPageState } from '../monitor_list/monitor_list'; + +export function useMonitorList() { + const dispatch = useDispatch(); + + const [pageState, dispatchPageAction] = useReducer( + monitorManagementPageReducer, + { + pageIndex: 1, // saved objects page index is base 1 + pageSize: 10, + sortOrder: 'asc', + sortField: `${ConfigKey.NAME}.keyword`, + } + ); + + const { pageIndex, pageSize, sortField, sortOrder } = pageState as MonitorManagementListPageState; + + const { type: viewType } = useParams<{ type: 'all' | 'invalid' }>(); + + useEffect(() => { + if (viewType === 'all') { + dispatch(getMonitors({ page: pageIndex, perPage: pageSize, sortOrder, sortField })); + } + }, [dispatch, pageIndex, pageSize, sortField, sortOrder, viewType, pageState]); + + return { + pageState, + dispatchPageAction, + viewType, + }; +} + +export type MonitorManagementPageAction = + | { + type: 'update'; + payload: MonitorManagementListPageState; + } + | { type: 'refresh' }; + +const monitorManagementPageReducer: Reducer< + MonitorManagementListPageState, + MonitorManagementPageAction +> = (state: MonitorManagementListPageState, action: MonitorManagementPageAction) => { + switch (action.type) { + case 'update': + return { + ...state, + ...action.payload, + }; + case 'refresh': + return { ...state }; + default: + throw new Error(`Action "${(action as MonitorManagementPageAction)?.type}" not recognizable`); + } +}; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/use_monitor_name.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/use_monitor_name.test.tsx index ccfc1312cbf25..04879cd0da65b 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/use_monitor_name.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/use_monitor_name.test.tsx @@ -9,7 +9,16 @@ import { defaultCore, WrappedHelper } from '../../../lib/helper/rtl_helpers'; import { renderHook } from '@testing-library/react-hooks'; import { useMonitorName } from './use_monitor_name'; -import * as hooks from '../../../hooks/use_monitor'; +import * as reactRouter from 'react-router-dom'; + +const mockRouter = { + ...reactRouter, +}; + +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useParams: jest.fn().mockReturnValue({}), +})); describe('useMonitorName', () => { it('returns expected results', () => { @@ -56,7 +65,7 @@ describe('useMonitorName', () => { }, }); - jest.spyOn(hooks, 'useMonitorId').mockReturnValue('test-id'); + jest.spyOn(mockRouter, 'useParams').mockReturnValue({ monitorId: 'test-id' }); const { result, waitForNextUpdate } = renderHook(() => useMonitorName({ search: 'Test' }), { wrapper: WrappedHelper, diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/use_monitor_name.ts b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/use_monitor_name.ts index c72c266bb6939..e8d3848856a2b 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/use_monitor_name.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/use_monitor_name.ts @@ -8,8 +8,8 @@ import { useEffect, useState } from 'react'; import { useFetcher } from '@kbn/observability-plugin/public'; import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { useParams } from 'react-router-dom'; import { syntheticsMonitorType } from '../../../../../common/types/saved_objects'; -import { useMonitorId } from '../../../hooks'; interface AggsResponse { monitorNames: { @@ -22,7 +22,7 @@ interface AggsResponse { export const useMonitorName = ({ search = '' }: { search?: string }) => { const [values, setValues] = useState([]); - const monitorId = useMonitorId(); + const { monitorId } = useParams<{ monitorId: string }>(); const { savedObjects } = useKibana().services; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/actions.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/actions.test.tsx index f60d54e9cb4f6..af2e54503d0b1 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/actions.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/actions.test.tsx @@ -19,7 +19,7 @@ describe('', () => { expect(screen.getByLabelText('Edit monitor')).toHaveAttribute( 'href', - '/app/uptime/edit-monitor/dGVzdC1pZA==' + '/app/uptime/edit-monitor/test-id' ); }); }); diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/actions.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/actions.tsx index a6fa489be89ca..ddd0d0cc0a63e 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/actions.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/actions.tsx @@ -45,7 +45,7 @@ export const Actions = ({ id, name, onUpdate, isDisabled, errorSummaries, monito diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/monitor_list.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/monitor_list.tsx index 37a23bdcff83b..0c1d56be587a4 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/monitor_list.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/monitor_list.tsx @@ -27,7 +27,7 @@ import { TCPSimpleFields, } from '../../../../../common/runtime_types'; import { UptimeSettingsContext } from '../../../contexts'; -import { useBreakpoints } from '../../../hooks'; +import { useBreakpoints } from '../../../../apps/synthetics/hooks/use_breakpoints'; import { MonitorManagementList as MonitorManagementListState } from '../../../state/reducers/monitor_management'; import * as labels from '../../overview/monitor_list/translations'; import { Actions } from './actions'; @@ -120,11 +120,7 @@ export const MonitorManagementList = ({ }), sortable: true, render: (name: string, { id }: EncryptedSyntheticsMonitorWithId) => ( - - {name} - + {name} ), }, { diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/monitor_list_container.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/monitor_list_container.tsx index 7191cd71b0a36..727f4f6dee72b 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/monitor_list_container.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_list/monitor_list_container.tsx @@ -5,32 +5,29 @@ * 2.0. */ -import React, { useEffect, useReducer, useCallback, Reducer } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; +import React, { useCallback, Dispatch } from 'react'; +import { useSelector } from 'react-redux'; import { useParams } from 'react-router-dom'; import { useTrackPageview } from '@kbn/observability-plugin/public'; -import { ConfigKey } from '../../../../../common/runtime_types'; -import { getMonitors } from '../../../state/actions'; import { monitorManagementListSelector } from '../../../state/selectors'; -import { MonitorManagementListPageState } from './monitor_list'; import { MonitorAsyncError } from './monitor_async_error'; import { useInlineErrors } from '../hooks/use_inline_errors'; import { MonitorListTabs } from './list_tabs'; import { AllMonitors } from './all_monitors'; import { InvalidMonitors } from './invalid_monitors'; import { useInvalidMonitors } from '../hooks/use_invalid_monitors'; +import { MonitorManagementListPageState } from './monitor_list'; +import { MonitorManagementPageAction } from '../hooks/use_monitor_list'; -export const MonitorListContainer: React.FC = () => { - const [pageState, dispatchPageAction] = useReducer( - monitorManagementPageReducer, - { - pageIndex: 1, // saved objects page index is base 1 - pageSize: 10, - sortOrder: 'asc', - sortField: `${ConfigKey.NAME}.keyword`, - } - ); - +export const MonitorListContainer = ({ + isEnabled, + pageState, + dispatchPageAction, +}: { + isEnabled?: boolean; + pageState: MonitorManagementListPageState; + dispatchPageAction: Dispatch; +}) => { const onPageStateChange = useCallback( (state) => { dispatchPageAction({ type: 'update', payload: state }); @@ -45,11 +42,8 @@ export const MonitorListContainer: React.FC = () => { useTrackPageview({ app: 'uptime', path: 'manage-monitors' }); useTrackPageview({ app: 'uptime', path: 'manage-monitors', delay: 15000 }); - const dispatch = useDispatch(); const monitorList = useSelector(monitorManagementListSelector); - const { pageIndex, pageSize, sortField, sortOrder } = pageState as MonitorManagementListPageState; - const { type: viewType } = useParams<{ type: 'all' | 'invalid' }>(); const { errorSummaries, loading, count } = useInlineErrors({ onlyInvalidMonitors: viewType === 'invalid', @@ -57,14 +51,12 @@ export const MonitorListContainer: React.FC = () => { sortOrder: pageState.sortOrder, }); - useEffect(() => { - if (viewType === 'all') { - dispatch(getMonitors({ page: pageIndex, perPage: pageSize, sortField, sortOrder })); - } - }, [dispatch, pageState, pageIndex, pageSize, sortField, sortOrder, viewType]); - const { data: monitorSavedObjects, loading: objectsLoading } = useInvalidMonitors(errorSummaries); + if (!isEnabled && monitorList.list.total === 0) { + return null; + } + return ( <> @@ -95,27 +87,3 @@ export const MonitorListContainer: React.FC = () => { ); }; - -type MonitorManagementPageAction = - | { - type: 'update'; - payload: MonitorManagementListPageState; - } - | { type: 'refresh' }; - -const monitorManagementPageReducer: Reducer< - MonitorManagementListPageState, - MonitorManagementPageAction -> = (state: MonitorManagementListPageState, action: MonitorManagementPageAction) => { - switch (action.type) { - case 'update': - return { - ...state, - ...action.payload, - }; - case 'refresh': - return { ...state }; - default: - throw new Error(`Action "${(action as MonitorManagementPageAction)?.type}" not recognizable`); - } -}; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx index 00590f46b51f1..0b6cc173acde1 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import { EuiButtonEmpty, EuiText } from '@elastic/eui'; import { MonitorPageLink } from '../../../common/monitor_page_link'; import { useGetUrlParams } from '../../../../hooks'; -import { stringifyUrlParams } from '../../../../lib/helper/stringify_url_params'; +import { stringifyUrlParams } from '../../../../../apps/synthetics/utils/url_params/stringify_url_params'; import { MonitorSummary } from '../../../../../../common/runtime_types/monitor'; import { useFilterUpdate } from '../../../../hooks/use_filter_update'; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx index 00484b8c40070..c5cdc60253f94 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx @@ -15,7 +15,7 @@ import moment from 'moment'; import { i18n } from '@kbn/i18n'; import { MonitorPageLink } from '../../../common/monitor_page_link'; import { useGetUrlParams } from '../../../../hooks'; -import { stringifyUrlParams } from '../../../../lib/helper/stringify_url_params'; +import { stringifyUrlParams } from '../../../../../apps/synthetics/utils/url_params/stringify_url_params'; import { PingError } from '../../../../../../common/runtime_types'; interface MostRecentErrorProps { diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/hooks/index.ts b/x-pack/plugins/synthetics/public/legacy_uptime/hooks/index.ts index b93373481f9f3..6d2a826caa4b4 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/hooks/index.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/hooks/index.ts @@ -12,5 +12,4 @@ export * from './use_search_text'; export * from './use_cert_status'; export * from './use_telemetry'; export * from './use_url_params'; -export * from './use_breakpoints'; export { useUptimeDataView } from '../contexts/uptime_data_view_context'; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/hooks/use_breadcrumbs.ts b/x-pack/plugins/synthetics/public/legacy_uptime/hooks/use_breadcrumbs.ts index 26e9d2d0fd285..0befbeb14832c 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/hooks/use_breadcrumbs.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/hooks/use_breadcrumbs.ts @@ -11,7 +11,7 @@ import { MouseEvent, useEffect } from 'react'; import { EuiBreadcrumb } from '@elastic/eui'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { UptimeUrlParams } from '../lib/helper'; -import { stringifyUrlParams } from '../lib/helper/stringify_url_params'; +import { stringifyUrlParams } from '../../apps/synthetics/utils/url_params/stringify_url_params'; import { useUrlParams } from '.'; import { PLUGIN } from '../../../common/constants/plugin'; @@ -57,7 +57,7 @@ export const makeBaseBreadcrumb = ( href: observabilityPath, }, { - text: i18n.translate('xpack.synthetics.breadcrumbs.overviewBreadcrumbText', { + text: i18n.translate('xpack.synthetics.breadcrumbs.legacyOverviewBreadcrumbText', { defaultMessage: 'Uptime', }), href: uptimePath, diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/rtl_helpers.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/rtl_helpers.tsx index db55ee3805ef1..3a1fed73b90d6 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/rtl_helpers.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/rtl_helpers.tsx @@ -30,7 +30,7 @@ import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { mockState } from '../__mocks__/uptime_store.mock'; import { MountWithReduxProvider } from './helper_with_redux'; import { AppState } from '../../state'; -import { stringifyUrlParams } from './stringify_url_params'; +import { stringifyUrlParams } from '../../../apps/synthetics/utils/url_params/stringify_url_params'; import { ClientPluginsStart } from '../../../plugin'; import { UptimeRefreshContextProvider, UptimeStartupPluginsContextProvider } from '../../contexts'; import { kibanaService } from '../../state/kibana_service'; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts b/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts index 703b2257ee176..246db87b983fe 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts @@ -5,10 +5,10 @@ * 2.0. */ -import { parseIsPaused } from './parse_is_paused'; -import { parseUrlInt } from './parse_url_int'; +import { parseIsPaused } from '../../../../apps/synthetics/utils/url_params/parse_is_paused'; +import { parseUrlInt } from '../../../../apps/synthetics/utils/url_params/parse_url_int'; import { CLIENT_DEFAULTS } from '../../../../../common/constants'; -import { parseAbsoluteDate } from './parse_absolute_date'; +import { parseAbsoluteDate } from '../../../../apps/synthetics/utils/url_params/parse_absolute_date'; export interface UptimeUrlParams { absoluteDateRangeStart: number; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/edit_monitor.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/edit_monitor.tsx index cb92de595d378..d0397de8be960 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/edit_monitor.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/edit_monitor.tsx @@ -31,7 +31,7 @@ export const EditMonitorPage: React.FC = () => { const { data, status } = useFetcher< Promise >(() => { - return getMonitor({ id: Buffer.from(monitorId, 'base64').toString('utf8') }); + return getMonitor({ id: monitorId }); }, [monitorId]); const monitor = data?.attributes as MonitorFields; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/monitor_management.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/monitor_management.tsx index 97013b9905187..ba243388c8a3b 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/monitor_management.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/monitor_management.tsx @@ -7,11 +7,9 @@ import React, { useEffect, useRef, useState } from 'react'; import { i18n } from '@kbn/i18n'; -import { useDispatch, useSelector } from 'react-redux'; +import { useSelector } from 'react-redux'; import { EuiCallOut, EuiButton, EuiSpacer, EuiLink } from '@elastic/eui'; import { useTrackPageview } from '@kbn/observability-plugin/public'; -import { ConfigKey } from '../../../../common/runtime_types'; -import { getMonitors } from '../../state/actions'; import { monitorManagementListSelector } from '../../state/selectors'; import { useMonitorManagementBreadcrumbs } from './use_monitor_management_breadcrumbs'; import { MonitorListContainer } from '../../components/monitor_management/monitor_list/monitor_list_container'; @@ -20,12 +18,12 @@ import { useEnablement } from '../../components/monitor_management/hooks/use_ena import { useLocations } from '../../components/monitor_management/hooks/use_locations'; import { Loader } from '../../components/monitor_management/loader/loader'; import { ERROR_HEADING_LABEL } from './content'; +import { useMonitorList } from '../../components/monitor_management/hooks/use_monitor_list'; export const MonitorManagementPage: React.FC = () => { useTrackPageview({ app: 'uptime', path: 'manage-monitors' }); useTrackPageview({ app: 'uptime', path: 'manage-monitors', delay: 15000 }); useMonitorManagementBreadcrumbs(); - const dispatch = useDispatch(); const [shouldFocusEnablementButton, setShouldFocusEnablementButton] = useState(false); const { @@ -40,19 +38,6 @@ export const MonitorManagementPage: React.FC = () => { const isEnabledRef = useRef(isEnabled); - useEffect(() => { - if (monitorList.total === null) { - dispatch( - getMonitors({ - page: 1, // saved objects page index is base 1 - perPage: 10, - sortOrder: 'asc', - sortField: `${ConfigKey.NAME}.keyword`, - }) - ); - } - }, [dispatch, monitorList.total]); - useEffect(() => { if (!isEnabled && isEnabledRef.current === true) { /* shift focus to enable button when enable toggle disappears. Prevent @@ -62,10 +47,14 @@ export const MonitorManagementPage: React.FC = () => { isEnabledRef.current = Boolean(isEnabled); }, [isEnabled]); + const { pageState, dispatchPageAction } = useMonitorList(); + + const showEmptyState = isEnabled !== undefined && monitorList.total === 0; + return ( <> { ) : null} - {isEnabled || (!isEnabled && monitorList.total) ? : null} + - {isEnabled !== undefined && monitorList.total === 0 && ( - - )} + {showEmptyState && } ); }; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/service_allowed_wrapper.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/service_allowed_wrapper.tsx index cda0e8a6cdbe9..ff74fd97f0b34 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/service_allowed_wrapper.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/pages/monitor_management/service_allowed_wrapper.tsx @@ -13,15 +13,6 @@ import { useSyntheticsServiceAllowed } from '../../components/monitor_management export const ServiceAllowedWrapper: React.FC = ({ children }) => { const { isAllowed, signupUrl, loading } = useSyntheticsServiceAllowed(); - if (loading) { - return ( - } - title={

{LOADING_MONITOR_MANAGEMENT_LABEL}

} - /> - ); - } - // checking for explicit false if (isAllowed === false) { return ( @@ -37,7 +28,17 @@ export const ServiceAllowedWrapper: React.FC = ({ children }) => { ); } - return <>{children}; + return ( + <> + {loading && ( + } + title={

{LOADING_MONITOR_MANAGEMENT_LABEL}

} + /> + )} +
{children}
+ + ); }; const REQUEST_ACCESS_LABEL = i18n.translate('xpack.synthetics.monitorManagement.requestAccess', { diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/pages/synthetics/checks_navigation.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/pages/synthetics/checks_navigation.tsx index ee33191c3799e..c09da77a6f559 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/pages/synthetics/checks_navigation.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/pages/synthetics/checks_navigation.tsx @@ -12,7 +12,7 @@ import { useHistory } from 'react-router-dom'; import moment from 'moment'; import { SyntheticsJourneyApiResponse } from '../../../../common/runtime_types/ping'; import { getShortTimeStamp } from '../../components/overview/monitor_list/columns/monitor_status_column'; -import { useBreakpoints } from '../../hooks/use_breakpoints'; +import { useBreakpoints } from '../../../apps/synthetics/hooks/use_breakpoints'; interface Props { timestamp: string; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/routes.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/routes.tsx index 1b8706ad4cb00..ac9ffdd2b70e7 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/routes.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/routes.tsx @@ -72,7 +72,7 @@ type RouteProps = { }; } & EuiPageTemplateProps; -const baseTitle = i18n.translate('xpack.synthetics.routes.baseTitle', { +const baseTitle = i18n.translate('xpack.synthetics.routes.legacyBaseTitle', { defaultMessage: 'Uptime - Kibana', }); diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/state/effects/monitor_management.ts b/x-pack/plugins/synthetics/public/legacy_uptime/state/effects/monitor_management.ts index 60a6676721784..b5ee599b0a4f9 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/state/effects/monitor_management.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/state/effects/monitor_management.ts @@ -35,7 +35,7 @@ import { import { fetchEffectFactory } from './fetch_effect'; export function* fetchMonitorManagementEffect() { - yield takeLatest( + yield takeLeading( getMonitors, fetchEffectFactory(fetchMonitorManagementList, getMonitorsSuccess, getMonitorsFailure) ); @@ -47,7 +47,7 @@ export function* fetchMonitorManagementEffect() { getServiceLocationsFailure ) ); - yield takeLatest( + yield takeLeading( getSyntheticsEnablement, fetchEffectFactory( fetchGetSyntheticsEnablement, diff --git a/x-pack/plugins/synthetics/server/lib/synthetics_service/formatters/browser.ts b/x-pack/plugins/synthetics/server/lib/synthetics_service/formatters/browser.ts index 616d764c50abb..876827e453adf 100644 --- a/x-pack/plugins/synthetics/server/lib/synthetics_service/formatters/browser.ts +++ b/x-pack/plugins/synthetics/server/lib/synthetics_service/formatters/browser.ts @@ -10,6 +10,21 @@ import { BrowserFields, ConfigKey } from '../../../../common/runtime_types/monit export type BrowserFormatMap = Record; +const throttlingFormatter: Formatter = (fields) => { + if (!fields[ConfigKey.IS_THROTTLING_ENABLED]) return false; + + const getThrottlingValue = (v: string | undefined, suffix: 'd' | 'u' | 'l') => + v !== '' && v !== undefined ? `${v}${suffix}` : null; + + return [ + getThrottlingValue(fields[ConfigKey.DOWNLOAD_SPEED], 'd'), + getThrottlingValue(fields[ConfigKey.UPLOAD_SPEED], 'u'), + getThrottlingValue(fields[ConfigKey.LATENCY], 'l'), + ] + .filter((v) => v !== null) + .join('/'); +}; + export const browserFormatters: BrowserFormatMap = { [ConfigKey.METADATA]: (fields) => objectFormatter(fields[ConfigKey.METADATA]), [ConfigKey.URLS]: null, @@ -31,12 +46,7 @@ export const browserFormatters: BrowserFormatMap = { [ConfigKey.ZIP_URL_TLS_KEY_PASSPHRASE]: null, [ConfigKey.ZIP_URL_TLS_VERIFICATION_MODE]: null, [ConfigKey.IS_THROTTLING_ENABLED]: null, - [ConfigKey.THROTTLING_CONFIG]: (fields) => { - if (fields[ConfigKey.IS_THROTTLING_ENABLED] === false) { - return false; - } - return fields[ConfigKey.THROTTLING_CONFIG] ?? false; - }, + [ConfigKey.THROTTLING_CONFIG]: (fields) => throttlingFormatter(fields), [ConfigKey.DOWNLOAD_SPEED]: null, [ConfigKey.UPLOAD_SPEED]: null, [ConfigKey.LATENCY]: null, diff --git a/x-pack/plugins/task_manager/server/task_events.test.ts b/x-pack/plugins/task_manager/server/task_events.test.ts index 607453b7ea92f..9c6b9f9cdede8 100644 --- a/x-pack/plugins/task_manager/server/task_events.test.ts +++ b/x-pack/plugins/task_manager/server/task_events.test.ts @@ -11,17 +11,28 @@ const DelayIterations = 4; const DelayMillis = 250; const DelayTotal = DelayIterations * DelayMillis; -async function nonBlockingDelay(millis: number) { +async function basicNonBlockingDelay(millis: number) { await new Promise((resolve) => setTimeout(resolve, millis)); } +async function nonBlockingDelay(millis: number) { + // can't just use basicNonBlockingDelay because: + // https://github.com/nodejs/node/issues/26578 + const end = Date.now() + millis; + + while (Date.now() <= end) { + await basicNonBlockingDelay(millis); + } +} + async function blockingDelay(millis: number) { // get task in async queue await nonBlockingDelay(0); const end = Date.now() + millis; + // eslint-disable-next-line no-empty - while (Date.now() < end) {} + while (Date.now() <= end) {} } async function nonBlockingTask() { @@ -45,8 +56,7 @@ describe('task_events', () => { expect(result.eventLoopBlockMs).toBe(undefined); }); - // FLAKY: https://github.com/elastic/kibana/issues/128441 - describe.skip('startTaskTimerWithEventLoopMonitoring', () => { + describe('startTaskTimerWithEventLoopMonitoring', () => { test('non-blocking', async () => { const stopTaskTimer = startTaskTimerWithEventLoopMonitoring({ monitor: true, diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index bbe07a375e42d..cf9e0c25c346d 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -440,27 +440,18 @@ "xpack.lens.indexPattern.dateHistogram.autoAdvancedExplanation": "L'intervalle suit cette logique :", "xpack.lens.indexPattern.dateHistogram.autoBasicExplanation": "L'histogramme des dates automatique divise un champ de données en groupes par intervalle.", "xpack.lens.indexPattern.dateHistogram.autoBoundHeader": "Intervalle cible mesuré", - "xpack.lens.indexPattern.dateHistogram.autoInterval": "Personnaliser l'intervalle de temps", "xpack.lens.indexPattern.dateHistogram.autoIntervalHeader": "Intervalle utilisé", "xpack.lens.indexPattern.dateHistogram.autoLongerExplanation": "Pour choisir l'intervalle, Lens divise la plage temporelle spécifiée par le paramètre {targetBarSetting}. Lens calcule le meilleur intervalle pour vos données. Par exemple 30m, 1h et 12. Le nombre maximal de barres est défini par la valeur {maxBarSetting}.", "xpack.lens.indexPattern.dateHistogram.bindToGlobalTimePicker": "Lier au sélecteur d'heure globale", - "xpack.lens.indexPattern.dateHistogram.days": "jours", "xpack.lens.indexPattern.dateHistogram.dropPartialBuckets": "Abandonner les compartiments partiels", "xpack.lens.indexPattern.dateHistogram.dropPartialBucketsHelp": "L’abandon des compartiments partiels est désactivé, car ceux-ci ne peuvent être calculés que pour un champ temporel lié au sélecteur d’heure globale en haut à droite.", "xpack.lens.indexPattern.dateHistogram.globalTimePickerHelp": "Filtrez le champ sélectionné à l’aide du sélecteur d’heure globale en haut à droite. Ce paramètre ne peut pas être désactivé pour le champ temporel par défaut de la vue de données actuelle.", - "xpack.lens.indexPattern.dateHistogram.hours": "heures", "xpack.lens.indexPattern.dateHistogram.includeEmptyRows": "Inclure les lignes vides", - "xpack.lens.indexPattern.dateHistogram.milliseconds": "millisecondes", "xpack.lens.indexPattern.dateHistogram.minimumInterval": "Intervalle minimal", - "xpack.lens.indexPattern.dateHistogram.minutes": "minutes", - "xpack.lens.indexPattern.dateHistogram.month": "mois", "xpack.lens.indexPattern.dateHistogram.moreThanYear": "Plus d'un an", "xpack.lens.indexPattern.dateHistogram.restrictedInterval": "Intervalle fixé à {intervalValue} en raison de restrictions d'agrégation.", - "xpack.lens.indexPattern.dateHistogram.seconds": "secondes", "xpack.lens.indexPattern.dateHistogram.titleHelp": "Fonctionnement de l'histogramme des dates automatique", "xpack.lens.indexPattern.dateHistogram.upTo": "Jusqu'à", - "xpack.lens.indexPattern.dateHistogram.week": "semaine", - "xpack.lens.indexPattern.dateHistogram.year": "an", "xpack.lens.indexPattern.dateHistogramTimeShift": "Dans un calque unique, vous ne pouvez pas combiner un décalage de plage temporelle précédent avec des histogrammes de dates. Utilisez une durée de décalage temporel explicite dans \"{column}\" ou remplacez l’histogramme de dates.", "xpack.lens.indexPattern.decimalPlacesLabel": "Décimales", "xpack.lens.indexPattern.defaultFormatLabel": "Par défaut", @@ -537,7 +528,6 @@ "xpack.lens.indexPattern.incompleteOperation": "(incomplet)", "xpack.lens.indexPattern.intervals": "Intervalles", "xpack.lens.indexPattern.invalidFieldLabel": "Champ non valide. Vérifiez votre vue de données ou choisissez un autre champ.", - "xpack.lens.indexPattern.invalidInterval": "Valeur d'intervalle non valide", "xpack.lens.indexPattern.invalidOperationLabel": "Ce champ ne fonctionne pas avec la fonction sélectionnée.", "xpack.lens.indexPattern.invalidReferenceConfiguration": "La dimension \"{dimensionLabel}\" n'est pas configurée correctement", "xpack.lens.indexPattern.invalidTimeShift": "Décalage non valide. Entrez un entier positif suivi par l'une des unités suivantes : s, m, h, d, w, M, y. Par exemple, 3h pour 3 heures", @@ -809,7 +799,6 @@ "xpack.lens.shared.axisNameLabel": "Titre de l'axe", "xpack.lens.shared.chartValueLabelVisibilityLabel": "Étiquettes", "xpack.lens.shared.curveLabel": "Options visuelles", - "xpack.lens.shared.legend.filterForValueButtonAriaLabel": "Filtre pour la valeur", "xpack.lens.shared.legend.filterOptionsLegend": "{legendDataLabel}, options de filtre", "xpack.lens.shared.legend.filterOutValueButtonAriaLabel": "Filtrer la valeur", "xpack.lens.shared.legendAlignmentLabel": "Alignement", @@ -2732,6 +2721,10 @@ "dataViews.unableWriteLabel": "Impossible d’écrire la vue de données ! Actualisez la page pour obtenir la dernière version de cette vue de données.", "devTools.badge.betaLabel": "Bêta", "devTools.badge.betaTooltipText": "Cette fonctionnalité pourra considérablement changer dans les futures versions", + "devTools.badge.readOnly.text": "Lecture seule", + "devTools.badge.readOnly.tooltip": "Enregistrement impossible", + "devTools.breadcrumb.homeLabel": "Outils de développement", + "devTools.devToolsTitle": "Outils de développement", "unifiedSearch.search.unableToGetSavedQueryToastTitle": "Impossible de charger la requête enregistrée {savedQueryId}", "unifiedSearch.noDataPopover.content": "Cette plage temporelle ne contient pas de données. Étendez ou ajustez la plage temporelle pour obtenir plus de champs et pouvoir créer des graphiques.", "unifiedSearch.noDataPopover.dismissAction": "Ne plus afficher", @@ -2847,10 +2840,22 @@ "unifiedSearch.filter.options.pinAllFiltersButtonLabel": "Tout épingler", "unifiedSearch.filter.options.unpinAllFiltersButtonLabel": "Tout désépingler", "unifiedSearch.filter.searchBar.changeAllFiltersTitle": "Changer tous les filtres", - "devTools.badge.readOnly.text": "Lecture seule", - "devTools.badge.readOnly.tooltip": "Enregistrement impossible", - "devTools.breadcrumb.homeLabel": "Outils de développement", - "devTools.devToolsTitle": "Outils de développement", + "unifiedSearch.kueryAutocomplete.andOperatorDescription": "Nécessite que {bothArguments} soient ''vrai''.", + "unifiedSearch.kueryAutocomplete.andOperatorDescription.bothArgumentsText": "les deux arguments", + "unifiedSearch.kueryAutocomplete.equalOperatorDescription": "{equals} une certaine valeur", + "unifiedSearch.kueryAutocomplete.equalOperatorDescription.equalsText": "égale", + "unifiedSearch.kueryAutocomplete.existOperatorDescription": "{exists} sous un certain format", + "unifiedSearch.kueryAutocomplete.existOperatorDescription.existsText": "existe", + "unifiedSearch.kueryAutocomplete.greaterThanOperatorDescription": "est {greaterThan} une certaine valeur", + "unifiedSearch.kueryAutocomplete.greaterThanOperatorDescription.greaterThanText": "supérieur à", + "unifiedSearch.kueryAutocomplete.greaterThanOrEqualOperatorDescription": "est {greaterThanOrEqualTo} une certaine valeur", + "unifiedSearch.kueryAutocomplete.greaterThanOrEqualOperatorDescription.greaterThanOrEqualToText": "supérieur ou égal à", + "unifiedSearch.kueryAutocomplete.lessThanOperatorDescription": "est {lessThan} une certaine valeur", + "unifiedSearch.kueryAutocomplete.lessThanOperatorDescription.lessThanText": "inférieur à", + "unifiedSearch.kueryAutocomplete.lessThanOrEqualOperatorDescription": "est {lessThanOrEqualTo} une certaine valeur", + "unifiedSearch.kueryAutocomplete.lessThanOrEqualOperatorDescription.lessThanOrEqualToText": "inférieur ou égal à", + "unifiedSearch.kueryAutocomplete.orOperatorDescription": "Nécessite qu’{oneOrMoreArguments} soit ''vrai''.", + "unifiedSearch.kueryAutocomplete.orOperatorDescription.oneOrMoreArgumentsText": "au moins un argument", "discover.advancedSettings.context.defaultSizeText": "Le nombre d'entrées connexes à afficher dans la vue contextuelle", "discover.advancedSettings.context.defaultSizeTitle": "Taille de contexte", "discover.advancedSettings.context.sizeStepText": "L’incrément duquel augmenter ou diminuer la taille de contexte", @@ -3579,11 +3584,11 @@ "expressionXY.axisTitlesVisibilityConfig.yLeft.help": "Spécifie si le titre de l'axe Y de gauche est visible ou non.", "expressionXY.axisTitlesVisibilityConfig.yRight.help": "Spécifie si le titre de l'axe Y de droite est visible ou non.", "expressionXY.dataLayer.accessors.help": "Les colonnes à afficher sur l’axe y.", - "expressionXY.dataLayer.columnToLabel.help": "Paires clé-valeur JSON de l’ID de colonne pour l’étiquette", + "expressionXY.layer.columnToLabel.help": "Paires clé-valeur JSON de l’ID de colonne pour l’étiquette", "expressionXY.dataLayer.help": "Configurer un calque dans le graphique xy", "expressionXY.dataLayer.hide.help": "Afficher/masquer l’axe", "expressionXY.dataLayer.isHistogram.help": "Disposer le graphique sous forme d’histogramme ou non", - "expressionXY.dataLayer.layerId.help": "ID du calque", + "expressionXY.layers.layerId.help": "ID du calque", "expressionXY.dataLayer.palette.help": "Palette", "expressionXY.dataLayer.seriesType.help": "Type de graphique à afficher.", "expressionXY.dataLayer.splitAccessor.help": "Colonne selon laquelle effectuer la division", @@ -3614,9 +3619,7 @@ "expressionXY.legendConfig.showSingleSeries.help": "Spécifie si une légende comportant une seule entrée doit être affichée", "expressionXY.legendConfig.verticalAlignment.help": "Spécifie l'alignement vertical de la légende lorsqu'elle est affichée à l'intérieur du graphique.", "expressionXY.referenceLineLayer.accessors.help": "Les colonnes à afficher sur l’axe y.", - "expressionXY.referenceLineLayer.columnToLabel.help": "Paires clé-valeur JSON de l’ID de colonne pour l’étiquette", "expressionXY.referenceLineLayer.help": "Configurer une ligne de référence dans le graphique xy", - "expressionXY.referenceLineLayer.layerId.help": "ID du calque", "expressionXY.referenceLineLayer.yConfig.help": "Configuration supplémentaire pour les axes y", "expressionXY.tickLabelsConfig.help": "Configurer l’aspect des étiquettes de coche du graphique xy", "expressionXY.tickLabelsConfig.x.help": "Spécifie si les étiquettes de graduation de l'axe X sont visibles ou non.", @@ -3647,7 +3650,7 @@ "expressionXY.xyVis.help": "Graphique X/Y", "expressionXY.xyVis.hideEndzones.help": "Masquer les marqueurs de zone de fin pour les données partielles", "expressionXY.xyVis.labelsOrientation.help": "Définit la rotation des étiquettes des axes", - "expressionXY.xyVis.layers.help": "Calques de série visuelle", + "expressionXY.layeredXyVis.layers.help": "Calques de série visuelle", "expressionXY.xyVis.legend.help": "Configurez la légende du graphique.", "expressionXY.xyVis.logDatatable.breakDown": "Répartir par", "expressionXY.xyVis.logDatatable.metric": "Axe vertical", @@ -7493,7 +7496,6 @@ "xpack.apm.filter.environment.allLabel": "Tous", "xpack.apm.filter.environment.label": "Environnement", "xpack.apm.filter.environment.notDefinedLabel": "Non défini", - "xpack.apm.filter.environment.selectEnvironmentLabel": "Sélectionner l'environnement", "xpack.apm.fleet_integration.settings.advancedOptionsLavel": "Options avancées", "xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowAgentHelpText": "Noms d'agents autorisés pour l'accès anonyme.", "xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowAgentLabel": "Agents autorisés", @@ -7720,7 +7722,6 @@ "xpack.apm.propertiesTable.tabs.metadataLabel": "Métadonnées", "xpack.apm.propertiesTable.tabs.timelineLabel": "Chronologie", "xpack.apm.searchInput.filter": "Filtrer…", - "xpack.apm.selectCustomOptionText": "Ajouter \\{searchValue\\} en tant que nouvelle option", "xpack.apm.selectPlaceholder": "Sélectionner une option :", "xpack.apm.serviceDependencies.breakdownChartTitle": "Temps consacré par dépendance", "xpack.apm.serviceDetails.dependenciesTabLabel": "Dépendances", @@ -8034,7 +8035,6 @@ "xpack.apm.settings.customLink.delete": "Supprimer", "xpack.apm.settings.customLink.delete.failed": "Impossible de supprimer le lien personnalisé", "xpack.apm.settings.customLink.delete.successed": "Lien personnalisé supprimé.", - "xpack.apm.settings.customLink.emptyPromptText": "Nous allons y remédier ! Vous pouvez ajouter des liens personnalisés au menu contextuel Actions à partir des détails de transaction de chaque service. Créez un lien utile vers le portail d'assistance de votre société, ou ouvrez un nouveau rapport de bug. Pour en savoir plus, consultez notre documentation.", "xpack.apm.settings.customLink.emptyPromptTitle": "Aucun lien trouvé.", "xpack.apm.settings.customLink.flyout.action.title": "Lien", "xpack.apm.settings.customLink.flyout.close": "Fermer", @@ -8374,7 +8374,6 @@ "xpack.apm.views.metrics.title": "Indicateurs", "xpack.apm.views.nodes.title": "JVM", "xpack.apm.views.overview.title": "Aperçu", - "xpack.apm.views.serviceGroups.breadcrumbLabel": "Services", "xpack.apm.views.serviceGroups.title": "Groupes de services", "xpack.apm.views.serviceInventory.title": "Services", "xpack.apm.views.serviceMap.title": "Carte des services", @@ -11925,7 +11924,6 @@ "xpack.enterpriseSearch.workplaceSearch.groups.newGroup.action": "Gérer le groupe", "xpack.enterpriseSearch.workplaceSearch.groups.newGroupSavedSuccess": "{groupName} créé avec succès", "xpack.enterpriseSearch.workplaceSearch.groups.noSourcesMessage": "Aucune source de contenu organisationnelle", - "xpack.enterpriseSearch.workplaceSearch.groups.noUsersMessage": "Aucun utilisateur", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmRemoveButtonText": "Supprimer {name}", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmRemoveDescription": "Votre groupe sera supprimé de Workplace Search. Voulez-vous vraiment supprimer {name} ?", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmTitleText": "Confirmer", @@ -21856,13 +21854,10 @@ "xpack.observability.rules.rulesTable.columns.statusTitle": "Statut", "xpack.observability.rules.rulesTable.pluralTitle": "règles", "xpack.observability.rules.rulesTable.ruleStatusActive": "Actif", - "xpack.observability.rules.rulesTable.ruleStatusDisabled": "Désactivé", - "xpack.observability.rules.rulesTable.ruleStatusEnabled": "Activé", "xpack.observability.rules.rulesTable.ruleStatusError": "Erreur", "xpack.observability.rules.rulesTable.ruleStatusLicenseError": "Erreur de licence", "xpack.observability.rules.rulesTable.ruleStatusOk": "Ok", "xpack.observability.rules.rulesTable.ruleStatusPending": "En attente", - "xpack.observability.rules.rulesTable.ruleStatusSnoozedIndefinitely": "Répété indéfiniment", "xpack.observability.rules.rulesTable.ruleStatusUnknown": "Inconnu", "xpack.observability.rules.rulesTable.ruleStatusWarning": "avertissement", "xpack.observability.rules.rulesTable.singleTitle": "règle", @@ -29370,7 +29365,6 @@ "xpack.triggersActionsUI.sections.rulesList.ruleStatusActive": "Actif", "xpack.triggersActionsUI.sections.rulesList.ruleStatusDropdownMenuLabel": "Modifier le statut de la règle ou répéter", "xpack.triggersActionsUI.sections.rulesList.ruleStatusError": "Erreur", - "xpack.triggersActionsUI.sections.rulesList.ruleStatusFilterLabel": "Dernière réponse", "xpack.triggersActionsUI.sections.rulesList.ruleStatusLicenseError": "Erreur de licence", "xpack.triggersActionsUI.sections.rulesList.ruleStatusOk": "Ok", "xpack.triggersActionsUI.sections.rulesList.ruleStatusPending": "En attente", @@ -31110,137 +31104,6 @@ "xpack.watcher.watchActions.webhook.portIsRequiredValidationMessage": "Le port webhook est requis.", "xpack.watcher.watchActions.webhook.usernameIsRequiredIfPasswordValidationMessage": "Le nom d'utilisateur est requis.", "xpack.watcher.watchEdit.thresholdWatchExpression.aggType.fieldIsRequiredValidationMessage": "Ce champ est requis.", - "xpack.watcher.watcherDescription": "Détectez les modifications survenant dans vos données en créant, gérant et monitorant des alertes.", - "unifiedSearch.noDataPopover.content": "Cette plage temporelle ne contient pas de données. Étendez ou ajustez la plage temporelle pour obtenir plus de champs et pouvoir créer des graphiques.", - "unifiedSearch.noDataPopover.dismissAction": "Ne plus afficher", - "unifiedSearch.noDataPopover.subtitle": "Conseil", - "unifiedSearch.noDataPopover.title": "Ensemble de données vide", - "unifiedSearch.query.queryBar.clearInputLabel": "Effacer l'entrée", - "unifiedSearch.query.queryBar.comboboxAriaLabel": "Rechercher et filtrer la page {pageType}", - "unifiedSearch.query.queryBar.kqlFullLanguageName": "Langage de requête Kibana", - "unifiedSearch.query.queryBar.kqlLanguageName": "KQL", - "unifiedSearch.query.queryBar.KQLNestedQuerySyntaxInfoDocLinkText": "documents", - "unifiedSearch.query.queryBar.KQLNestedQuerySyntaxInfoOptOutText": "Ne plus afficher", - "unifiedSearch.query.queryBar.KQLNestedQuerySyntaxInfoText": "Il semblerait que votre requête porte sur un champ imbriqué. Selon le résultat visé, il existe plusieurs façons de construire une syntaxe KQL pour des requêtes imbriquées. Apprenez-en plus avec notre {link}.", - "unifiedSearch.query.queryBar.KQLNestedQuerySyntaxInfoTitle": "Syntaxe de requête imbriquée KQL", - "unifiedSearch.query.queryBar.kqlOffLabel": "Désactivé", - "unifiedSearch.query.queryBar.kqlOnLabel": "Activé", - "unifiedSearch.query.queryBar.languageSwitcher.toText": "Passer au langage de requête Kibana pour la recherche", - "unifiedSearch.query.queryBar.luceneLanguageName": "Lucene", - "unifiedSearch.query.queryBar.searchInputAriaLabel": "Commencer à taper pour rechercher et filtrer la page {pageType}", - "unifiedSearch.query.queryBar.searchInputPlaceholder": "Recherche", - "unifiedSearch.query.queryBar.syntaxOptionsDescription": "{docsLink} (KQL) offre une syntaxe de requête simplifiée et la prise en charge des champs scriptés. KQL offre également une fonctionnalité de saisie semi-automatique. Si vous désactivez KQL, {nonKqlModeHelpText}.", - "unifiedSearch.query.queryBar.syntaxOptionsDescription.nonKqlModeHelpText": "Kibana utilise Lucene.", - "unifiedSearch.search.searchBar.savedQueryDescriptionLabelText": "Description", - "unifiedSearch.search.searchBar.savedQueryDescriptionText": "Enregistrez le texte et les filtres de la requête que vous souhaitez réutiliser.", - "unifiedSearch.search.searchBar.savedQueryForm.titleConflictText": "Ce nom est en conflit avec une requête enregistrée existante.", - "unifiedSearch.search.searchBar.savedQueryFormCancelButtonText": "Annuler", - "unifiedSearch.search.searchBar.savedQueryFormSaveButtonText": "Enregistrer", - "unifiedSearch.search.searchBar.savedQueryFormTitle": "Enregistrer la requête", - "unifiedSearch.search.searchBar.savedQueryIncludeFiltersLabelText": "Inclure les filtres", - "unifiedSearch.search.searchBar.savedQueryIncludeTimeFilterLabelText": "Inclure le filtre temporel", - "unifiedSearch.search.searchBar.savedQueryNameHelpText": "Un nom est requis. Le nom ne peut pas contenir d'espace vide au début ou à la fin. Le nom doit être unique.", - "unifiedSearch.search.searchBar.savedQueryNameLabelText": "Nom", - "unifiedSearch.search.searchBar.savedQueryNoSavedQueriesText": "Aucune requête enregistrée.", - "unifiedSearch.search.searchBar.savedQueryPopoverButtonText": "Voir les requêtes enregistrées", - "unifiedSearch.search.searchBar.savedQueryPopoverClearButtonAriaLabel": "Effacer la requête enregistrée en cours", - "unifiedSearch.search.searchBar.savedQueryPopoverClearButtonText": "Effacer", - "unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionCancelButtonText": "Annuler", - "unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionConfirmButtonText": "Supprimer", - "unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionTitle": "Supprimer \"{savedQueryName}\" ?", - "unifiedSearch.search.searchBar.savedQueryPopoverDeleteButtonAriaLabel": "Supprimer la requête enregistrée {savedQueryName}", - "unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonAriaLabel": "Enregistrer en tant que nouvelle requête enregistrée", - "unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonText": "Enregistrer en tant que nouvelle", - "unifiedSearch.search.searchBar.savedQueryPopoverSaveButtonAriaLabel": "Enregistrer une nouvelle requête enregistrée", - "unifiedSearch.search.searchBar.savedQueryPopoverSaveButtonText": "Enregistrer la requête en cours", - "unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonAriaLabel": "Enregistrer les modifications apportées à {title}", - "unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonText": "Enregistrer les modifications", - "unifiedSearch.search.searchBar.savedQueryPopoverSavedQueryListItemButtonAriaLabel": "Bouton de requête enregistrée {savedQueryName}", - "unifiedSearch.search.searchBar.savedQueryPopoverSavedQueryListItemDescriptionAriaLabel": "Description de {savedQueryName}", - "unifiedSearch.search.searchBar.savedQueryPopoverSavedQueryListItemSelectedButtonAriaLabel": "Bouton de requête enregistrée {savedQueryName} sélectionné. Appuyez pour effacer les modifications.", - "unifiedSearch.search.searchBar.savedQueryPopoverTitleText": "Requêtes enregistrées", - "unifiedSearch.search.unableToGetSavedQueryToastTitle": "Impossible de charger la requête enregistrée {savedQueryId}", - "unifiedSearch.query.queryBar.syntaxOptionsTitle": "Options de syntaxe", - "unifiedSearch.filter.applyFilterActionTitle": "Appliquer le filtre à la vue en cours", - "unifiedSearch.filter.applyFilters.popupHeader": "Sélectionner les filtres à appliquer", - "unifiedSearch.filter.applyFiltersPopup.cancelButtonLabel": "Annuler", - "unifiedSearch.filter.applyFiltersPopup.saveButtonLabel": "Appliquer", - "unifiedSearch.filter.filterBar.addFilterButtonLabel": "Ajouter un filtre", - "unifiedSearch.filter.filterBar.deleteFilterButtonLabel": "Supprimer", - "unifiedSearch.filter.filterBar.disabledFilterPrefix": "Désactivé", - "unifiedSearch.filter.filterBar.disableFilterButtonLabel": "Désactiver temporairement", - "unifiedSearch.filter.filterBar.editFilterButtonLabel": "Modifier le filtre", - "unifiedSearch.filter.filterBar.enableFilterButtonLabel": "Réactiver", - "unifiedSearch.filter.filterBar.excludeFilterButtonLabel": "Exclure les résultats", - "unifiedSearch.filter.filterBar.filterItemBadgeAriaLabel": "Actions de filtrage", - "unifiedSearch.filter.filterBar.filterItemBadgeIconAriaLabel": "Supprimer {filter}", - "unifiedSearch.filter.filterBar.includeFilterButtonLabel": "Inclure les résultats", - "unifiedSearch.filter.filterBar.indexPatternSelectPlaceholder": "Sélectionner un modèle d'indexation", - "unifiedSearch.filter.filterBar.labelErrorInfo": "Modèle d'indexation {indexPattern} introuvable", - "unifiedSearch.filter.filterBar.labelErrorText": "Erreur", - "unifiedSearch.filter.filterBar.labelWarningInfo": "Le champ {fieldName} n'existe pas dans la vue en cours.", - "unifiedSearch.filter.filterBar.labelWarningText": "Avertissement", - "unifiedSearch.filter.filterBar.moreFilterActionsMessage": "Filtre : {innerText}. Sélectionner pour plus d’actions de filtrage.", - "unifiedSearch.filter.filterBar.negatedFilterPrefix": "NON ", - "unifiedSearch.filter.filterBar.pinFilterButtonLabel": "Épingler dans toutes les applications", - "unifiedSearch.filter.filterBar.pinnedFilterPrefix": "Épinglé", - "unifiedSearch.filter.filterBar.unpinFilterButtonLabel": "Désépingler", - "unifiedSearch.filter.filterEditor.cancelButtonLabel": "Annuler", - "unifiedSearch.filter.filterEditor.createCustomLabelInputLabel": "Étiquette personnalisée", - "unifiedSearch.filter.filterEditor.createCustomLabelSwitchLabel": "Créer une étiquette personnalisée ?", - "unifiedSearch.filter.filterEditor.doesNotExistOperatorOptionLabel": "n'existe pas", - "unifiedSearch.filter.filterEditor.editFilterPopupTitle": "Modifier le filtre", - "unifiedSearch.filter.filterEditor.editFilterValuesButtonLabel": "Modifier les valeurs du filtre", - "unifiedSearch.filter.filterEditor.editQueryDslButtonLabel": "Modifier en tant que Query DSL", - "unifiedSearch.filter.filterEditor.existsOperatorOptionLabel": "existe", - "unifiedSearch.filter.filterEditor.falseOptionLabel": "false", - "unifiedSearch.filter.filterEditor.fieldSelectLabel": "Champ", - "unifiedSearch.filter.filterEditor.fieldSelectPlaceholder": "Sélectionner d'abord un champ", - "unifiedSearch.filter.filterEditor.indexPatternSelectLabel": "Modèle d'indexation", - "unifiedSearch.filter.filterEditor.isBetweenOperatorOptionLabel": "est entre", - "unifiedSearch.filter.filterEditor.isNotBetweenOperatorOptionLabel": "n'est pas entre", - "unifiedSearch.filter.filterEditor.isNotOneOfOperatorOptionLabel": "n'est pas l'une des options suivantes", - "unifiedSearch.filter.filterEditor.isNotOperatorOptionLabel": "n'est pas", - "unifiedSearch.filter.filterEditor.isOneOfOperatorOptionLabel": "est l'une des options suivantes", - "unifiedSearch.filter.filterEditor.isOperatorOptionLabel": "est", - "unifiedSearch.filter.filterEditor.operatorSelectLabel": "Opérateur", - "unifiedSearch.filter.filterEditor.operatorSelectPlaceholderSelect": "Sélectionner", - "unifiedSearch.filter.filterEditor.operatorSelectPlaceholderWaiting": "En attente", - "unifiedSearch.filter.filterEditor.queryDslLabel": "Query DSL d'Elasticsearch", - "unifiedSearch.filter.filterEditor.rangeEndInputPlaceholder": "Fin de la plage", - "unifiedSearch.filter.filterEditor.rangeInputLabel": "Plage", - "unifiedSearch.filter.filterEditor.rangeStartInputPlaceholder": "Début de la plage", - "unifiedSearch.filter.filterEditor.saveButtonLabel": "Enregistrer", - "unifiedSearch.filter.filterEditor.trueOptionLabel": "vrai", - "unifiedSearch.filter.filterEditor.valueInputLabel": "Valeur", - "unifiedSearch.filter.filterEditor.valueInputPlaceholder": "Saisir une valeur", - "unifiedSearch.filter.filterEditor.valueSelectPlaceholder": "Sélectionner une valeur", - "unifiedSearch.filter.filterEditor.valuesSelectLabel": "Valeurs", - "unifiedSearch.filter.filterEditor.valuesSelectPlaceholder": "Sélectionner des valeurs", - "unifiedSearch.filter.options.changeAllFiltersButtonLabel": "Changer tous les filtres", - "unifiedSearch.filter.options.deleteAllFiltersButtonLabel": "Tout supprimer", - "unifiedSearch.filter.options.disableAllFiltersButtonLabel": "Tout désactiver", - "unifiedSearch.filter.options.enableAllFiltersButtonLabel": "Tout activer", - "unifiedSearch.filter.options.invertDisabledFiltersButtonLabel": "Inverser l’activation/désactivation", - "unifiedSearch.filter.options.invertNegatedFiltersButtonLabel": "Inverser l'inclusion", - "unifiedSearch.filter.options.pinAllFiltersButtonLabel": "Tout épingler", - "unifiedSearch.filter.options.unpinAllFiltersButtonLabel": "Tout désépingler", - "unifiedSearch.filter.searchBar.changeAllFiltersTitle": "Changer tous les filtres", - "unifiedSearch.kueryAutocomplete.andOperatorDescription": "Nécessite que {bothArguments} soient ''vrai''.", - "unifiedSearch.kueryAutocomplete.andOperatorDescription.bothArgumentsText": "les deux arguments", - "unifiedSearch.kueryAutocomplete.equalOperatorDescription": "{equals} une certaine valeur", - "unifiedSearch.kueryAutocomplete.equalOperatorDescription.equalsText": "égale", - "unifiedSearch.kueryAutocomplete.existOperatorDescription": "{exists} sous un certain format", - "unifiedSearch.kueryAutocomplete.existOperatorDescription.existsText": "existe", - "unifiedSearch.kueryAutocomplete.greaterThanOperatorDescription": "est {greaterThan} une certaine valeur", - "unifiedSearch.kueryAutocomplete.greaterThanOperatorDescription.greaterThanText": "supérieur à", - "unifiedSearch.kueryAutocomplete.greaterThanOrEqualOperatorDescription": "est {greaterThanOrEqualTo} une certaine valeur", - "unifiedSearch.kueryAutocomplete.greaterThanOrEqualOperatorDescription.greaterThanOrEqualToText": "supérieur ou égal à", - "unifiedSearch.kueryAutocomplete.lessThanOperatorDescription": "est {lessThan} une certaine valeur", - "unifiedSearch.kueryAutocomplete.lessThanOperatorDescription.lessThanText": "inférieur à", - "unifiedSearch.kueryAutocomplete.lessThanOrEqualOperatorDescription": "est {lessThanOrEqualTo} une certaine valeur", - "unifiedSearch.kueryAutocomplete.lessThanOrEqualOperatorDescription.lessThanOrEqualToText": "inférieur ou égal à", - "unifiedSearch.kueryAutocomplete.orOperatorDescription": "Nécessite qu’{oneOrMoreArguments} soit ''vrai''.", - "unifiedSearch.kueryAutocomplete.orOperatorDescription.oneOrMoreArgumentsText": "au moins un argument" + "xpack.watcher.watcherDescription": "Détectez les modifications survenant dans vos données en créant, gérant et monitorant des alertes." } } diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 44cb5fcef981a..847603367dd1b 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -442,27 +442,18 @@ "xpack.lens.indexPattern.dateHistogram.autoAdvancedExplanation": "間隔は次のロジックに従います。", "xpack.lens.indexPattern.dateHistogram.autoBasicExplanation": "自動日付ヒストグラムは、間隔でデータフィールドをバケットに分割します。", "xpack.lens.indexPattern.dateHistogram.autoBoundHeader": "対象間隔の測定", - "xpack.lens.indexPattern.dateHistogram.autoInterval": "時間範囲のカスタマイズ", "xpack.lens.indexPattern.dateHistogram.autoIntervalHeader": "使用される間隔", "xpack.lens.indexPattern.dateHistogram.autoLongerExplanation": "間隔を選択するには、Lensは指定された時間範囲を{targetBarSetting}設定で除算します。Lensはデータに最適な間隔を計算します。たとえば、30分、1時間、12です。棒の最大数は{maxBarSetting}値で設定します。", "xpack.lens.indexPattern.dateHistogram.bindToGlobalTimePicker": "グローバル時刻ピッカーにバインド", - "xpack.lens.indexPattern.dateHistogram.days": "日", "xpack.lens.indexPattern.dateHistogram.dropPartialBuckets": "不完全なバケットをドロップ", "xpack.lens.indexPattern.dateHistogram.dropPartialBucketsHelp": "不完全なバケットのドロップは無効です。これらは、右上のグローバル時刻ピッカーにバインドされた時刻フィールドでのみ計算できます。", "xpack.lens.indexPattern.dateHistogram.globalTimePickerHelp": "右上のグローバル時刻ピッカーで選択したフィールドをフィルタリングします。現在のデータビューのデフォルト時刻フィールドではこの設定をオンにできません。", - "xpack.lens.indexPattern.dateHistogram.hours": "時間", "xpack.lens.indexPattern.dateHistogram.includeEmptyRows": "空の行を含める", - "xpack.lens.indexPattern.dateHistogram.milliseconds": "ミリ秒", "xpack.lens.indexPattern.dateHistogram.minimumInterval": "最低間隔", - "xpack.lens.indexPattern.dateHistogram.minutes": "分", - "xpack.lens.indexPattern.dateHistogram.month": "月", "xpack.lens.indexPattern.dateHistogram.moreThanYear": "1年を超える", "xpack.lens.indexPattern.dateHistogram.restrictedInterval": "集約の制限により間隔は {intervalValue} に固定されています。", - "xpack.lens.indexPattern.dateHistogram.seconds": "秒", "xpack.lens.indexPattern.dateHistogram.titleHelp": "自動日付ヒストグラムの仕組み", "xpack.lens.indexPattern.dateHistogram.upTo": "最大", - "xpack.lens.indexPattern.dateHistogram.week": "週", - "xpack.lens.indexPattern.dateHistogram.year": "年", "xpack.lens.indexPattern.dateHistogramTimeShift": "単一のレイヤーでは、前の時間範囲シフトと日付ヒストグラムを結合できません。\"{column}\"で明示的な時間シフト期間を使用するか、日付ヒストグラムを置換してください。", "xpack.lens.indexPattern.decimalPlacesLabel": "小数点以下", "xpack.lens.indexPattern.defaultFormatLabel": "デフォルト", @@ -539,7 +530,6 @@ "xpack.lens.indexPattern.incompleteOperation": "(未完了)", "xpack.lens.indexPattern.intervals": "間隔", "xpack.lens.indexPattern.invalidFieldLabel": "無効なフィールドです。データビューを確認するか、別のフィールドを選択してください。", - "xpack.lens.indexPattern.invalidInterval": "無効な間隔値", "xpack.lens.indexPattern.invalidOperationLabel": "選択した関数はこのフィールドで動作しません。", "xpack.lens.indexPattern.invalidReferenceConfiguration": "ディメンション\"{dimensionLabel}\"の構成が正しくありません", "xpack.lens.indexPattern.invalidTimeShift": "無効な時間シフトです。正の整数の後に単位s、m、h、d、w、M、yのいずれかを入力します。例:3時間は3hです", @@ -1010,7 +1000,6 @@ "xpack.lens.xyChart.verticalRightAxisLabel": "縦右軸", "xpack.lens.xySuggestions.asPercentageTitle": "割合(%)", "xpack.lens.xySuggestions.barChartTitle": "棒グラフ", - "xpack.lens.xySuggestions.dateSuggestion": "{xTitle}の上の {yTitle}", "xpack.lens.xySuggestions.emptyAxisTitle": "(空)", "xpack.lens.xySuggestions.flipTitle": "反転", "xpack.lens.xySuggestions.lineChartTitle": "折れ線グラフ", @@ -2713,10 +2702,6 @@ "data.searchSessions.sessionService.sessionObjectFetchError": "検索セッション情報を取得できませんでした", "data.triggers.applyFilterDescription": "Kibanaフィルターが適用されるとき。単一の値または範囲フィルターにすることができます。", "data.triggers.applyFilterTitle": "フィルターを適用", - "dataViews.deprecations.scriptedFields.manualStepOneMessage": "[スタック管理]>[Kibana]>[データビュー]に移動します。", - "dataViews.deprecations.scriptedFields.manualStepTwoMessage": "ランタイムフィールドを使用するには、スクリプト化されたフィールドがある{numberOfIndexPatternsWithScriptedFields}データビューを更新します。ほとんどの場合、既存のスクリプトを移行するには、「return ;」から「emit();」に変更する必要があります。1つ以上のスクリプト化されたフィールドがあるデータビュー:{allTitles}", - "dataViews.deprecations.scriptedFieldsMessage": "スクリプト化されたフィールドを使用する{numberOfIndexPatternsWithScriptedFields}データビュー({titlesPreview}...)があります。スクリプト化されたフィールドは廃止予定であり、今後は削除されます。ランタイムフィールドを使用してください。", - "dataViews.deprecations.scriptedFieldsTitle": "スクリプト化されたフィールドを使用しているデータビューが見つかりました。", "data.mgmt.searchSessions.actionDelete": "削除", "data.mgmt.searchSessions.actionExtend": "延長", "data.mgmt.searchSessions.actionRename": "名前を編集", @@ -3565,11 +3550,11 @@ "expressionXY.axisTitlesVisibilityConfig.yLeft.help": "左y軸のタイトルを表示するかどうかを指定します。", "expressionXY.axisTitlesVisibilityConfig.yRight.help": "右y軸のタイトルを表示するかどうかを指定します。", "expressionXY.dataLayer.accessors.help": "y軸に表示する列。", - "expressionXY.dataLayer.columnToLabel.help": "ラベリングする列IDのJSONキー値のペア", + "expressionXY.layer.columnToLabel.help": "ラベリングする列IDのJSONキー値のペア", "expressionXY.dataLayer.help": "xyグラフでレイヤーを構成", "expressionXY.dataLayer.hide.help": "軸を表示/非表示", "expressionXY.dataLayer.isHistogram.help": "グラフをヒストグラムとしてレイアウトするかどうか", - "expressionXY.dataLayer.layerId.help": "レイヤーID", + "expressionXY.layers.layerId.help": "レイヤーID", "expressionXY.dataLayer.palette.help": "パレット", "expressionXY.dataLayer.seriesType.help": "表示するグラフのタイプ。", "expressionXY.dataLayer.splitAccessor.help": "分割の基準となる列", @@ -3600,9 +3585,7 @@ "expressionXY.legendConfig.showSingleSeries.help": "エントリが1件の凡例を表示するかどうかを指定します", "expressionXY.legendConfig.verticalAlignment.help": "凡例がグラフ内に表示されるときに凡例の縦の配置を指定します。", "expressionXY.referenceLineLayer.accessors.help": "y軸に表示する列。", - "expressionXY.referenceLineLayer.columnToLabel.help": "ラベリングする列IDのJSONキー値のペア", "expressionXY.referenceLineLayer.help": "xyグラフで基準線を構成", - "expressionXY.referenceLineLayer.layerId.help": "レイヤーID", "expressionXY.referenceLineLayer.yConfig.help": "y軸の詳細構成", "expressionXY.tickLabelsConfig.help": "xyグラフのティックラベルの表示を構成", "expressionXY.tickLabelsConfig.x.help": "x軸の目盛ラベルを表示するかどうかを指定します。", @@ -3633,7 +3616,7 @@ "expressionXY.xyVis.help": "X/Y チャート", "expressionXY.xyVis.hideEndzones.help": "部分データの終了ゾーンマーカーを非表示", "expressionXY.xyVis.labelsOrientation.help": "軸ラベルの回転を定義します", - "expressionXY.xyVis.layers.help": "視覚的な系列のレイヤー", + "expressionXY.layeredXyVis.layers.help": "視覚的な系列のレイヤー", "expressionXY.xyVis.legend.help": "チャートの凡例を構成します。", "expressionXY.xyVis.logDatatable.breakDown": "内訳の基準", "expressionXY.xyVis.logDatatable.metric": "縦軸", @@ -7481,7 +7464,6 @@ "xpack.apm.filter.environment.allLabel": "すべて", "xpack.apm.filter.environment.label": "環境", "xpack.apm.filter.environment.notDefinedLabel": "未定義", - "xpack.apm.filter.environment.selectEnvironmentLabel": "環境を選択", "xpack.apm.fleet_integration.settings.advancedOptionsLavel": "高度なオプション", "xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowAgentHelpText": "匿名アクセスの許可されたエージェント名。", "xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowAgentLabel": "許可されたエージェント", @@ -7706,7 +7688,6 @@ "xpack.apm.propertiesTable.tabs.metadataLabel": "メタデータ", "xpack.apm.propertiesTable.tabs.timelineLabel": "Timeline", "xpack.apm.searchInput.filter": "フィルター...", - "xpack.apm.selectCustomOptionText": "\\{searchValue\\}を新しいオプションとして追加", "xpack.apm.selectPlaceholder": "オプションを選択:", "xpack.apm.serviceDependencies.breakdownChartTitle": "依存関係にかかった時間", "xpack.apm.serviceDetails.dependenciesTabLabel": "依存関係", @@ -8020,7 +8001,6 @@ "xpack.apm.settings.customLink.delete": "削除", "xpack.apm.settings.customLink.delete.failed": "カスタムリンクを削除できませんでした", "xpack.apm.settings.customLink.delete.successed": "カスタムリンクを削除しました。", - "xpack.apm.settings.customLink.emptyPromptText": "変更しましょう。サービスごとのトランザクションの詳細でアクションコンテキストメニューにカスタムリンクを追加できます。自社のサポートポータルへの役立つリンクを作成するか、新しい不具合レポートを発行します。詳細はドキュメントをご覧ください。", "xpack.apm.settings.customLink.emptyPromptTitle": "リンクが見つかりません。", "xpack.apm.settings.customLink.flyout.action.title": "リンク", "xpack.apm.settings.customLink.flyout.close": "閉じる", @@ -8359,7 +8339,6 @@ "xpack.apm.views.metrics.title": "メトリック", "xpack.apm.views.nodes.title": "JVM", "xpack.apm.views.overview.title": "概要", - "xpack.apm.views.serviceGroups.breadcrumbLabel": "サービス", "xpack.apm.views.serviceGroups.title": "サービスグループ", "xpack.apm.views.serviceInventory.title": "サービス", "xpack.apm.views.serviceMap.title": "サービスマップ", @@ -11926,7 +11905,6 @@ "xpack.enterpriseSearch.workplaceSearch.groups.newGroup.action": "グループを管理", "xpack.enterpriseSearch.workplaceSearch.groups.newGroupSavedSuccess": "{groupName}が正常に作成されました", "xpack.enterpriseSearch.workplaceSearch.groups.noSourcesMessage": "組織コンテンツソースがありません", - "xpack.enterpriseSearch.workplaceSearch.groups.noUsersMessage": "ユーザーがありません", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmRemoveButtonText": "{name}を削除", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmRemoveDescription": "グループはWorkplace Searchから削除されます。{name}を削除してよろしいですか?", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmTitleText": "確認", @@ -21898,13 +21876,10 @@ "xpack.observability.rules.rulesTable.columns.statusTitle": "ステータス", "xpack.observability.rules.rulesTable.pluralTitle": "ルール", "xpack.observability.rules.rulesTable.ruleStatusActive": "アクティブ", - "xpack.observability.rules.rulesTable.ruleStatusDisabled": "無効", - "xpack.observability.rules.rulesTable.ruleStatusEnabled": "有効", "xpack.observability.rules.rulesTable.ruleStatusError": "エラー", "xpack.observability.rules.rulesTable.ruleStatusLicenseError": "ライセンスエラー", "xpack.observability.rules.rulesTable.ruleStatusOk": "OK", "xpack.observability.rules.rulesTable.ruleStatusPending": "保留中", - "xpack.observability.rules.rulesTable.ruleStatusSnoozedIndefinitely": "無期限にスヌーズ", "xpack.observability.rules.rulesTable.ruleStatusUnknown": "不明", "xpack.observability.rules.rulesTable.ruleStatusWarning": "警告", "xpack.observability.rules.rulesTable.singleTitle": "ルール", @@ -29439,7 +29414,6 @@ "xpack.triggersActionsUI.sections.rulesList.ruleStatusActive": "アクティブ", "xpack.triggersActionsUI.sections.rulesList.ruleStatusDropdownMenuLabel": "ルールステータスまたはスヌーズを変更", "xpack.triggersActionsUI.sections.rulesList.ruleStatusError": "エラー", - "xpack.triggersActionsUI.sections.rulesList.ruleStatusFilterLabel": "前回の応答", "xpack.triggersActionsUI.sections.rulesList.ruleStatusLicenseError": "ライセンスエラー", "xpack.triggersActionsUI.sections.rulesList.ruleStatusOk": "OK", "xpack.triggersActionsUI.sections.rulesList.ruleStatusPending": "保留中", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 7101b5b874b78..aee146cced139 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -447,27 +447,18 @@ "xpack.lens.indexPattern.dateHistogram.autoAdvancedExplanation": "时间间隔遵循以下逻辑:", "xpack.lens.indexPattern.dateHistogram.autoBasicExplanation": "自动日期直方图按时间间隔将数据字段拆分为桶。", "xpack.lens.indexPattern.dateHistogram.autoBoundHeader": "已度量目标时间间隔", - "xpack.lens.indexPattern.dateHistogram.autoInterval": "定制时间间隔", "xpack.lens.indexPattern.dateHistogram.autoIntervalHeader": "已用时间间隔", "xpack.lens.indexPattern.dateHistogram.autoLongerExplanation": "要选择时间间隔,Lens 按 {targetBarSetting} 设置分割指定的时间范围。Lens 为您的数据计算最佳时间间隔。例如 30m、1h 和 12。最大条形数由 {maxBarSetting} 值设置。", "xpack.lens.indexPattern.dateHistogram.bindToGlobalTimePicker": "绑定到全局时间选取器", - "xpack.lens.indexPattern.dateHistogram.days": "天", "xpack.lens.indexPattern.dateHistogram.dropPartialBuckets": "丢弃部分存储桶", "xpack.lens.indexPattern.dateHistogram.dropPartialBucketsHelp": "禁止丢弃部分存储桶,因为只可以为绑定到右上角的全局时间选取器的时间字段计算这些存储桶。", "xpack.lens.indexPattern.dateHistogram.globalTimePickerHelp": "按右上角的全局时间选取器筛选选定字段。不能对当前数据视图的默认时间字段关闭此设置。", - "xpack.lens.indexPattern.dateHistogram.hours": "小时", "xpack.lens.indexPattern.dateHistogram.includeEmptyRows": "包括空行", - "xpack.lens.indexPattern.dateHistogram.milliseconds": "毫秒", "xpack.lens.indexPattern.dateHistogram.minimumInterval": "最小时间间隔", - "xpack.lens.indexPattern.dateHistogram.minutes": "分钟", - "xpack.lens.indexPattern.dateHistogram.month": "个月", "xpack.lens.indexPattern.dateHistogram.moreThanYear": "1 年以上", "xpack.lens.indexPattern.dateHistogram.restrictedInterval": "由于聚合限制,时间间隔固定为 {intervalValue}。", - "xpack.lens.indexPattern.dateHistogram.seconds": "秒", "xpack.lens.indexPattern.dateHistogram.titleHelp": "自动日期直方图的工作原理", "xpack.lens.indexPattern.dateHistogram.upTo": "最多", - "xpack.lens.indexPattern.dateHistogram.week": "周", - "xpack.lens.indexPattern.dateHistogram.year": "年", "xpack.lens.indexPattern.dateHistogramTimeShift": "在单个图层中,您无法组合上一时间范围偏移与 Date Histogram。在“{column}”中使用显式时间偏移持续时间,或替换 Date Histogram。", "xpack.lens.indexPattern.decimalPlacesLabel": "小数", "xpack.lens.indexPattern.defaultFormatLabel": "默认", @@ -544,7 +535,6 @@ "xpack.lens.indexPattern.incompleteOperation": "(不完整)", "xpack.lens.indexPattern.intervals": "时间间隔", "xpack.lens.indexPattern.invalidFieldLabel": "字段无效。检查数据视图或选取其他字段。", - "xpack.lens.indexPattern.invalidInterval": "时间间隔值无效", "xpack.lens.indexPattern.invalidOperationLabel": "此字段不适用于选定函数。", "xpack.lens.indexPattern.invalidReferenceConfiguration": "维度“{dimensionLabel}”配置不正确", "xpack.lens.indexPattern.invalidTimeShift": "时间偏移无效。输入正整数数量,后跟以下单位之一:s、m、h、d、w、M、y。例如,3h 表示 3 小时", @@ -2820,10 +2810,6 @@ "data.searchSessionName.saveButtonText": "保存", "data.sessions.management.flyoutText": "此搜索会话的配置", "data.sessions.management.flyoutTitle": "检查搜索会话", - "dataViews.deprecations.scriptedFields.manualStepOneMessage": "导航到“堆栈管理”>“Kibana”>“索引模式”。", - "dataViews.deprecations.scriptedFields.manualStepTwoMessage": "更新 {numberOfIndexPatternsWithScriptedFields} 个具有脚本字段的索引模式以改为使用运行时字段。多数情况下,要迁移现有脚本,您需要将“return ;”更改为“emit();”。至少有一个脚本字段的索引模式:{allTitles}", - "dataViews.deprecations.scriptedFieldsMessage": "您具有 {numberOfIndexPatternsWithScriptedFields} 个使用脚本字段的索引模式 ({titlesPreview}...)。脚本字段已过时,将在未来移除。请改为使用运行时脚本。", - "dataViews.deprecations.scriptedFieldsTitle": "找到使用脚本字段的索引模式", "dataViews.deprecations.scriptedFields.manualStepOneMessage": "导航到“堆栈管理”>“Kibana”>“数据视图”。", "dataViews.deprecations.scriptedFields.manualStepTwoMessage": "更新 {numberOfIndexPatternsWithScriptedFields} 个具有脚本字段的数据视图以改为使用运行时字段。多数情况下,要迁移现有脚本,您需要将“return ;”更改为“emit();”。至少有一个脚本字段的数据视图:{allTitles}", "dataViews.deprecations.scriptedFieldsMessage": "您具有 {numberOfIndexPatternsWithScriptedFields} 个使用脚本字段的数据视图 ({titlesPreview}...)。脚本字段已过时,将在未来移除。请改为使用运行时脚本。", @@ -3575,11 +3561,11 @@ "expressionXY.axisTitlesVisibilityConfig.yLeft.help": "指定左侧 y 轴的标题是否可见。", "expressionXY.axisTitlesVisibilityConfig.yRight.help": "指定右侧 y 轴的标题是否可见。", "expressionXY.dataLayer.accessors.help": "要在 y 轴上显示的列。", - "expressionXY.dataLayer.columnToLabel.help": "要标记的列 ID 的 JSON 键值对", + "expressionXY.layer.columnToLabel.help": "要标记的列 ID 的 JSON 键值对", "expressionXY.dataLayer.help": "配置 xy 图表中的图层", "expressionXY.dataLayer.hide.help": "显示/隐藏轴", "expressionXY.dataLayer.isHistogram.help": "是否将图表布局为直方图", - "expressionXY.dataLayer.layerId.help": "图层 ID", + "expressionXY.layers.layerId.help": "图层 ID", "expressionXY.dataLayer.palette.help": "调色板", "expressionXY.dataLayer.seriesType.help": "要显示的图表的类型。", "expressionXY.dataLayer.splitAccessor.help": "拆分要依据的列", @@ -3610,9 +3596,7 @@ "expressionXY.legendConfig.showSingleSeries.help": "指定是否应显示只包含一个条目的图例", "expressionXY.legendConfig.verticalAlignment.help": "指定图例显示在图表内时垂直对齐。", "expressionXY.referenceLineLayer.accessors.help": "要在 y 轴上显示的列。", - "expressionXY.referenceLineLayer.columnToLabel.help": "要标记的列 ID 的 JSON 键值对", "expressionXY.referenceLineLayer.help": "配置 xy 图表中的参考线", - "expressionXY.referenceLineLayer.layerId.help": "图层 ID", "expressionXY.referenceLineLayer.yConfig.help": "y 轴的其他配置", "expressionXY.tickLabelsConfig.help": "配置 xy 图表的刻度标签外观", "expressionXY.tickLabelsConfig.x.help": "指定 x 轴的刻度标签是否可见。", @@ -3643,7 +3627,7 @@ "expressionXY.xyVis.help": "X/Y 图表", "expressionXY.xyVis.hideEndzones.help": "隐藏部分数据的末日区域标记", "expressionXY.xyVis.labelsOrientation.help": "定义轴标签的旋转", - "expressionXY.xyVis.layers.help": "可视序列的图层", + "expressionXY.layeredXyVis.layers.help": "可视序列的图层", "expressionXY.xyVis.legend.help": "配置图表图例。", "expressionXY.xyVis.logDatatable.breakDown": "细分方式", "expressionXY.xyVis.logDatatable.metric": "垂直轴", @@ -7498,7 +7482,6 @@ "xpack.apm.filter.environment.allLabel": "全部", "xpack.apm.filter.environment.label": "环境", "xpack.apm.filter.environment.notDefinedLabel": "未定义", - "xpack.apm.filter.environment.selectEnvironmentLabel": "选择环境", "xpack.apm.fleet_integration.settings.advancedOptionsLavel": "高级选项", "xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowAgentHelpText": "允许进行匿名访问的代理名称。", "xpack.apm.fleet_integration.settings.agentAuthorization.anonymousAllowAgentLabel": "允许的代理", @@ -7725,7 +7708,6 @@ "xpack.apm.propertiesTable.tabs.metadataLabel": "元数据", "xpack.apm.propertiesTable.tabs.timelineLabel": "时间线", "xpack.apm.searchInput.filter": "筛选...", - "xpack.apm.selectCustomOptionText": "将 \\{searchValue\\} 添加为新选项", "xpack.apm.selectPlaceholder": "选择选项:", "xpack.apm.serviceDependencies.breakdownChartTitle": "依赖项花费的时间", "xpack.apm.serviceDetails.dependenciesTabLabel": "依赖项", @@ -8039,7 +8021,6 @@ "xpack.apm.settings.customLink.delete": "删除", "xpack.apm.settings.customLink.delete.failed": "无法删除定制链接", "xpack.apm.settings.customLink.delete.successed": "已删除定制链接。", - "xpack.apm.settings.customLink.emptyPromptText": "让我们改动一下!可以通过每个服务的事务详情将定制链接添加到“操作”上下文菜单。创建指向公司支持门户或用于提交新错误报告的有用链接。在我们的文档中详细了解。", "xpack.apm.settings.customLink.emptyPromptTitle": "未找到链接。", "xpack.apm.settings.customLink.flyout.action.title": "链接", "xpack.apm.settings.customLink.flyout.close": "关闭", @@ -8379,7 +8360,6 @@ "xpack.apm.views.metrics.title": "指标", "xpack.apm.views.nodes.title": "JVM", "xpack.apm.views.overview.title": "概览", - "xpack.apm.views.serviceGroups.breadcrumbLabel": "服务", "xpack.apm.views.serviceGroups.title": "服务组", "xpack.apm.views.serviceInventory.title": "服务", "xpack.apm.views.serviceMap.title": "服务地图", @@ -11948,7 +11928,6 @@ "xpack.enterpriseSearch.workplaceSearch.groups.newGroup.action": "管理组", "xpack.enterpriseSearch.workplaceSearch.groups.newGroupSavedSuccess": "已成功创建 {groupName}", "xpack.enterpriseSearch.workplaceSearch.groups.noSourcesMessage": "无组织内容源", - "xpack.enterpriseSearch.workplaceSearch.groups.noUsersMessage": "无用户", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmRemoveButtonText": "删除 {name}", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmRemoveDescription": "您的组将从 Workplace Search 中删除。确定要移除 {name}?", "xpack.enterpriseSearch.workplaceSearch.groups.overview.confirmTitleText": "确认", @@ -21929,13 +21908,10 @@ "xpack.observability.rules.rulesTable.columns.statusTitle": "状态", "xpack.observability.rules.rulesTable.pluralTitle": "规则", "xpack.observability.rules.rulesTable.ruleStatusActive": "活动", - "xpack.observability.rules.rulesTable.ruleStatusDisabled": "已禁用", - "xpack.observability.rules.rulesTable.ruleStatusEnabled": "已启用", "xpack.observability.rules.rulesTable.ruleStatusError": "错误", "xpack.observability.rules.rulesTable.ruleStatusLicenseError": "许可证错误", "xpack.observability.rules.rulesTable.ruleStatusOk": "确定", "xpack.observability.rules.rulesTable.ruleStatusPending": "待处理", - "xpack.observability.rules.rulesTable.ruleStatusSnoozedIndefinitely": "已无限期暂停", "xpack.observability.rules.rulesTable.ruleStatusUnknown": "未知", "xpack.observability.rules.rulesTable.ruleStatusWarning": "警告", "xpack.observability.rules.rulesTable.singleTitle": "规则", @@ -29473,7 +29449,6 @@ "xpack.triggersActionsUI.sections.rulesList.ruleStatusActive": "活动", "xpack.triggersActionsUI.sections.rulesList.ruleStatusDropdownMenuLabel": "更改规则状态或暂停", "xpack.triggersActionsUI.sections.rulesList.ruleStatusError": "错误", - "xpack.triggersActionsUI.sections.rulesList.ruleStatusFilterLabel": "上次响应", "xpack.triggersActionsUI.sections.rulesList.ruleStatusLicenseError": "许可证错误", "xpack.triggersActionsUI.sections.rulesList.ruleStatusOk": "确定", "xpack.triggersActionsUI.sections.rulesList.ruleStatusPending": "待处理", diff --git a/x-pack/plugins/triggers_actions_ui/common/experimental_features.ts b/x-pack/plugins/triggers_actions_ui/common/experimental_features.ts index 21835a5977216..0a0b8cdeab208 100644 --- a/x-pack/plugins/triggers_actions_ui/common/experimental_features.ts +++ b/x-pack/plugins/triggers_actions_ui/common/experimental_features.ts @@ -15,6 +15,7 @@ export const allowedExperimentalValues = Object.freeze({ rulesListDatagrid: true, internalAlertsTable: false, internalShareableComponentsSandbox: false, + ruleStatusFilter: false, rulesDetailLogs: true, }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/rule_status_filter_sandbox.tsx b/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/rule_status_filter_sandbox.tsx new file mode 100644 index 0000000000000..99ddd8daf16ac --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/rule_status_filter_sandbox.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { RuleStatusFilterProps } from '../../../types'; +import { getRuleStatusFilterLazy } from '../../../common/get_rule_status_filter'; + +export const RuleStatusFilterSandbox = () => { + const [selectedStatuses, setSelectedStatuses] = useState< + RuleStatusFilterProps['selectedStatuses'] + >([]); + + return ( +
+ {getRuleStatusFilterLazy({ + selectedStatuses, + onChange: setSelectedStatuses, + })} +
Selected states: {JSON.stringify(selectedStatuses)}
+
+ ); +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/shareable_components_sandbox.tsx b/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/shareable_components_sandbox.tsx index d756804bbd406..bedcbb03045a5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/shareable_components_sandbox.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/shareable_components_sandbox.tsx @@ -7,12 +7,14 @@ import React from 'react'; import { RuleStatusDropdownSandbox } from './rule_status_dropdown_sandbox'; +import { RuleStatusFilterSandbox } from './rule_status_filter_sandbox'; import { RuleTagBadgeSandbox } from './rule_tag_badge_sandbox'; export const InternalShareableComponentsSandbox: React.FC<{}> = () => { return ( <> + ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/aggregate.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/aggregate.test.ts index 46653e5bc3911..ab8f1b565c888 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/aggregate.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/aggregate.test.ts @@ -209,4 +209,84 @@ describe('loadRuleAggregations', () => { ] `); }); + + test('should call aggregate API with ruleStatusesFilter', async () => { + const resolvedValue = { + rule_execution_status: { + ok: 4, + active: 2, + error: 1, + pending: 1, + unknown: 0, + }, + }; + http.get.mockResolvedValue(resolvedValue); + + let result = await loadRuleAggregations({ + http, + ruleStatusesFilter: ['enabled'], + }); + + expect(result).toEqual({ + ruleExecutionStatus: { + ok: 4, + active: 2, + error: 1, + pending: 1, + unknown: 0, + }, + }); + + expect(http.get.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + "/internal/alerting/rules/_aggregate", + Object { + "query": Object { + "default_search_operator": "AND", + "filter": "alert.attributes.enabled:(true) and not (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)", + "search": undefined, + "search_fields": undefined, + }, + }, + ] + `); + + result = await loadRuleAggregations({ + http, + ruleStatusesFilter: ['enabled', 'snoozed'], + }); + + expect(http.get.mock.calls[1]).toMatchInlineSnapshot(` + Array [ + "/internal/alerting/rules/_aggregate", + Object { + "query": Object { + "default_search_operator": "AND", + "filter": "alert.attributes.enabled:(true) or (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)", + "search": undefined, + "search_fields": undefined, + }, + }, + ] + `); + + result = await loadRuleAggregations({ + http, + ruleStatusesFilter: ['enabled', 'disabled', 'snoozed'], + }); + + expect(http.get.mock.calls[1]).toMatchInlineSnapshot(` + Array [ + "/internal/alerting/rules/_aggregate", + Object { + "query": Object { + "default_search_operator": "AND", + "filter": "alert.attributes.enabled:(true) or (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)", + "search": undefined, + "search_fields": undefined, + }, + }, + ] + `); + }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/aggregate.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/aggregate.ts index c7bcd438ef697..9548445d0df9c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/aggregate.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/aggregate.ts @@ -6,7 +6,7 @@ */ import { HttpSetup } from '@kbn/core/public'; import { AsApiContract, RewriteRequestCase } from '@kbn/actions-plugin/common'; -import { RuleAggregations } from '../../../types'; +import { RuleAggregations, RuleStatus } from '../../../types'; import { INTERNAL_BASE_ALERTING_API_PATH } from '../../constants'; import { mapFiltersToKql } from './map_filters_to_kql'; @@ -29,15 +29,22 @@ export async function loadRuleAggregations({ searchText, typesFilter, actionTypesFilter, + ruleExecutionStatusesFilter, ruleStatusesFilter, }: { http: HttpSetup; searchText?: string; typesFilter?: string[]; actionTypesFilter?: string[]; - ruleStatusesFilter?: string[]; + ruleExecutionStatusesFilter?: string[]; + ruleStatusesFilter?: RuleStatus[]; }): Promise { - const filters = mapFiltersToKql({ typesFilter, actionTypesFilter, ruleStatusesFilter }); + const filters = mapFiltersToKql({ + typesFilter, + actionTypesFilter, + ruleExecutionStatusesFilter, + ruleStatusesFilter, + }); const res = await http.get>( `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_aggregate`, { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/map_filters_to_kql.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/map_filters_to_kql.test.ts index e1dd14a7a9fde..df762d05e0eff 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/map_filters_to_kql.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/map_filters_to_kql.test.ts @@ -32,14 +32,62 @@ describe('mapFiltersToKql', () => { ]); }); - test('should handle ruleStatusesFilter', () => { + test('should handle ruleExecutionStatusesFilter', () => { expect( mapFiltersToKql({ - ruleStatusesFilter: ['alert', 'statuses', 'filter'], + ruleExecutionStatusesFilter: ['alert', 'statuses', 'filter'], }) ).toEqual(['alert.attributes.executionStatus.status:(alert or statuses or filter)']); }); + test('should handle ruleStatusesFilter', () => { + expect( + mapFiltersToKql({ + ruleStatusesFilter: ['enabled'], + }) + ).toEqual([ + 'alert.attributes.enabled:(true) and not (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)', + ]); + + expect( + mapFiltersToKql({ + ruleStatusesFilter: ['disabled'], + }) + ).toEqual([ + 'alert.attributes.enabled:(false) and not (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)', + ]); + + expect( + mapFiltersToKql({ + ruleStatusesFilter: ['snoozed'], + }) + ).toEqual(['(alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)']); + + expect( + mapFiltersToKql({ + ruleStatusesFilter: ['enabled', 'snoozed'], + }) + ).toEqual([ + 'alert.attributes.enabled:(true) or (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)', + ]); + + expect( + mapFiltersToKql({ + ruleStatusesFilter: ['disabled', 'snoozed'], + }) + ).toEqual([ + 'alert.attributes.enabled:(false) or (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)', + ]); + + expect( + mapFiltersToKql({ + ruleStatusesFilter: ['enabled', 'disabled', 'snoozed'], + }) + ).toEqual([ + 'alert.attributes.enabled:(true or false) or (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)', + ]); + }); + test('should handle typesFilter and actionTypesFilter', () => { expect( mapFiltersToKql({ @@ -52,12 +100,12 @@ describe('mapFiltersToKql', () => { ]); }); - test('should handle typesFilter, actionTypesFilter and ruleStatusesFilter', () => { + test('should handle typesFilter, actionTypesFilter and ruleExecutionStatusesFilter', () => { expect( mapFiltersToKql({ typesFilter: ['type', 'filter'], actionTypesFilter: ['action', 'types', 'filter'], - ruleStatusesFilter: ['alert', 'statuses', 'filter'], + ruleExecutionStatusesFilter: ['alert', 'statuses', 'filter'], }) ).toEqual([ 'alert.attributes.alertTypeId:(type or filter)', diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/map_filters_to_kql.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/map_filters_to_kql.ts index d7b22a7a4aee4..0e64f5500454f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/map_filters_to_kql.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/map_filters_to_kql.ts @@ -5,16 +5,34 @@ * 2.0. */ +import { RuleStatus } from '../../../types'; + +const getEnablementFilter = (ruleStatusFilter: RuleStatus[] = []) => { + const enablementFilters = ruleStatusFilter.reduce((result, filter) => { + if (filter === 'enabled') { + return [...result, 'true']; + } + if (filter === 'disabled') { + return [...result, 'false']; + } + return result; + }, []); + return `alert.attributes.enabled:(${enablementFilters.join(' or ')})`; +}; + export const mapFiltersToKql = ({ typesFilter, actionTypesFilter, + ruleExecutionStatusesFilter, ruleStatusesFilter, }: { typesFilter?: string[]; actionTypesFilter?: string[]; - ruleStatusesFilter?: string[]; + ruleExecutionStatusesFilter?: string[]; + ruleStatusesFilter?: RuleStatus[]; }): string[] => { const filters = []; + if (typesFilter && typesFilter.length) { filters.push(`alert.attributes.alertTypeId:(${typesFilter.join(' or ')})`); } @@ -29,8 +47,27 @@ export const mapFiltersToKql = ({ ].join('') ); } + if (ruleExecutionStatusesFilter && ruleExecutionStatusesFilter.length) { + filters.push( + `alert.attributes.executionStatus.status:(${ruleExecutionStatusesFilter.join(' or ')})` + ); + } + if (ruleStatusesFilter && ruleStatusesFilter.length) { - filters.push(`alert.attributes.executionStatus.status:(${ruleStatusesFilter.join(' or ')})`); + const enablementFilter = getEnablementFilter(ruleStatusesFilter); + const snoozedFilter = `(alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)`; + const hasEnablement = + ruleStatusesFilter.includes('enabled') || ruleStatusesFilter.includes('disabled'); + const hasSnoozed = ruleStatusesFilter.includes('snoozed'); + + if (hasEnablement && !hasSnoozed) { + filters.push(`${enablementFilter} and not ${snoozedFilter}`); + } else if (!hasEnablement && hasSnoozed) { + filters.push(snoozedFilter); + } else { + filters.push(`${enablementFilter} or ${snoozedFilter}`); + } } + return filters; }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/rules.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/rules.test.ts index 5f6c6e938a0a7..8adc92738b7c6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/rules.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/rules.test.ts @@ -239,4 +239,101 @@ describe('loadRules', () => { ] `); }); + + test('should call find API with ruleStatusesilter', async () => { + const resolvedValue = { + page: 1, + per_page: 10, + total: 0, + data: [], + }; + http.get.mockResolvedValue(resolvedValue); + + let result = await loadRules({ + http, + ruleStatusesFilter: ['enabled', 'snoozed'], + page: { index: 0, size: 10 }, + }); + expect(result).toEqual({ + page: 1, + perPage: 10, + total: 0, + data: [], + }); + expect(http.get.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + "/internal/alerting/rules/_find", + Object { + "query": Object { + "default_search_operator": "AND", + "filter": "alert.attributes.enabled:(true) or (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)", + "page": 1, + "per_page": 10, + "search": undefined, + "search_fields": undefined, + "sort_field": "name", + "sort_order": "asc", + }, + }, + ] + `); + + result = await loadRules({ + http, + ruleStatusesFilter: ['disabled'], + page: { index: 0, size: 10 }, + }); + expect(result).toEqual({ + page: 1, + perPage: 10, + total: 0, + data: [], + }); + expect(http.get.mock.calls[1]).toMatchInlineSnapshot(` + Array [ + "/internal/alerting/rules/_find", + Object { + "query": Object { + "default_search_operator": "AND", + "filter": "alert.attributes.enabled:(false) and not (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)", + "page": 1, + "per_page": 10, + "search": undefined, + "search_fields": undefined, + "sort_field": "name", + "sort_order": "asc", + }, + }, + ] + `); + + result = await loadRules({ + http, + ruleStatusesFilter: ['enabled', 'disabled', 'snoozed'], + page: { index: 0, size: 10 }, + }); + expect(result).toEqual({ + page: 1, + perPage: 10, + total: 0, + data: [], + }); + expect(http.get.mock.calls[2]).toMatchInlineSnapshot(` + Array [ + "/internal/alerting/rules/_find", + Object { + "query": Object { + "default_search_operator": "AND", + "filter": "alert.attributes.enabled:(true or false) or (alert.attributes.muteAll:true OR alert.attributes.snoozeEndTime > now)", + "page": 1, + "per_page": 10, + "search": undefined, + "search_fields": undefined, + "sort_field": "name", + "sort_order": "asc", + }, + }, + ] + `); + }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/rules.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/rules.ts index 52ba09a5c0adf..bdbdcf2f094b2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/rules.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/rules.ts @@ -7,7 +7,7 @@ import { HttpSetup } from '@kbn/core/public'; import { AsApiContract } from '@kbn/actions-plugin/common'; import { INTERNAL_BASE_ALERTING_API_PATH } from '../../constants'; -import { Rule, Pagination, Sorting } from '../../../types'; +import { Rule, Pagination, Sorting, RuleStatus } from '../../../types'; import { mapFiltersToKql } from './map_filters_to_kql'; import { transformRule } from './common_transformations'; @@ -21,6 +21,7 @@ export async function loadRules({ searchText, typesFilter, actionTypesFilter, + ruleExecutionStatusesFilter, ruleStatusesFilter, sort = { field: 'name', direction: 'asc' }, }: { @@ -29,7 +30,8 @@ export async function loadRules({ searchText?: string; typesFilter?: string[]; actionTypesFilter?: string[]; - ruleStatusesFilter?: string[]; + ruleExecutionStatusesFilter?: string[]; + ruleStatusesFilter?: RuleStatus[]; sort?: Sorting; }): Promise<{ page: number; @@ -37,7 +39,12 @@ export async function loadRules({ total: number; data: Rule[]; }> { - const filters = mapFiltersToKql({ typesFilter, actionTypesFilter, ruleStatusesFilter }); + const filters = mapFiltersToKql({ + typesFilter, + actionTypesFilter, + ruleExecutionStatusesFilter, + ruleStatusesFilter, + }); const res = await http.get< AsApiContract<{ page: number; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/execution_duration_chart.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/execution_duration_chart.tsx index 08fabc3fba2fd..140dae9dc14a5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/execution_duration_chart.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/execution_duration_chart.tsx @@ -38,7 +38,7 @@ const NUM_EXECUTIONS_OPTIONS = [120, 60, 30, 15].map((value) => ({ text: i18n.translate( 'xpack.triggersActionsUI.sections.executionDurationChart.numberOfExecutionsOption', { - defaultMessage: '{value} executions', + defaultMessage: '{value} runs', values: { value, }, @@ -70,7 +70,7 @@ export const ExecutionDurationChart: React.FunctionComponent = ({

@@ -84,7 +84,7 @@ export const ExecutionDurationChart: React.FunctionComponent = ({ aria-label={i18n.translate( 'xpack.triggersActionsUI.sections.executionDurationChart.selectNumberOfExecutionDurationsLabel', { - defaultMessage: 'Select number of executions', + defaultMessage: 'Select number of runs', } )} onChange={onChange} @@ -161,7 +161,7 @@ export const ExecutionDurationChart: React.FunctionComponent = ({

diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/index.tsx index 0e59e3c8ca38f..e41c2a73a5124 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/index.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/index.tsx @@ -32,6 +32,9 @@ export const ActionForm = suspendedComponentWithProps( export const RuleStatusDropdown = suspendedComponentWithProps( lazy(() => import('./rules_list/components/rule_status_dropdown')) ); +export const RuleStatusFilter = suspendedComponentWithProps( + lazy(() => import('./rules_list/components/rule_status_filter')) +); export const RuleTagBadge = suspendedComponentWithProps( lazy(() => import('./rules_list/components/rule_tag_badge')) ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule.tsx index b70eaf20a051d..9d62fc2f8e37a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule.tsx @@ -33,7 +33,7 @@ import { withBulkRuleOperations, } from '../../common/components/with_bulk_rule_api_operations'; import './rule.scss'; -import { getHealthColor } from '../../rules_list/components/rule_status_filter'; +import { getHealthColor } from '../../rules_list/components/rule_execution_status_filter'; import { rulesStatusesTranslationsMapping, ALERT_STATUS_LICENSE_ERROR, @@ -122,7 +122,7 @@ export function RuleComponent({ { id: EVENT_LOG_LIST_TAB, name: i18n.translate('xpack.triggersActionsUI.sections.ruleDetails.rule.eventLogTabText', { - defaultMessage: 'Execution history', + defaultMessage: 'Run history', }), 'data-test-subj': 'eventLogListTab', content: suspendedComponentWithProps( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.tsx index d765fa225ef0c..1bca80a08c936 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.tsx @@ -488,7 +488,7 @@ export const RuleForm = ({ > )} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_execution_status_filter.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_execution_status_filter.tsx new file mode 100644 index 0000000000000..9acb8489fa09a --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_execution_status_filter.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useState } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { + EuiFilterGroup, + EuiPopover, + EuiFilterButton, + EuiFilterSelectItem, + EuiHealth, +} from '@elastic/eui'; +import { RuleExecutionStatuses, RuleExecutionStatusValues } from '@kbn/alerting-plugin/common'; +import { rulesStatusesTranslationsMapping } from '../translations'; + +interface RuleExecutionStatusFilterProps { + selectedStatuses: string[]; + onChange?: (selectedRuleStatusesIds: string[]) => void; +} + +export const RuleExecutionStatusFilter: React.FunctionComponent = ({ + selectedStatuses, + onChange, +}: RuleExecutionStatusFilterProps) => { + const [selectedValues, setSelectedValues] = useState(selectedStatuses); + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + + useEffect(() => { + if (onChange) { + onChange(selectedValues); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [selectedValues]); + + useEffect(() => { + setSelectedValues(selectedStatuses); + }, [selectedStatuses]); + + return ( + + setIsPopoverOpen(false)} + button={ + 0} + numActiveFilters={selectedValues.length} + numFilters={selectedValues.length} + onClick={() => setIsPopoverOpen(!isPopoverOpen)} + data-test-subj="ruleExecutionStatusFilterButton" + > + + + } + > +
+ {[...RuleExecutionStatusValues].sort().map((item: RuleExecutionStatuses) => { + const healthColor = getHealthColor(item); + return ( + { + const isPreviouslyChecked = selectedValues.includes(item); + if (isPreviouslyChecked) { + setSelectedValues(selectedValues.filter((val) => val !== item)); + } else { + setSelectedValues(selectedValues.concat(item)); + } + }} + checked={selectedValues.includes(item) ? 'on' : undefined} + data-test-subj={`ruleExecutionStatus${item}FilterOption`} + > + {rulesStatusesTranslationsMapping[item]} + + ); + })} +
+
+
+ ); +}; + +export function getHealthColor(status: RuleExecutionStatuses) { + switch (status) { + case 'active': + return 'success'; + case 'error': + return 'danger'; + case 'ok': + return 'primary'; + case 'pending': + return 'accent'; + case 'warning': + return 'warning'; + default: + return 'subdued'; + } +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.test.tsx new file mode 100644 index 0000000000000..f1f2957f9cada --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.test.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 from 'react'; +import { mountWithIntl } from '@kbn/test-jest-helpers'; +import { EuiFilterButton, EuiFilterSelectItem } from '@elastic/eui'; +import { RuleStatusFilter } from './rule_status_filter'; + +const onChangeMock = jest.fn(); + +describe('rule_state_filter', () => { + beforeEach(() => { + onChangeMock.mockReset(); + }); + + it('renders correctly', () => { + const wrapper = mountWithIntl( + + ); + + expect(wrapper.find(EuiFilterSelectItem).exists()).toBeFalsy(); + expect(wrapper.find(EuiFilterButton).exists()).toBeTruthy(); + + expect(wrapper.find('.euiNotificationBadge').text()).toEqual('0'); + }); + + it('can open the popover correctly', () => { + const wrapper = mountWithIntl( + + ); + + expect(wrapper.find('[data-test-subj="ruleStateFilterSelect"]').exists()).toBeFalsy(); + + wrapper.find(EuiFilterButton).simulate('click'); + + const statusItems = wrapper.find(EuiFilterSelectItem); + expect(statusItems.length).toEqual(3); + }); + + it('can select statuses', () => { + const wrapper = mountWithIntl( + + ); + + wrapper.find(EuiFilterButton).simulate('click'); + + wrapper.find(EuiFilterSelectItem).at(0).simulate('click'); + expect(onChangeMock).toHaveBeenCalledWith(['enabled']); + + wrapper.setProps({ + selectedStatuses: ['enabled'], + }); + + wrapper.find(EuiFilterSelectItem).at(0).simulate('click'); + expect(onChangeMock).toHaveBeenCalledWith([]); + + wrapper.find(EuiFilterSelectItem).at(1).simulate('click'); + expect(onChangeMock).toHaveBeenCalledWith(['enabled', 'disabled']); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.tsx index cbb1a7f5455da..6d286ec6d09d7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.tsx @@ -4,82 +4,87 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import React, { useEffect, useState } from 'react'; +import React, { useState, useCallback } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { - EuiFilterGroup, - EuiPopover, - EuiFilterButton, - EuiFilterSelectItem, - EuiHealth, -} from '@elastic/eui'; -import { RuleExecutionStatuses, RuleExecutionStatusValues } from '@kbn/alerting-plugin/common'; -import { rulesStatusesTranslationsMapping } from '../translations'; +import { EuiFilterButton, EuiPopover, EuiFilterGroup, EuiFilterSelectItem } from '@elastic/eui'; +import { RuleStatus } from '../../../../types'; + +const statuses: RuleStatus[] = ['enabled', 'disabled', 'snoozed']; + +const optionStyles = { + textTransform: 'capitalize' as const, +}; -interface RuleStatusFilterProps { - selectedStatuses: string[]; - onChange?: (selectedRuleStatusesIds: string[]) => void; +const getOptionDataTestSubj = (status: RuleStatus) => `ruleStatusFilterOption-${status}`; + +export interface RuleStatusFilterProps { + selectedStatuses: RuleStatus[]; + dataTestSubj?: string; + selectDataTestSubj?: string; + buttonDataTestSubj?: string; + optionDataTestSubj?: (status: RuleStatus) => string; + onChange: (selectedStatuses: RuleStatus[]) => void; } -export const RuleStatusFilter: React.FunctionComponent = ({ - selectedStatuses, - onChange, -}: RuleStatusFilterProps) => { - const [selectedValues, setSelectedValues] = useState(selectedStatuses); +export const RuleStatusFilter = (props: RuleStatusFilterProps) => { + const { + selectedStatuses = [], + dataTestSubj = 'ruleStatusFilter', + selectDataTestSubj = 'ruleStatusFilterSelect', + buttonDataTestSubj = 'ruleStatusFilterButton', + optionDataTestSubj = getOptionDataTestSubj, + onChange = () => {}, + } = props; + const [isPopoverOpen, setIsPopoverOpen] = useState(false); - useEffect(() => { - if (onChange) { - onChange(selectedValues); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedValues]); + const onFilterItemClick = useCallback( + (newOption: RuleStatus) => () => { + if (selectedStatuses.includes(newOption)) { + onChange(selectedStatuses.filter((option) => option !== newOption)); + return; + } + onChange([...selectedStatuses, newOption]); + }, + [selectedStatuses, onChange] + ); - useEffect(() => { - setSelectedValues(selectedStatuses); - }, [selectedStatuses]); + const onClick = useCallback(() => { + setIsPopoverOpen((prevIsOpen) => !prevIsOpen); + }, [setIsPopoverOpen]); return ( - + setIsPopoverOpen(false)} button={ 0} - numActiveFilters={selectedValues.length} - numFilters={selectedValues.length} - onClick={() => setIsPopoverOpen(!isPopoverOpen)} - data-test-subj="ruleStatusFilterButton" + hasActiveFilters={selectedStatuses.length > 0} + numActiveFilters={selectedStatuses.length} + numFilters={selectedStatuses.length} + onClick={onClick} > } > -
- {[...RuleExecutionStatusValues].sort().map((item: RuleExecutionStatuses) => { - const healthColor = getHealthColor(item); +
+ {statuses.map((status) => { return ( { - const isPreviouslyChecked = selectedValues.includes(item); - if (isPreviouslyChecked) { - setSelectedValues(selectedValues.filter((val) => val !== item)); - } else { - setSelectedValues(selectedValues.concat(item)); - } - }} - checked={selectedValues.includes(item) ? 'on' : undefined} - data-test-subj={`ruleStatus${item}FilerOption`} + key={status} + style={optionStyles} + data-test-subj={optionDataTestSubj(status)} + onClick={onFilterItemClick(status)} + checked={selectedStatuses.includes(status) ? 'on' : undefined} > - {rulesStatusesTranslationsMapping[item]} + {status} ); })} @@ -89,19 +94,5 @@ export const RuleStatusFilter: React.FunctionComponent = ); }; -export function getHealthColor(status: RuleExecutionStatuses) { - switch (status) { - case 'active': - return 'success'; - case 'error': - return 'danger'; - case 'ok': - return 'primary'; - case 'pending': - return 'accent'; - case 'warning': - return 'warning'; - default: - return 'subdued'; - } -} +// eslint-disable-next-line import/no-default-export +export { RuleStatusFilter as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx index 098bef2b5af47..52c6e2d3ed149 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx @@ -20,6 +20,7 @@ import { parseDuration, } from '@kbn/alerting-plugin/common'; import { getFormattedDuration, getFormattedMilliseconds } from '../../../lib/monitoring_utils'; +import { getIsExperimentalFeatureEnabled } from '../../../../common/get_experimental_features'; import { useKibana } from '../../../../common/lib/kibana'; jest.mock('../../../../common/lib/kibana'); @@ -59,6 +60,9 @@ jest.mock('../../../lib/capabilities', () => ({ hasShowActionsCapability: jest.fn(() => true), hasExecuteActionsCapability: jest.fn(() => true), })); +jest.mock('../../../../common/get_experimental_features', () => ({ + getIsExperimentalFeatureEnabled: jest.fn(), +})); const { loadRules, loadRuleTypes, loadRuleAggregations } = jest.requireMock('../../../lib/rule_api'); const { loadActionTypes, loadAllActions } = jest.requireMock('../../../lib/action_connector_api'); @@ -95,6 +99,10 @@ ruleTypeRegistry.list.mockReturnValue([ruleType]); actionTypeRegistry.list.mockReturnValue([]); const useKibanaMock = useKibana as jest.Mocked; +beforeEach(() => { + (getIsExperimentalFeatureEnabled as jest.Mock).mockImplementation(() => false); +}); + describe('rules_list component empty', () => { let wrapper: ReactWrapper; async function setup() { @@ -459,7 +467,7 @@ describe('rules_list component with items', () => { jest.runAllTimers(); wrapper.update(); - expect(wrapper.find('.euiToolTipPopover').text()).toBe('Start time of the last execution.'); + expect(wrapper.find('.euiToolTipPopover').text()).toBe('Start time of the last run.'); wrapper .find('[data-test-subj="rulesTableCell-lastExecutionDateTooltip"]') @@ -801,6 +809,39 @@ describe('rules_list component with items', () => { 'Warning: 6' ); }); + + it('does not render the status filter if the feature flag is off', async () => { + await setup(); + expect(wrapper.find('[data-test-subj="ruleStatusFilter"]').exists()).toBeFalsy(); + }); + + it('renders the status filter if the experiment is on', async () => { + (getIsExperimentalFeatureEnabled as jest.Mock).mockImplementation(() => true); + await setup(); + expect(wrapper.find('[data-test-subj="ruleStatusFilter"]').exists()).toBeTruthy(); + }); + + it('can filter by rule states', async () => { + (getIsExperimentalFeatureEnabled as jest.Mock).mockImplementation(() => true); + loadRules.mockReset(); + await setup(); + + expect(loadRules.mock.calls[0][0].ruleStatusesFilter).toEqual([]); + + wrapper.find('[data-test-subj="ruleStatusFilterButton"] button').simulate('click'); + + wrapper.find('[data-test-subj="ruleStatusFilterOption-enabled"]').first().simulate('click'); + + expect(loadRules.mock.calls[1][0].ruleStatusesFilter).toEqual(['enabled']); + + wrapper.find('[data-test-subj="ruleStatusFilterOption-snoozed"]').first().simulate('click'); + + expect(loadRules.mock.calls[2][0].ruleStatusesFilter).toEqual(['enabled', 'snoozed']); + + wrapper.find('[data-test-subj="ruleStatusFilterOption-snoozed"]').first().simulate('click'); + + expect(loadRules.mock.calls[3][0].ruleStatusesFilter).toEqual(['enabled']); + }); }); describe('rules_list component empty with show only capability', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx index 9b85334932a99..b1255600b68de 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx @@ -58,6 +58,7 @@ import { RuleTableItem, RuleType, RuleTypeIndex, + RuleStatus, Pagination, Percentiles, TriggersActionsUiConfig, @@ -68,7 +69,7 @@ import { RuleQuickEditButtonsWithApi as RuleQuickEditButtons } from '../../commo import { CollapsedItemActionsWithApi as CollapsedItemActions } from './collapsed_item_actions'; import { TypeFilter } from './type_filter'; import { ActionTypeFilter } from './action_type_filter'; -import { RuleStatusFilter, getHealthColor } from './rule_status_filter'; +import { RuleExecutionStatusFilter, getHealthColor } from './rule_execution_status_filter'; import { loadRules, loadRuleAggregations, @@ -98,6 +99,8 @@ import { RuleDurationFormat } from './rule_duration_format'; import { shouldShowDurationWarning } from '../../../lib/execution_duration_utils'; import { getFormattedSuccessRatio } from '../../../lib/monitoring_utils'; import { triggersActionsUiConfig } from '../../../../common/lib/config_api'; +import { RuleStatusFilter } from './rule_status_filter'; +import { getIsExperimentalFeatureEnabled } from '../../../../common/get_experimental_features'; const ENTER_KEY = 13; @@ -153,7 +156,8 @@ export const RulesList: React.FunctionComponent = () => { const [inputText, setInputText] = useState(); const [typesFilter, setTypesFilter] = useState([]); const [actionTypesFilter, setActionTypesFilter] = useState([]); - const [ruleStatusesFilter, setRuleStatusesFilter] = useState([]); + const [ruleExecutionStatusesFilter, setRuleExecutionStatusesFilter] = useState([]); + const [ruleStatusesFilter, setRuleStatusesFilter] = useState([]); const [ruleFlyoutVisible, setRuleFlyoutVisibility] = useState(false); const [editFlyoutVisible, setEditFlyoutVisibility] = useState(false); const [currentRuleToEdit, setCurrentRuleToEdit] = useState(null); @@ -163,6 +167,8 @@ export const RulesList: React.FunctionComponent = () => { ); const [showErrors, setShowErrors] = useState(false); + const isRuleStatusFilterEnabled = getIsExperimentalFeatureEnabled('ruleStatusFilter'); + useEffect(() => { (async () => { setConfig(await triggersActionsUiConfig({ http })); @@ -225,6 +231,7 @@ export const RulesList: React.FunctionComponent = () => { percentileOptions, JSON.stringify(typesFilter), JSON.stringify(actionTypesFilter), + JSON.stringify(ruleExecutionStatusesFilter), JSON.stringify(ruleStatusesFilter), ]); @@ -284,6 +291,7 @@ export const RulesList: React.FunctionComponent = () => { searchText, typesFilter, actionTypesFilter, + ruleExecutionStatusesFilter, ruleStatusesFilter, sort, }); @@ -302,6 +310,7 @@ export const RulesList: React.FunctionComponent = () => { isEmpty(searchText) && isEmpty(typesFilter) && isEmpty(actionTypesFilter) && + isEmpty(ruleExecutionStatusesFilter) && isEmpty(ruleStatusesFilter) ); @@ -328,6 +337,7 @@ export const RulesList: React.FunctionComponent = () => { searchText, typesFilter, actionTypesFilter, + ruleExecutionStatusesFilter, ruleStatusesFilter, }); if (rulesAggs?.ruleExecutionStatus) { @@ -418,7 +428,7 @@ export const RulesList: React.FunctionComponent = () => { content={i18n.translate( 'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.ruleExecutionPercentileTooltip', { - defaultMessage: `{percentileOrdinal} percentile of this rule's past {sampleLimit} execution durations (mm:ss).`, + defaultMessage: `{percentileOrdinal} percentile of this rule's past {sampleLimit} run durations (mm:ss).`, values: { percentileOrdinal: percentileOrdinals[selectedPercentile!], sampleLimit: MONITORING_HISTORY_LIMIT, @@ -605,7 +615,7 @@ export const RulesList: React.FunctionComponent = () => { content={i18n.translate( 'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.lastExecutionDateTitle', { - defaultMessage: 'Start time of the last execution.', + defaultMessage: 'Start time of the last run.', } )} > @@ -761,7 +771,7 @@ export const RulesList: React.FunctionComponent = () => { content={i18n.translate( 'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.successRatioTitle', { - defaultMessage: 'How often this rule executes successfully.', + defaultMessage: 'How often this rule runs successfully.', } )} > @@ -930,6 +940,15 @@ export const RulesList: React.FunctionComponent = () => { ); }; + const getRuleStatusFilter = () => { + if (isRuleStatusFilterEnabled) { + return [ + , + ]; + } + return []; + }; + const toolsRight = [ { }) )} />, + ...getRuleStatusFilter(), setActionTypesFilter(ids)} />, - setRuleStatusesFilter(ids)} + selectedStatuses={ruleExecutionStatusesFilter} + onChange={(ids: string[]) => setRuleExecutionStatusesFilter(ids)} />, { }} />   - setRuleStatusesFilter(['error'])}> + setRuleExecutionStatusesFilter(['error'])}> { rulesListDatagrid: true, internalAlertsTable: true, rulesDetailLogs: true, + ruleStatusFilter: true, internalShareableComponentsSandbox: true, }, }); @@ -38,6 +39,10 @@ describe('getIsExperimentalFeatureEnabled', () => { expect(result).toEqual(true); + result = getIsExperimentalFeatureEnabled('ruleStatusFilter'); + + expect(result).toEqual(true); + expect(() => getIsExperimentalFeatureEnabled('doesNotExist' as any)).toThrowError( `Invalid enable value doesNotExist. Allowed values are: ${allowedExperimentalValueKeys.join( ', ' diff --git a/x-pack/plugins/triggers_actions_ui/public/common/get_rule_status_filter.tsx b/x-pack/plugins/triggers_actions_ui/public/common/get_rule_status_filter.tsx new file mode 100644 index 0000000000000..77ac3fc51d703 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/common/get_rule_status_filter.tsx @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RuleStatusFilter } from '../application/sections'; +import type { RuleStatusFilterProps } from '../application/sections/rules_list/components/rule_status_filter'; + +export const getRuleStatusFilterLazy = (props: RuleStatusFilterProps) => { + return ; +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/common/types.ts b/x-pack/plugins/triggers_actions_ui/public/common/types.ts index 4aca07ad5482e..610962706661a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/types.ts @@ -24,3 +24,5 @@ export interface GroupByType { value: string; validNormalizedTypes: string[]; } + +export type { RuleStatus } from '../types'; diff --git a/x-pack/plugins/triggers_actions_ui/public/index.ts b/x-pack/plugins/triggers_actions_ui/public/index.ts index 1e109b96ae5c9..82923205666f6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/index.ts @@ -18,6 +18,7 @@ export type { RuleType, RuleTypeIndex, RuleTypeModel, + RuleStatus, ActionType, ActionTypeRegistryContract, RuleTypeRegistryContract, diff --git a/x-pack/plugins/triggers_actions_ui/public/mocks.ts b/x-pack/plugins/triggers_actions_ui/public/mocks.ts index 959d959ef855a..cb79a1509a6c1 100644 --- a/x-pack/plugins/triggers_actions_ui/public/mocks.ts +++ b/x-pack/plugins/triggers_actions_ui/public/mocks.ts @@ -26,6 +26,7 @@ import { } from './types'; import { getAlertsTableLazy } from './common/get_alerts_table'; import { getRuleStatusDropdownLazy } from './common/get_rule_status_dropdown'; +import { getRuleStatusFilterLazy } from './common/get_rule_status_filter'; import { getRuleTagBadgeLazy } from './common/get_rule_tag_badge'; function createStartMock(): TriggersAndActionsUIPublicPluginStart { @@ -65,6 +66,9 @@ function createStartMock(): TriggersAndActionsUIPublicPluginStart { getRuleStatusDropdown: (props) => { return getRuleStatusDropdownLazy(props); }, + getRuleStatusFilter: (props) => { + return getRuleStatusFilterLazy(props); + }, getRuleTagBadge: (props) => { return getRuleTagBadgeLazy(props); }, diff --git a/x-pack/plugins/triggers_actions_ui/public/plugin.ts b/x-pack/plugins/triggers_actions_ui/public/plugin.ts index e2c3be96271b9..1d9c3c07e44ca 100644 --- a/x-pack/plugins/triggers_actions_ui/public/plugin.ts +++ b/x-pack/plugins/triggers_actions_ui/public/plugin.ts @@ -31,6 +31,7 @@ import { getAddAlertFlyoutLazy } from './common/get_add_alert_flyout'; import { getEditAlertFlyoutLazy } from './common/get_edit_alert_flyout'; import { getAlertsTableLazy } from './common/get_alerts_table'; import { getRuleStatusDropdownLazy } from './common/get_rule_status_dropdown'; +import { getRuleStatusFilterLazy } from './common/get_rule_status_filter'; import { getRuleTagBadgeLazy } from './common/get_rule_tag_badge'; import { ExperimentalFeaturesService } from './common/experimental_features_service'; import { @@ -47,6 +48,7 @@ import type { ConnectorEditFlyoutProps, AlertsTableProps, RuleStatusDropdownProps, + RuleStatusFilterProps, RuleTagBadgeProps, AlertsTableConfigurationRegistry, } from './types'; @@ -78,6 +80,7 @@ export interface TriggersAndActionsUIPublicPluginStart { ) => ReactElement; getAlertsTable: (props: AlertsTableProps) => ReactElement; getRuleStatusDropdown: (props: RuleStatusDropdownProps) => ReactElement; + getRuleStatusFilter: (props: RuleStatusFilterProps) => ReactElement; getRuleTagBadge: (props: RuleTagBadgeProps) => ReactElement; } @@ -252,6 +255,9 @@ export class Plugin getRuleStatusDropdown: (props: RuleStatusDropdownProps) => { return getRuleStatusDropdownLazy(props); }, + getRuleStatusFilter: (props: RuleStatusFilterProps) => { + return getRuleStatusFilterLazy(props); + }, getRuleTagBadge: (props: RuleTagBadgeProps) => { return getRuleTagBadgeLazy(props); }, diff --git a/x-pack/plugins/triggers_actions_ui/public/types.ts b/x-pack/plugins/triggers_actions_ui/public/types.ts index c59692ebad271..25efbfb6ecc38 100644 --- a/x-pack/plugins/triggers_actions_ui/public/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/types.ts @@ -48,7 +48,8 @@ import { import { RuleRegistrySearchRequestPagination } from '@kbn/rule-registry-plugin/common'; import { TypeRegistry } from './application/type_registry'; import type { ComponentOpts as RuleStatusDropdownProps } from './application/sections/rules_list/components/rule_status_dropdown'; -import { RuleTagBadgeProps } from './application/sections/rules_list/components/rule_tag_badge'; +import type { RuleStatusFilterProps } from './application/sections/rules_list/components/rule_status_filter'; +import type { RuleTagBadgeProps } from './application/sections/rules_list/components/rule_tag_badge'; // In Triggers and Actions we treat all `Alert`s as `SanitizedRule` // so the `Params` is a black-box of Record @@ -81,6 +82,7 @@ export type { ResolvedRule, SanitizedRule, RuleStatusDropdownProps, + RuleStatusFilterProps, RuleTagBadgeProps, }; export type { ActionType, AsApiContract }; @@ -429,3 +431,5 @@ export interface AlertsTableConfigurationRegistry { id: string; columns: EuiDataGridColumn[]; } + +export type RuleStatus = 'enabled' | 'disabled' | 'snoozed'; diff --git a/x-pack/scripts/functional_tests.js b/x-pack/scripts/functional_tests.js deleted file mode 100644 index ee99785aa8fad..0000000000000 --- a/x-pack/scripts/functional_tests.js +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../src/setup_node_env'); -require('@kbn/test').runTestsCli([ - require.resolve('../test/functional/config.ccs.ts'), - require.resolve('../test/functional/config.js'), - require.resolve('../test/functional_basic/config.ts'), - require.resolve('../test/security_solution_endpoint/config.ts'), - require.resolve('../test/plugin_functional/config.ts'), - require.resolve('../test/functional_with_es_ssl/config.ts'), - require.resolve('../test/functional/config_security_basic.ts'), - require.resolve('../test/reporting_functional/reporting_and_security.config.ts'), - require.resolve('../test/reporting_functional/reporting_without_security.config.ts'), - require.resolve('../test/reporting_functional/reporting_and_deprecated_security.config.ts'), - require.resolve('../test/security_functional/login_selector.config.ts'), - require.resolve('../test/security_functional/oidc.config.ts'), - require.resolve('../test/security_functional/saml.config.ts'), - require.resolve('../test/functional_embedded/config.ts'), - require.resolve('../test/functional_cors/config.ts'), - require.resolve('../test/functional_enterprise_search/without_host_configured.config.ts'), - require.resolve('../test/saved_object_tagging/functional/config.ts'), - require.resolve('../test/usage_collection/config.ts'), - require.resolve('../test/fleet_functional/config.ts'), - require.resolve('../test/functional_synthetics/config.js'), - require.resolve('../test/api_integration/config_security_basic.ts'), - require.resolve('../test/api_integration/config_security_trial.ts'), - require.resolve('../test/api_integration/config.ts'), - require.resolve('../test/api_integration_basic/config.ts'), - require.resolve('../test/alerting_api_integration/basic/config.ts'), - require.resolve('../test/alerting_api_integration/spaces_only/config.ts'), - require.resolve('../test/alerting_api_integration/security_and_spaces/config.ts'), - require.resolve('../test/cases_api_integration/security_and_spaces/config_basic.ts'), - require.resolve('../test/cases_api_integration/security_and_spaces/config_trial.ts'), - require.resolve('../test/cases_api_integration/spaces_only/config.ts'), - require.resolve('../test/apm_api_integration/basic/config.ts'), - require.resolve('../test/apm_api_integration/trial/config.ts'), - require.resolve('../test/apm_api_integration/rules/config.ts'), - require.resolve('../test/detection_engine_api_integration/security_and_spaces/config.ts'), - require.resolve('../test/detection_engine_api_integration/basic/config.ts'), - require.resolve('../test/lists_api_integration/security_and_spaces/config.ts'), - require.resolve('../test/plugin_api_integration/config.ts'), - require.resolve('../test/rule_registry/security_and_spaces/config_basic.ts'), - require.resolve('../test/rule_registry/security_and_spaces/config_trial.ts'), - require.resolve('../test/rule_registry/spaces_only/config_basic.ts'), - require.resolve('../test/rule_registry/spaces_only/config_trial.ts'), - require.resolve('../test/security_api_integration/saml.config.ts'), - require.resolve('../test/security_api_integration/session_idle.config.ts'), - require.resolve('../test/security_api_integration/session_invalidate.config.ts'), - require.resolve('../test/security_api_integration/session_lifespan.config.ts'), - require.resolve('../test/security_api_integration/login_selector.config.ts'), - require.resolve('../test/security_api_integration/audit.config.ts'), - require.resolve('../test/security_api_integration/http_bearer.config.ts'), - require.resolve('../test/security_api_integration/http_no_auth_providers.config.ts'), - require.resolve('../test/security_api_integration/kerberos.config.ts'), - require.resolve('../test/security_api_integration/kerberos_anonymous_access.config.ts'), - require.resolve('../test/security_api_integration/pki.config.ts'), - require.resolve('../test/security_api_integration/oidc.config.ts'), - require.resolve('../test/security_api_integration/oidc_implicit_flow.config.ts'), - require.resolve('../test/security_api_integration/token.config.ts'), - require.resolve('../test/security_api_integration/anonymous.config.ts'), - require.resolve('../test/security_api_integration/anonymous_es_anonymous.config.ts'), - require.resolve('../test/observability_api_integration/basic/config.ts'), - require.resolve('../test/observability_api_integration/trial/config.ts'), - require.resolve('../test/observability_functional/with_rac_write.config.ts'), - require.resolve('../test/encrypted_saved_objects_api_integration/config.ts'), - require.resolve('../test/spaces_api_integration/spaces_only/config.ts'), - require.resolve('../test/spaces_api_integration/security_and_spaces/config_trial.ts'), - require.resolve('../test/spaces_api_integration/security_and_spaces/config_basic.ts'), - require.resolve('../test/saved_object_api_integration/security_and_spaces/config_trial.ts'), - require.resolve('../test/saved_object_api_integration/security_and_spaces/config_basic.ts'), - require.resolve('../test/saved_object_api_integration/spaces_only/config.ts'), - // TODO: Enable once RBAC timeline search strategy - // tests updated - // require.resolve('../test/timeline/security_and_spaces/config_basic.ts'), - require.resolve('../test/timeline/security_and_spaces/config_trial.ts'), - require.resolve('../test/ui_capabilities/security_and_spaces/config.ts'), - require.resolve('../test/ui_capabilities/spaces_only/config.ts'), - require.resolve('../test/upgrade_assistant_integration/config.js'), - require.resolve('../test/licensing_plugin/config.ts'), - require.resolve('../test/licensing_plugin/config.public.ts'), - require.resolve('../test/endpoint_api_integration_no_ingest/config.ts'), - require.resolve('../test/reporting_api_integration/reporting_and_security.config.ts'), - require.resolve('../test/reporting_api_integration/reporting_without_security.config.ts'), - require.resolve('../test/security_solution_endpoint_api_int/config.ts'), - require.resolve('../test/fleet_api_integration/config.ts'), - require.resolve('../test/search_sessions_integration/config.ts'), - require.resolve('../test/saved_object_tagging/api_integration/security_and_spaces/config.ts'), - require.resolve('../test/saved_object_tagging/api_integration/tagging_api/config.ts'), - require.resolve('../test/examples/config.ts'), - require.resolve('../test/functional_execution_context/config.ts'), -]); diff --git a/x-pack/scripts/functional_tests_server.js b/x-pack/scripts/functional_tests_server.js index 946f7ea3836a6..329fea019221b 100755 --- a/x-pack/scripts/functional_tests_server.js +++ b/x-pack/scripts/functional_tests_server.js @@ -8,4 +8,4 @@ process.env.ALLOW_PERFORMANCE_HOOKS_IN_TASK_MANAGER = true; require('../../src/setup_node_env'); -require('@kbn/test').startServersCli(require.resolve('../test/functional/config.js')); +require('@kbn/test').startServersCli(require.resolve('../test/functional/config.base.js')); diff --git a/x-pack/test/accessibility/apps/advanced_settings.ts b/x-pack/test/accessibility/apps/advanced_settings.ts index 6f2dc78a7b35b..6c931f0a0e5a1 100644 --- a/x-pack/test/accessibility/apps/advanced_settings.ts +++ b/x-pack/test/accessibility/apps/advanced_settings.ts @@ -13,7 +13,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const toasts = getService('toasts'); - describe('Stack Management -Advanced Settings', () => { + describe('Stack Management -Advanced Settings Accessibility', () => { // click on Management > Advanced settings it('click on advanced settings ', async () => { await PageObjects.common.navigateToUrl('management', 'kibana/settings', { diff --git a/x-pack/test/accessibility/apps/canvas.ts b/x-pack/test/accessibility/apps/canvas.ts index 609c8bf5bb1ae..d9508e75bdf27 100644 --- a/x-pack/test/accessibility/apps/canvas.ts +++ b/x-pack/test/accessibility/apps/canvas.ts @@ -14,7 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const { common } = getPageObjects(['common']); - describe('Canvas', () => { + describe('Canvas Accessibility', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/canvas/default'); await common.navigateToApp('canvas'); diff --git a/x-pack/test/accessibility/apps/dashboard_edit_panel.ts b/x-pack/test/accessibility/apps/dashboard_edit_panel.ts index 5624a5f25db2f..20b72e142f5c7 100644 --- a/x-pack/test/accessibility/apps/dashboard_edit_panel.ts +++ b/x-pack/test/accessibility/apps/dashboard_edit_panel.ts @@ -20,7 +20,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PANEL_TITLE = 'Visualization PieChart'; - describe('Dashboard Edit Panel', () => { + describe('Dashboard Edit Panel Accessibility', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/dashboard/drilldowns'); await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); diff --git a/x-pack/test/accessibility/apps/enterprise_search.ts b/x-pack/test/accessibility/apps/enterprise_search.ts index aa6910842b5eb..0a1a5d68d9621 100644 --- a/x-pack/test/accessibility/apps/enterprise_search.ts +++ b/x-pack/test/accessibility/apps/enterprise_search.ts @@ -14,7 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const { common } = getPageObjects(['common']); - describe('Enterprise Search', () => { + describe('Enterprise Search Accessibility', () => { // NOTE: These accessibility tests currently only run against Enterprise Search in Kibana // without a sidecar Enterprise Search service/host configured, and as such only test // the basic setup guides and not the full application(s) diff --git a/x-pack/test/accessibility/apps/grok_debugger.ts b/x-pack/test/accessibility/apps/grok_debugger.ts index ecb62ffd53177..4f40696bb0eb6 100644 --- a/x-pack/test/accessibility/apps/grok_debugger.ts +++ b/x-pack/test/accessibility/apps/grok_debugger.ts @@ -13,7 +13,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const grokDebugger = getService('grokDebugger'); // this test is failing as there is a violation https://github.com/elastic/kibana/issues/62102 - describe.skip('Dev tools grok debugger', () => { + describe.skip('Dev tools grok debugger Accessibility', () => { before(async () => { await PageObjects.common.navigateToApp('grokDebugger'); await grokDebugger.assertExists(); diff --git a/x-pack/test/accessibility/apps/home.ts b/x-pack/test/accessibility/apps/home.ts index 61297859c29f8..544a32843f7f3 100644 --- a/x-pack/test/accessibility/apps/home.ts +++ b/x-pack/test/accessibility/apps/home.ts @@ -13,7 +13,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const find = getService('find'); - describe('Kibana Home', () => { + describe('Kibana Home Accessibility', () => { before(async () => { await common.navigateToApp('home'); }); diff --git a/x-pack/test/accessibility/apps/index_lifecycle_management.ts b/x-pack/test/accessibility/apps/index_lifecycle_management.ts index 6cec8d1cb891a..fc3ec1ff5cf81 100644 --- a/x-pack/test/accessibility/apps/index_lifecycle_management.ts +++ b/x-pack/test/accessibility/apps/index_lifecycle_management.ts @@ -63,14 +63,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { throw new Error(`Could not find ${policyName} in policy table`); }; - describe('Index Lifecycle Management', async () => { + describe('Index Lifecycle Management Accessibility', async () => { before(async () => { await esClient.snapshot.createRepository({ name: REPO_NAME, body: { type: 'fs', settings: { - // use one of the values defined in path.repo in test/functional/config.js + // use one of the values defined in path.repo in test/functional/config.base.js location: '/tmp/', }, }, diff --git a/x-pack/test/accessibility/apps/ingest_node_pipelines.ts b/x-pack/test/accessibility/apps/ingest_node_pipelines.ts index a09a07bb01267..4bbd9cde06d2d 100644 --- a/x-pack/test/accessibility/apps/ingest_node_pipelines.ts +++ b/x-pack/test/accessibility/apps/ingest_node_pipelines.ts @@ -14,7 +14,7 @@ export default function ({ getService, getPageObjects }: any) { const log = getService('log'); const a11y = getService('a11y'); /* this is the wrapping service around axe */ - describe('Ingest Pipelines', async () => { + describe('Ingest Pipelines Accessibility', async () => { before(async () => { await putSamplePipeline(esClient); await common.navigateToApp('ingestPipelines'); diff --git a/x-pack/test/accessibility/apps/kibana_overview.ts b/x-pack/test/accessibility/apps/kibana_overview.ts index 9d21f08a900cc..19af9c2828d35 100644 --- a/x-pack/test/accessibility/apps/kibana_overview.ts +++ b/x-pack/test/accessibility/apps/kibana_overview.ts @@ -11,7 +11,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'home']); const a11y = getService('a11y'); - describe('Kibana overview', () => { + describe('Kibana overview Accessibility', () => { const esArchiver = getService('esArchiver'); before(async () => { diff --git a/x-pack/test/accessibility/apps/lens.ts b/x-pack/test/accessibility/apps/lens.ts index 8a46d662a61cf..18459b56c0542 100644 --- a/x-pack/test/accessibility/apps/lens.ts +++ b/x-pack/test/accessibility/apps/lens.ts @@ -15,7 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const listingTable = getService('listingTable'); const kibanaServer = getService('kibanaServer'); - describe('Lens', () => { + describe('Lens Accessibility', () => { const lensChartName = 'MyLensChart'; before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/logstash_functional'); diff --git a/x-pack/test/accessibility/apps/license_management.ts b/x-pack/test/accessibility/apps/license_management.ts index 891a682e653ba..7693ebb197ff1 100644 --- a/x-pack/test/accessibility/apps/license_management.ts +++ b/x-pack/test/accessibility/apps/license_management.ts @@ -12,7 +12,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const a11y = getService('a11y'); const testSubjects = getService('testSubjects'); - describe('License Management page a11y tests', () => { + describe('License Management page Accessibility', () => { before(async () => { await PageObjects.common.navigateToApp('licenseManagement'); }); diff --git a/x-pack/test/accessibility/apps/login_page.ts b/x-pack/test/accessibility/apps/login_page.ts index 154517d09502e..6463e63fb2e49 100644 --- a/x-pack/test/accessibility/apps/login_page.ts +++ b/x-pack/test/accessibility/apps/login_page.ts @@ -14,8 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const PageObjects = getPageObjects(['common', 'security']); - // Failing: See https://github.com/elastic/kibana/issues/96372 - describe('Security', () => { + describe('Security Accessibility', () => { describe('Login Page', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/empty_kibana'); diff --git a/x-pack/test/accessibility/apps/maps.ts b/x-pack/test/accessibility/apps/maps.ts index c5b824c330829..0e4142e6ade60 100644 --- a/x-pack/test/accessibility/apps/maps.ts +++ b/x-pack/test/accessibility/apps/maps.ts @@ -13,7 +13,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const PageObjects = getPageObjects(['common', 'settings', 'header', 'home', 'maps']); - describe('Maps app meets ally validations', () => { + describe('Maps app Accessibility', () => { before(async () => { await PageObjects.common.navigateToUrl('home', '/tutorial_directory/sampleData', { useActualUrl: true, diff --git a/x-pack/test/accessibility/apps/ml.ts b/x-pack/test/accessibility/apps/ml.ts index fd05d2af07747..2b99b665daced 100644 --- a/x-pack/test/accessibility/apps/ml.ts +++ b/x-pack/test/accessibility/apps/ml.ts @@ -5,15 +5,13 @@ * 2.0. */ -import path from 'path'; - import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const a11y = getService('a11y'); const ml = getService('ml'); - describe('ml', () => { + describe('ml Accessibility', () => { const esArchiver = getService('esArchiver'); before(async () => { @@ -79,16 +77,8 @@ export default function ({ getService }: FtrProviderContext) { const dfaJobType = 'outlier_detection'; const dfaJobId = `ihp_ally_${Date.now()}`; - const uploadFilePath = path.join( - __dirname, - '..', - '..', - 'functional', - 'apps', - 'ml', - 'data_visualizer', - 'files_to_import', - 'artificial_server_log' + const uploadFilePath = require.resolve( + '../../functional/apps/ml/data_visualizer/files_to_import/artificial_server_log' ); before(async () => { @@ -261,8 +251,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsCreation.selectJobType(dfaJobType); await ml.testExecution.logTestStep('displays the source data preview'); await ml.dataFrameAnalyticsCreation.assertSourceDataPreviewExists(); - await ml.testExecution.logTestStep('enables the source data preview histogram charts'); - await ml.dataFrameAnalyticsCreation.enableSourceDataPreviewHistogramCharts(true); + await ml.dataFrameAnalyticsCreation.assertSourceDataPreviewHistogramChartEnabled(true); await ml.testExecution.logTestStep('displays the include fields selection'); await ml.dataFrameAnalyticsCreation.assertIncludeFieldsSelectionExists(); await a11y.testAppSnapshot(); diff --git a/x-pack/test/accessibility/apps/ml_embeddables_in_dashboard.ts b/x-pack/test/accessibility/apps/ml_embeddables_in_dashboard.ts index 9532e8e365655..8f8bc67304c0d 100644 --- a/x-pack/test/accessibility/apps/ml_embeddables_in_dashboard.ts +++ b/x-pack/test/accessibility/apps/ml_embeddables_in_dashboard.ts @@ -60,7 +60,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'timePicker', 'dashboard']); const a11y = getService('a11y'); /* this is the wrapping service around axe */ - describe('machine learning embeddables anomaly charts', function () { + describe('machine learning embeddables anomaly charts Accessibility', function () { before(async () => { await ml.securityCommon.createMlRoles(); await ml.securityCommon.createMlUsers(); diff --git a/x-pack/test/accessibility/apps/painless_lab.ts b/x-pack/test/accessibility/apps/painless_lab.ts index c25930941b5eb..a0a4712dbe4e3 100644 --- a/x-pack/test/accessibility/apps/painless_lab.ts +++ b/x-pack/test/accessibility/apps/painless_lab.ts @@ -14,7 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const a11y = getService('a11y'); const retry = getService('retry'); - describe('Accessibility Painless Lab Editor', () => { + describe('Accessibility Painless Lab Editor Accessibility', () => { before(async () => { await PageObjects.common.navigateToApp('painlessLab'); }); diff --git a/x-pack/test/accessibility/apps/remote_clusters.ts b/x-pack/test/accessibility/apps/remote_clusters.ts index 67c85eda60a4a..deb0e4a090b8c 100644 --- a/x-pack/test/accessibility/apps/remote_clusters.ts +++ b/x-pack/test/accessibility/apps/remote_clusters.ts @@ -79,7 +79,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const a11y = getService('a11y'); const retry = getService('retry'); - describe('Remote Clusters', () => { + describe('Remote Clusters Accessibility', () => { beforeEach(async () => { await PageObjects.common.navigateToApp('remoteClusters'); }); diff --git a/x-pack/test/accessibility/apps/reporting.ts b/x-pack/test/accessibility/apps/reporting.ts index c6a6571cc0ff6..f1ac0770c9587 100644 --- a/x-pack/test/accessibility/apps/reporting.ts +++ b/x-pack/test/accessibility/apps/reporting.ts @@ -16,7 +16,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const security = getService('security'); const log = getService('log'); - describe('Reporting', () => { + describe('Reporting Accessibility', () => { const createReportingUser = async () => { await security.user.create(reporting.REPORTING_USER_USERNAME, { password: reporting.REPORTING_USER_PASSWORD, diff --git a/x-pack/test/accessibility/apps/roles.ts b/x-pack/test/accessibility/apps/roles.ts index 3c40e664d7da2..5369dced427fa 100644 --- a/x-pack/test/accessibility/apps/roles.ts +++ b/x-pack/test/accessibility/apps/roles.ts @@ -17,7 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const kibanaServer = getService('kibanaServer'); - describe('Kibana roles page a11y tests', () => { + describe('Kibana roles page Accessibility', () => { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.uiSettings.update({ diff --git a/x-pack/test/accessibility/apps/search_profiler.ts b/x-pack/test/accessibility/apps/search_profiler.ts index 47909662fb132..30043f8f4157f 100644 --- a/x-pack/test/accessibility/apps/search_profiler.ts +++ b/x-pack/test/accessibility/apps/search_profiler.ts @@ -15,7 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const a11y = getService('a11y'); const esArchiver = getService('esArchiver'); - describe('Accessibility Search Profiler Editor', () => { + describe('Search Profiler Editor Accessibility', () => { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await PageObjects.common.navigateToApp('searchProfiler'); diff --git a/x-pack/test/accessibility/apps/search_sessions.ts b/x-pack/test/accessibility/apps/search_sessions.ts index 30bef9086a4b6..42a2f387612ac 100644 --- a/x-pack/test/accessibility/apps/search_sessions.ts +++ b/x-pack/test/accessibility/apps/search_sessions.ts @@ -15,7 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const find = getService('find'); const esArchiver = getService('esArchiver'); - describe('Search sessions a11y tests', () => { + describe('Search sessions Accessibility', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/data/search_sessions'); await PageObjects.searchSessionsManagement.goTo(); diff --git a/x-pack/test/accessibility/apps/security_solution.ts b/x-pack/test/accessibility/apps/security_solution.ts index 8014e03152b17..ef930f093eb4a 100644 --- a/x-pack/test/accessibility/apps/security_solution.ts +++ b/x-pack/test/accessibility/apps/security_solution.ts @@ -15,7 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); // FLAKY: https://github.com/elastic/kibana/issues/95707 - describe.skip('Security Solution', () => { + describe.skip('Security Solution Accessibility', () => { before(async () => { await security.testUser.setRoles(['superuser'], { skipBrowserRefresh: true }); await common.navigateToApp('security'); diff --git a/x-pack/test/accessibility/apps/spaces.ts b/x-pack/test/accessibility/apps/spaces.ts index 567f958f5f8a4..38b34054911f6 100644 --- a/x-pack/test/accessibility/apps/spaces.ts +++ b/x-pack/test/accessibility/apps/spaces.ts @@ -18,7 +18,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const toasts = getService('toasts'); - describe('Kibana spaces page meets a11y validations', () => { + describe('Kibana Spaces Accessibility', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/empty_kibana'); await PageObjects.common.navigateToApp('home'); diff --git a/x-pack/test/accessibility/apps/tags.ts b/x-pack/test/accessibility/apps/tags.ts index 8174c8fa8c06b..da51f2f0535e2 100644 --- a/x-pack/test/accessibility/apps/tags.ts +++ b/x-pack/test/accessibility/apps/tags.ts @@ -16,7 +16,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const toasts = getService('toasts'); - describe('Kibana tags page meets a11y validations', () => { + describe('Kibana Tags Page Accessibility', () => { before(async () => { await PageObjects.common.navigateToUrl('home', '/tutorial_directory/sampleData', { useActualUrl: true, diff --git a/x-pack/test/accessibility/apps/transform.ts b/x-pack/test/accessibility/apps/transform.ts index 59f19471490b8..fa54ea4ad6766 100644 --- a/x-pack/test/accessibility/apps/transform.ts +++ b/x-pack/test/accessibility/apps/transform.ts @@ -11,7 +11,7 @@ export default function ({ getService }: FtrProviderContext) { const a11y = getService('a11y'); const transform = getService('transform'); - describe('transform', () => { + describe('transform Accessibility', () => { const esArchiver = getService('esArchiver'); before(async () => { diff --git a/x-pack/test/accessibility/apps/upgrade_assistant.ts b/x-pack/test/accessibility/apps/upgrade_assistant.ts index 1f7fd2a654bca..fffb6e684ba4a 100644 --- a/x-pack/test/accessibility/apps/upgrade_assistant.ts +++ b/x-pack/test/accessibility/apps/upgrade_assistant.ts @@ -53,7 +53,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const es = getService('es'); const log = getService('log'); - describe.skip('Upgrade Assistant', () => { + describe.skip('Upgrade Assistant Accessibility', () => { before(async () => { await PageObjects.upgradeAssistant.navigateToPage(); diff --git a/x-pack/test/accessibility/apps/uptime.ts b/x-pack/test/accessibility/apps/uptime.ts index 41664c5920b82..49243c37fe730 100644 --- a/x-pack/test/accessibility/apps/uptime.ts +++ b/x-pack/test/accessibility/apps/uptime.ts @@ -19,7 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const es = getService('es'); const toasts = getService('toasts'); - describe('uptime', () => { + describe('uptime Accessibility', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/uptime/blank'); await makeChecks(es, A11Y_TEST_MONITOR_ID, 150, 1, 1000, { diff --git a/x-pack/test/accessibility/apps/users.ts b/x-pack/test/accessibility/apps/users.ts index 8682cc8f0a884..5833a19580c24 100644 --- a/x-pack/test/accessibility/apps/users.ts +++ b/x-pack/test/accessibility/apps/users.ts @@ -17,7 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const find = getService('find'); const retry = getService('retry'); - describe('Kibana users page a11y tests', () => { + describe('Kibana users Accessibility', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/empty_kibana'); await PageObjects.security.clickElasticsearchUsers(); diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts index e85b8a9ef17d8..30c130df23a15 100644 --- a/x-pack/test/accessibility/config.ts +++ b/x-pack/test/accessibility/config.ts @@ -10,7 +10,7 @@ import { services } from './services'; import { pageObjects } from './page_objects'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile(require.resolve('../functional/config')); + const functionalConfig = await readConfigFile(require.resolve('../functional/config.base.js')); return { ...functionalConfig.getAll(), diff --git a/x-pack/test/alerting_api_integration/basic/tests/index.ts b/x-pack/test/alerting_api_integration/basic/tests/index.ts index 6ddb09b1c666e..ba6ebbe6a944e 100644 --- a/x-pack/test/alerting_api_integration/basic/tests/index.ts +++ b/x-pack/test/alerting_api_integration/basic/tests/index.ts @@ -13,8 +13,6 @@ export default function alertingApiIntegrationTests({ getService, }: FtrProviderContext) { describe('alerting api integration basic license', function () { - this.tags('ciGroup13'); - loadTestFile(require.resolve('./actions')); loadTestFile(require.resolve('./alerts')); }); diff --git a/x-pack/test/alerting_api_integration/common/config.ts b/x-pack/test/alerting_api_integration/common/config.ts index 14039ad3360a0..ffdf0c09ad216 100644 --- a/x-pack/test/alerting_api_integration/common/config.ts +++ b/x-pack/test/alerting_api_integration/common/config.ts @@ -25,6 +25,7 @@ interface CreateTestConfigOptions { customizeLocalHostSsl?: boolean; rejectUnauthorized?: boolean; // legacy emailDomainsAllowed?: string[]; + testFiles?: string[]; } // test.not-enabled is specifically not enabled @@ -64,6 +65,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) customizeLocalHostSsl = false, rejectUnauthorized = true, // legacy emailDomainsAllowed = undefined, + testFiles = undefined, } = options; return async ({ readConfigFile }: FtrConfigProviderContext) => { @@ -139,7 +141,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) : []; return { - testFiles: [require.resolve(`../${name}/tests/`)], + testFiles: testFiles ? testFiles : [require.resolve(`../${name}/tests/`)], servers, services, junit: { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/config.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/config.ts similarity index 82% rename from x-pack/test/alerting_api_integration/security_and_spaces/config.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/config.ts index 314f65c167048..9b90a4c18fdf0 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/config.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { createTestConfig } from '../common/config'; +import { createTestConfig } from '../../common/config'; // eslint-disable-next-line import/no-default-export export default createTestConfig('security_and_spaces', { @@ -14,4 +14,5 @@ export default createTestConfig('security_and_spaces', { ssl: true, enableActionsProxy: true, publicBaseUrl: true, + testFiles: [require.resolve('./tests')], }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/create.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/create.ts similarity index 99% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/create.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/create.ts index 57ba6e3863576..e601c6ee15ec7 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/create.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/create.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; +import { UserAtSpaceScenarios } from '../../../scenarios'; import { checkAAD, getTestRuleData, @@ -15,8 +15,8 @@ import { ObjectRemover, getProducerUnauthorizedErrorMessage, TaskManagerDoc, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function createAlertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/delete.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/delete.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/delete.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/delete.ts index 56c50f035b10e..2b6086cf38d92 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/delete.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/delete.ts @@ -6,15 +6,15 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; +import { UserAtSpaceScenarios } from '../../../scenarios'; import { getUrlPrefix, getTestRuleData, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, ObjectRemover, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function createDeleteTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/disable.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/disable.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/disable.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/disable.ts index 8a4266eb8dc8a..864de743ea343 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/disable.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/disable.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -16,7 +16,7 @@ import { ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createDisableAlertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/enable.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/enable.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/enable.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/enable.ts index 6d667eff24072..0aba468174cff 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/enable.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/enable.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -17,7 +17,7 @@ import { getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, TaskManagerDoc, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createEnableAlertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/execution_status.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/execution_status.ts similarity index 95% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/execution_status.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/execution_status.ts index 4e61fd6593113..122353f444536 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/execution_status.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/execution_status.ts @@ -7,9 +7,9 @@ import expect from '@kbn/expect'; import { RuleExecutionStatusErrorReasons } from '@kbn/alerting-plugin/common'; -import { Spaces } from '../../scenarios'; -import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { Spaces } from '../../../scenarios'; +import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function executionStatusAlertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/find.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/find.ts similarity index 99% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/find.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/find.ts index 84f0d7709d01a..20a5e82d303fe 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/find.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/find.ts @@ -9,9 +9,9 @@ import expect from '@kbn/expect'; import { SuperTest, Test } from 'supertest'; import { chunk, omit } from 'lodash'; import uuid from 'uuid'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; const findTestUtils = ( describeType: 'internal' | 'public', diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get.ts index 180a3cf36e27f..48559aa35ac3c 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get.ts @@ -7,15 +7,15 @@ import expect from '@kbn/expect'; import { SuperTest, Test } from 'supertest'; -import { UserAtSpaceScenarios } from '../../scenarios'; +import { UserAtSpaceScenarios } from '../../../scenarios'; import { getUrlPrefix, getTestRuleData, ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; const getTestUtils = ( describeType: 'internal' | 'public', diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get_alert_state.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_state.ts similarity index 97% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get_alert_state.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_state.ts index 3bdfe49464fcf..e3da329c1cbaf 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get_alert_state.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_state.ts @@ -12,9 +12,9 @@ import { getTestRuleData, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { UserAtSpaceScenarios } from '../../scenarios'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; // eslint-disable-next-line import/no-default-export export default function createGetAlertStateTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get_alert_summary.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_summary.ts similarity index 97% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get_alert_summary.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_summary.ts index eb4e592a91d8a..f0ba9dc451937 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/get_alert_summary.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_summary.ts @@ -13,9 +13,9 @@ import { getTestRuleData, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { UserAtSpaceScenarios } from '../../scenarios'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; // eslint-disable-next-line import/no-default-export export default function createGetAlertSummaryTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts new file mode 100644 index 0000000000000..6753b6383872d --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { setupSpacesAndUsers, tearDown } from '../../../setup'; + +// eslint-disable-next-line import/no-default-export +export default function alertingTests({ loadTestFile, getService }: FtrProviderContext) { + describe('Alerts - Group 1', () => { + describe('alerts', () => { + before(async () => { + await setupSpacesAndUsers(getService); + }); + + after(async () => { + await tearDown(getService); + }); + + loadTestFile(require.resolve('./find')); + loadTestFile(require.resolve('./create')); + loadTestFile(require.resolve('./delete')); + loadTestFile(require.resolve('./disable')); + loadTestFile(require.resolve('./enable')); + loadTestFile(require.resolve('./execution_status')); + loadTestFile(require.resolve('./get')); + loadTestFile(require.resolve('./get_alert_state')); + loadTestFile(require.resolve('./get_alert_summary')); + loadTestFile(require.resolve('./rule_types')); + }); + }); +} diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/rule_types.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/rule_types.ts similarity index 96% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/rule_types.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/rule_types.ts index 0c527ac1449f8..e9d8175f9066e 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/rule_types.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/rule_types.ts @@ -7,9 +7,9 @@ import expect from '@kbn/expect'; import { omit } from 'lodash'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { getUrlPrefix } from '../../../common/lib/space_test_utils'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { getUrlPrefix } from '../../../../common/lib/space_test_utils'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function listAlertTypes({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/index.ts new file mode 100644 index 0000000000000..795af26627dfb --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/index.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 { FtrProviderContext } from '../../../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function alertingApiIntegrationTests({ loadTestFile }: FtrProviderContext) { + describe('alerting api integration security and spaces enabled', function () { + describe('', function () { + loadTestFile(require.resolve('./alerting')); + }); + }); +} diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/config.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/config.ts new file mode 100644 index 0000000000000..9b90a4c18fdf0 --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createTestConfig } from '../../common/config'; + +// eslint-disable-next-line import/no-default-export +export default createTestConfig('security_and_spaces', { + disabledPlugins: [], + license: 'trial', + ssl: true, + enableActionsProxy: true, + publicBaseUrl: true, + testFiles: [require.resolve('./tests')], +}); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/email.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/email.ts similarity index 99% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/email.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/email.ts index 6fb2315956b69..4d9282d4fdeea 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/email.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/email.ts @@ -7,11 +7,11 @@ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { ExternalServiceSimulator, getExternalServiceSimulatorPath, -} from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +} from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function emailTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/es_index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/es_index.ts similarity index 99% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/es_index.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/es_index.ts index edf352936e979..fed3acba1147e 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/es_index.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/es_index.ts @@ -7,7 +7,7 @@ import type { Client } from '@elastic/elasticsearch'; import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; const ES_TEST_INDEX_NAME = 'functional-test-actions-index'; diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/es_index_preconfigured.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/es_index_preconfigured.ts similarity index 96% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/es_index_preconfigured.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/es_index_preconfigured.ts index caa7d57688037..a447921ac5041 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/es_index_preconfigured.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/es_index_preconfigured.ts @@ -7,7 +7,7 @@ import type { Client } from '@elastic/elasticsearch'; import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; // from: x-pack/test/alerting_api_integration/common/config.ts const ACTION_ID = 'preconfigured-es-index-action'; diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/jira.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/jira.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/jira.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/jira.ts index 33185a20c9249..5a6e0967736a2 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/jira.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/jira.ts @@ -8,13 +8,13 @@ import httpProxy from 'http-proxy'; import expect from '@kbn/expect'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { getExternalServiceSimulatorPath, ExternalServiceSimulator, -} from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +} from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function jiraTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/pagerduty.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/pagerduty.ts similarity index 96% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/pagerduty.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/pagerduty.ts index 05dba49236197..731eab7dad0f3 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/pagerduty.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/pagerduty.ts @@ -8,13 +8,13 @@ import httpProxy from 'http-proxy'; import expect from '@kbn/expect'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { getExternalServiceSimulatorPath, ExternalServiceSimulator, -} from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +} from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function pagerdutyTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/resilient.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/resilient.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/resilient.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/resilient.ts index e2a92701b62cb..fec22ab72e1ef 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/resilient.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/resilient.ts @@ -8,13 +8,13 @@ import httpProxy from 'http-proxy'; import expect from '@kbn/expect'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { getExternalServiceSimulatorPath, ExternalServiceSimulator, -} from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +} from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function resilientTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/server_log.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/server_log.ts similarity index 96% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/server_log.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/server_log.ts index fb7bac7d81e9c..b8b12d6aac764 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/server_log.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/server_log.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function serverLogTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_itom.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_itom.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_itom.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_itom.ts index c685fff8abfc6..0771e4e293726 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_itom.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_itom.ts @@ -11,9 +11,9 @@ import { asyncForEach } from '@kbn/std'; import getPort from 'get-port'; import http from 'http'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; -import { getServiceNowServer } from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { getServiceNowServer } from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function serviceNowITOMTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_itsm.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_itsm.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_itsm.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_itsm.ts index 0f81753bbc731..368e1b104a87e 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_itsm.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_itsm.ts @@ -11,9 +11,9 @@ import { asyncForEach } from '@kbn/std'; import getPort from 'get-port'; import http from 'http'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; -import { getServiceNowServer } from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { getServiceNowServer } from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function serviceNowITSMTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_sir.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_sir.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_sir.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_sir.ts index 0f5640f7edd3e..f08ca542e4617 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/servicenow_sir.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/servicenow_sir.ts @@ -11,9 +11,9 @@ import { asyncForEach } from '@kbn/std'; import getPort from 'get-port'; import http from 'http'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; -import { getServiceNowServer } from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { getServiceNowServer } from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function serviceNowSIRTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/slack.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/slack.ts similarity index 96% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/slack.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/slack.ts index 66b988fb9b4eb..a05c622d8a1cf 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/slack.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/slack.ts @@ -9,10 +9,10 @@ import httpProxy from 'http-proxy'; import expect from '@kbn/expect'; import http from 'http'; import getPort from 'get-port'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; -import { getSlackServer } from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +import { getSlackServer } from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function slackTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/swimlane.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/swimlane.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/swimlane.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/swimlane.ts index a55e8e30d419a..4119a409d7a4b 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/swimlane.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/swimlane.ts @@ -10,9 +10,9 @@ import expect from '@kbn/expect'; import getPort from 'get-port'; import http from 'http'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; -import { getSwimlaneServer } from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { getSwimlaneServer } from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function swimlaneTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/webhook.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/webhook.ts similarity index 97% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/webhook.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/webhook.ts index 44a74a7a31571..c484dfad69539 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/webhook.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/webhook.ts @@ -10,13 +10,13 @@ import http from 'http'; import expect from '@kbn/expect'; import { URL, format as formatUrl } from 'url'; import getPort from 'get-port'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { getExternalServiceSimulatorPath, ExternalServiceSimulator, getWebhookServer, -} from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +} from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; const defaultValues: Record = { headers: null, diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/xmatters.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/xmatters.ts similarity index 96% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/xmatters.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/xmatters.ts index 7ce357bc62e36..e33597057cfe1 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/builtin_action_types/xmatters.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/builtin_action_types/xmatters.ts @@ -8,13 +8,13 @@ import httpProxy from 'http-proxy'; import expect from '@kbn/expect'; -import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; -import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { getHttpProxyServer } from '../../../../../common/lib/get_proxy_server'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { getExternalServiceSimulatorPath, ExternalServiceSimulator, -} from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +} from '../../../../../common/fixtures/plugins/actions_simulators/server/plugin'; // eslint-disable-next-line import/no-default-export export default function xmattersTest({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/config.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/config.ts new file mode 100644 index 0000000000000..506d0016af4f6 --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createTestConfig } from '../../../../common/config'; + +// eslint-disable-next-line import/no-default-export +export default createTestConfig('security_and_spaces', { + disabledPlugins: [], + license: 'trial', + ssl: true, + enableActionsProxy: true, + publicBaseUrl: true, + testFiles: [require.resolve('.')], +}); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/connector_types.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types.ts similarity index 91% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/connector_types.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types.ts index ec23719880926..feacbaa48be42 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/connector_types.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types.ts @@ -6,9 +6,9 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { getUrlPrefix } from '../../../common/lib/space_test_utils'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { getUrlPrefix } from '../../../../common/lib/space_test_utils'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function listActionTypesTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/create.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/create.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/create.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/create.ts index 06e8017177138..15d43f9782d94 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/create.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/create.ts @@ -6,9 +6,9 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { checkAAD, getUrlPrefix, ObjectRemover } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { checkAAD, getUrlPrefix, ObjectRemover } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function createActionTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/delete.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/delete.ts similarity index 97% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/delete.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/delete.ts index a0aae0a1bd64d..b0cfffdd2f464 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/delete.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/delete.ts @@ -7,9 +7,9 @@ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { getUrlPrefix, ObjectRemover } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { getUrlPrefix, ObjectRemover } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function deleteActionTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/execute.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/execute.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/execute.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/execute.ts index 321d14683ee2f..35361920cc729 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/execute.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/execute.ts @@ -6,18 +6,16 @@ */ import expect from '@kbn/expect'; -import { IValidatedEvent } from '@kbn/event-log-plugin/server'; -import { UserAtSpaceScenarios } from '../../scenarios'; +import { IValidatedEvent, nanosToMillis } from '@kbn/event-log-plugin/server'; +import { UserAtSpaceScenarios } from '../../../scenarios'; import { ESTestIndexTool, ES_TEST_INDEX_NAME, getUrlPrefix, ObjectRemover, getEventLog, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; - -const NANOS_IN_MILLIS = 1000 * 1000; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function ({ getService }: FtrProviderContext) { @@ -538,14 +536,12 @@ export default function ({ getService }: FtrProviderContext) { const executeEventEnd = Date.parse(executeEvent?.event?.end || 'undefined'); const dateNow = Date.now(); - expect(typeof duration).to.be('number'); + expect(typeof duration).to.be('string'); expect(executeEventStart).to.be.ok(); expect(startExecuteEventStart).to.equal(executeEventStart); expect(executeEventEnd).to.be.ok(); - const durationDiff = Math.abs( - Math.round(duration! / NANOS_IN_MILLIS) - (executeEventEnd - executeEventStart) - ); + const durationDiff = Math.abs(nanosToMillis(duration!) - (executeEventEnd - executeEventStart)); // account for rounding errors expect(durationDiff < 1).to.equal(true); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/get.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get.ts similarity index 96% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/get.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get.ts index 9842b13a9745d..f58481bb94412 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/get.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get.ts @@ -6,9 +6,9 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { getUrlPrefix, ObjectRemover } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { getUrlPrefix, ObjectRemover } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function getActionTests({ getService }: FtrProviderContext) { 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/group2/tests/actions/get_all.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/get_all.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all.ts index ab6181369755f..103ae5abd3071 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/group2/tests/actions/get_all.ts @@ -6,9 +6,9 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function getAllActionTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/index.ts similarity index 93% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/index.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/index.ts index 93d4bbb4065ed..6d1ecdbee566c 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/index.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/index.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { setupSpacesAndUsers, tearDown } from '..'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { setupSpacesAndUsers, tearDown } from '../../../setup'; // eslint-disable-next-line import/no-default-export export default function actionsTests({ loadTestFile, getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/manual/pr_40694.js b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/manual/pr_40694.js similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/manual/pr_40694.js rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/manual/pr_40694.js diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/update.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/update.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/update.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/update.ts index 92bb7084ec534..6a9181d5ba5dd 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/actions/update.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/update.ts @@ -6,9 +6,9 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { checkAAD, getUrlPrefix, ObjectRemover } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { checkAAD, getUrlPrefix, ObjectRemover } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function updateActionTests({ getService }: FtrProviderContext) { 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/group2/tests/alerting/alerts.ts similarity index 99% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/alerts.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/alerts.ts index 601efa34341cb..5dfbdfa9707c2 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/group2/tests/alerting/alerts.ts @@ -8,11 +8,11 @@ import expect from '@kbn/expect'; import { omit } from 'lodash'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { IValidatedEvent } from '@kbn/event-log-plugin/server'; +import { IValidatedEvent, nanosToMillis } from '@kbn/event-log-plugin/server'; import { TaskRunning, TaskRunningStage } from '@kbn/task-manager-plugin/server/task_running'; import { ConcreteTaskInstance } from '@kbn/task-manager-plugin/server'; -import { UserAtSpaceScenarios, Superuser } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios, Superuser } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { ESTestIndexTool, ES_TEST_INDEX_NAME, @@ -23,9 +23,7 @@ import { getConsumerUnauthorizedErrorMessage, TaskManagerUtils, getEventLog, -} from '../../../common/lib'; - -const NANOS_IN_MILLIS = 1000 * 1000; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function alertTests({ getService }: FtrProviderContext) { @@ -1303,13 +1301,11 @@ instanceStateValue: true const eventEnd = Date.parse(event?.event?.end || 'undefined'); const dateNow = Date.now(); - expect(typeof duration).to.be('number'); + expect(typeof duration).to.be('string'); expect(eventStart).to.be.ok(); expect(eventEnd).to.be.ok(); - const durationDiff = Math.abs( - Math.round(duration! / NANOS_IN_MILLIS) - (eventEnd - eventStart) - ); + const durationDiff = Math.abs(nanosToMillis(duration!) - (eventEnd - eventStart)); // account for rounding errors expect(durationDiff < 1).to.equal(true); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/event_log.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/event_log.ts similarity index 92% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/event_log.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/event_log.ts index 4a572002a4366..424c734b5c6a2 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/event_log.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/event_log.ts @@ -6,10 +6,10 @@ */ import expect from '@kbn/expect'; -import { Spaces } from '../../scenarios'; -import { getUrlPrefix, getTestRuleData, ObjectRemover, getEventLog } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { validateEvent } from '../../../spaces_only/tests/alerting/event_log'; +import { Spaces } from '../../../scenarios'; +import { getUrlPrefix, getTestRuleData, ObjectRemover, getEventLog } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { validateEvent } from '../../../../spaces_only/tests/alerting/event_log'; // eslint-disable-next-line import/no-default-export export default function eventLogTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/excluded.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/excluded.ts similarity index 94% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/excluded.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/excluded.ts index eae80da85dc59..d09edae045e6f 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/excluded.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/excluded.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; +import { UserAtSpaceScenarios } from '../../../scenarios'; import { getTestRuleData, getUrlPrefix, @@ -14,8 +14,8 @@ import { getEventLog, AlertUtils, ES_TEST_INDEX_NAME, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function createAlertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/health.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/health.ts similarity index 97% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/health.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/health.ts index d51cf8cc96af9..0663696dbee14 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/health.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/health.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { getUrlPrefix, getTestRuleData, @@ -15,7 +15,7 @@ import { AlertUtils, ESTestIndexTool, ES_TEST_INDEX_NAME, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createFindTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/index.ts new file mode 100644 index 0000000000000..72890c2bbd90a --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/index.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 { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { setupSpacesAndUsers, tearDown } from '../../../setup'; + +// eslint-disable-next-line import/no-default-export +export default function alertingTests({ loadTestFile, getService }: FtrProviderContext) { + describe('Alerts', () => { + describe('legacy alerts', function () { + before(async () => { + await setupSpacesAndUsers(getService); + }); + + after(async () => { + await tearDown(getService); + }); + + loadTestFile(require.resolve('./rbac_legacy')); + }); + + describe('alerts', () => { + before(async () => { + await setupSpacesAndUsers(getService); + }); + + after(async () => { + await tearDown(getService); + }); + + loadTestFile(require.resolve('./mute_all')); + loadTestFile(require.resolve('./mute_instance')); + loadTestFile(require.resolve('./unmute_all')); + loadTestFile(require.resolve('./unmute_instance')); + loadTestFile(require.resolve('./update')); + loadTestFile(require.resolve('./update_api_key')); + loadTestFile(require.resolve('./alerts')); + loadTestFile(require.resolve('./event_log')); + loadTestFile(require.resolve('./mustache_templates')); + loadTestFile(require.resolve('./health')); + loadTestFile(require.resolve('./excluded')); + loadTestFile(require.resolve('./snooze')); + }); + }); +} diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mustache_templates.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mustache_templates.ts similarity index 92% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mustache_templates.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mustache_templates.ts index 7e3a7599a73e0..2426c154aa443 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mustache_templates.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mustache_templates.ts @@ -18,11 +18,11 @@ import axios from 'axios'; import httpProxy from 'http-proxy'; import expect from '@kbn/expect'; -import { Spaces } from '../../scenarios'; -import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { getSlackServer } from '../../../common/fixtures/plugins/actions_simulators/server/plugin'; -import { getHttpProxyServer } from '../../../common/lib/get_proxy_server'; +import { Spaces } from '../../../scenarios'; +import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { getSlackServer } from '../../../../common/fixtures/plugins/actions_simulators/server/plugin'; +import { getHttpProxyServer } from '../../../../common/lib/get_proxy_server'; // eslint-disable-next-line import/no-default-export export default function executionStatusAlertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mute_all.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mute_all.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mute_all.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mute_all.ts index 1cac93cb52b78..5a4c792463b62 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mute_all.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mute_all.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -16,7 +16,7 @@ import { ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createMuteAlertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mute_instance.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mute_instance.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mute_instance.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mute_instance.ts index 3948f910423a9..63a285e0f4cb8 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/mute_instance.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/mute_instance.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -16,7 +16,7 @@ import { ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createMuteAlertInstanceTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/rbac_legacy.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/rbac_legacy.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/rbac_legacy.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/rbac_legacy.ts index 4f324cae689cd..4f0f53383e206 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/rbac_legacy.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/rbac_legacy.ts @@ -7,10 +7,10 @@ import expect from '@kbn/expect'; import { SavedObjectsUtils } from '@kbn/core/server/saved_objects'; -import { UserAtSpaceScenarios, Superuser } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { ESTestIndexTool, getUrlPrefix, ObjectRemover, AlertUtils } from '../../../common/lib'; -import { setupSpacesAndUsers } from '..'; +import { UserAtSpaceScenarios, Superuser } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { ESTestIndexTool, getUrlPrefix, ObjectRemover, AlertUtils } from '../../../../common/lib'; +import { setupSpacesAndUsers } from '../../../setup'; // eslint-disable-next-line import/no-default-export export default function alertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/snooze.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/snooze.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/snooze.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/snooze.ts index 929b95535e195..553e090498f00 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/snooze.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/snooze.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -16,7 +16,7 @@ import { ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; +} from '../../../../common/lib'; const FUTURE_SNOOZE_TIME = '9999-12-31T06:00:00.000Z'; diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unmute_all.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unmute_all.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unmute_all.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unmute_all.ts index e97e7e73abe44..dde198f54f771 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unmute_all.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unmute_all.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -16,7 +16,7 @@ import { ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createUnmuteAlertTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unmute_instance.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unmute_instance.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unmute_instance.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unmute_instance.ts index 17ee25e822a6d..1aa84f64a7e79 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unmute_instance.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unmute_instance.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -16,7 +16,7 @@ import { ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createMuteAlertInstanceTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unsnooze.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unsnooze.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unsnooze.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unsnooze.ts index ed37a19d80707..c868654235c21 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/unsnooze.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/unsnooze.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -16,7 +16,7 @@ import { ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createUnsnoozeRuleTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/update.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/update.ts similarity index 99% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/update.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/update.ts index b2a1ae223f62c..c49fa62c606b6 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/update.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/update.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { Response as SupertestResponse } from 'supertest'; -import { UserAtSpaceScenarios } from '../../scenarios'; +import { UserAtSpaceScenarios } from '../../../scenarios'; import { checkAAD, getUrlPrefix, @@ -16,8 +16,8 @@ import { ensureDatetimeIsWithinRange, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function createUpdateTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/update_api_key.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/update_api_key.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/update_api_key.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/update_api_key.ts index 1c25ec550c41e..a0d1eb4dd0756 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/update_api_key.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/alerting/update_api_key.ts @@ -6,8 +6,8 @@ */ import expect from '@kbn/expect'; -import { UserAtSpaceScenarios } from '../../scenarios'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { UserAtSpaceScenarios } from '../../../scenarios'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { AlertUtils, checkAAD, @@ -16,7 +16,7 @@ import { ObjectRemover, getConsumerUnauthorizedErrorMessage, getProducerUnauthorizedErrorMessage, -} from '../../../common/lib'; +} from '../../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function createUpdateApiKeyTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/index.ts new file mode 100644 index 0000000000000..c4b5ab80c3416 --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/index.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 { FtrProviderContext } from '../../../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function alertingApiIntegrationTests({ loadTestFile }: FtrProviderContext) { + describe('alerting api integration security and spaces enabled - Group 2', function () { + loadTestFile(require.resolve('./telemetry')); + loadTestFile(require.resolve('./actions')); + loadTestFile(require.resolve('./alerting')); + }); +} diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/actions_telemetry.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/actions_telemetry.ts similarity index 98% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/actions_telemetry.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/actions_telemetry.ts index 1d8d0091b67de..b187b9e9f9759 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/actions_telemetry.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/actions_telemetry.ts @@ -6,15 +6,15 @@ */ import expect from '@kbn/expect'; -import { Spaces, Superuser } from '../../scenarios'; +import { Spaces, Superuser } from '../../../scenarios'; import { getUrlPrefix, getEventLog, getTestRuleData, ObjectRemover, TaskManagerDoc, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function createActionsTelemetryTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/alerting_telemetry.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_telemetry.ts similarity index 99% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/alerting_telemetry.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_telemetry.ts index afc39bf1c6b74..811eeecfc0375 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/alerting_telemetry.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_telemetry.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { Spaces, Superuser } from '../../scenarios'; +import { Spaces, Superuser } from '../../../scenarios'; import { getUrlPrefix, getEventLog, @@ -14,8 +14,8 @@ import { ObjectRemover, TaskManagerDoc, ESTestIndexTool, -} from '../../../common/lib'; -import { FtrProviderContext } from '../../../common/ftr_provider_context'; +} from '../../../../common/lib'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function createAlertingTelemetryTests({ getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/config.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/config.ts new file mode 100644 index 0000000000000..506d0016af4f6 --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createTestConfig } from '../../../../common/config'; + +// eslint-disable-next-line import/no-default-export +export default createTestConfig('security_and_spaces', { + disabledPlugins: [], + license: 'trial', + ssl: true, + enableActionsProxy: true, + publicBaseUrl: true, + testFiles: [require.resolve('.')], +}); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts similarity index 84% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/index.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts index 9e73fafc9f7bd..6077997b661ae 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/telemetry/index.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { setupSpacesAndUsers, tearDown } from '..'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { setupSpacesAndUsers, tearDown } from '../../../setup'; // eslint-disable-next-line import/no-default-export export default function actionsTests({ loadTestFile, getService }: FtrProviderContext) { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/setup.ts similarity index 73% rename from x-pack/test/alerting_api_integration/security_and_spaces/tests/index.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/setup.ts index 1196e3716347d..69ca58e1edc12 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/index.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/setup.ts @@ -6,8 +6,8 @@ */ import { FtrProviderContext } from '../../common/ftr_provider_context'; -import { isCustomRoleSpecification } from '../../common/types'; -import { Spaces, Users } from '../scenarios'; +import { isCustomRoleSpecification } from '../common/types'; +import { Spaces, Users } from './scenarios'; export async function setupSpacesAndUsers(getService: FtrProviderContext['getService']) { const securityService = getService('security'); @@ -54,18 +54,3 @@ export async function tearDown(getService: FtrProviderContext['getService']) { await esArchiver.unload('x-pack/test/functional/es_archives/empty_kibana'); } - -// eslint-disable-next-line import/no-default-export -export default function alertingApiIntegrationTests({ loadTestFile }: FtrProviderContext) { - describe('alerting api integration security and spaces enabled', function () { - describe('', function () { - this.tags('ciGroup17'); - loadTestFile(require.resolve('./telemetry')); - loadTestFile(require.resolve('./actions')); - }); - - describe('', function () { - loadTestFile(require.resolve('./alerting')); - }); - }); -} diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/index.ts deleted file mode 100644 index 9dd7326aa4663..0000000000000 --- a/x-pack/test/alerting_api_integration/security_and_spaces/tests/alerting/index.ts +++ /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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { setupSpacesAndUsers, tearDown } from '..'; - -// eslint-disable-next-line import/no-default-export -export default function alertingTests({ loadTestFile, getService }: FtrProviderContext) { - describe('Alerts', () => { - describe('legacy alerts', function () { - this.tags('ciGroup17'); - - before(async () => { - await setupSpacesAndUsers(getService); - }); - - after(async () => { - await tearDown(getService); - }); - - loadTestFile(require.resolve('./rbac_legacy')); - }); - - describe('alerts', () => { - before(async () => { - await setupSpacesAndUsers(getService); - }); - - after(async () => { - await tearDown(getService); - }); - - describe('', function () { - this.tags('ciGroup17'); - loadTestFile(require.resolve('./find')); - loadTestFile(require.resolve('./create')); - loadTestFile(require.resolve('./delete')); - loadTestFile(require.resolve('./disable')); - loadTestFile(require.resolve('./enable')); - loadTestFile(require.resolve('./execution_status')); - loadTestFile(require.resolve('./get')); - loadTestFile(require.resolve('./get_alert_state')); - loadTestFile(require.resolve('./get_alert_summary')); - loadTestFile(require.resolve('./rule_types')); - }); - - describe('', function () { - this.tags('ciGroup30'); - loadTestFile(require.resolve('./mute_all')); - loadTestFile(require.resolve('./mute_instance')); - loadTestFile(require.resolve('./unmute_all')); - loadTestFile(require.resolve('./unmute_instance')); - loadTestFile(require.resolve('./update')); - loadTestFile(require.resolve('./update_api_key')); - loadTestFile(require.resolve('./alerts')); - loadTestFile(require.resolve('./event_log')); - loadTestFile(require.resolve('./mustache_templates')); - loadTestFile(require.resolve('./health')); - loadTestFile(require.resolve('./excluded')); - loadTestFile(require.resolve('./snooze')); - }); - }); - }); -} diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/execute.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/execute.ts index 06e077f4b9de4..24c6427fdf2f6 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/execute.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/execute.ts @@ -6,7 +6,7 @@ */ import type { Client } from '@elastic/elasticsearch'; import expect from '@kbn/expect'; -import { IValidatedEvent } from '@kbn/event-log-plugin/server'; +import { IValidatedEvent, nanosToMillis } from '@kbn/event-log-plugin/server'; import { Spaces } from '../../scenarios'; import { ESTestIndexTool, @@ -17,8 +17,6 @@ import { } from '../../../common/lib'; import { FtrProviderContext } from '../../../common/ftr_provider_context'; -const NANOS_IN_MILLIS = 1000 * 1000; - // eslint-disable-next-line import/no-default-export export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); @@ -372,14 +370,12 @@ export default function ({ getService }: FtrProviderContext) { const executeEventEnd = Date.parse(executeEvent?.event?.end || 'undefined'); const dateNow = Date.now(); - expect(typeof duration).to.be('number'); + expect(typeof duration).to.be('string'); expect(executeEventStart).to.be.ok(); expect(startExecuteEventStart).to.equal(executeEventStart); expect(executeEventEnd).to.be.ok(); - const durationDiff = Math.abs( - Math.round(duration! / NANOS_IN_MILLIS) - (executeEventEnd - executeEventStart) - ); + const durationDiff = Math.abs(nanosToMillis(duration!) - (executeEventEnd - executeEventStart)); // account for rounding errors expect(durationDiff < 1).to.equal(true); diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/event_log.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/event_log.ts index 5777b4978894f..bc382e5d733dd 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/event_log.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/event_log.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import uuid from 'uuid'; -import { IValidatedEvent } from '@kbn/event-log-plugin/server'; +import { IValidatedEvent, nanosToMillis } from '@kbn/event-log-plugin/server'; import { Spaces } from '../../scenarios'; import { getUrlPrefix, @@ -18,8 +18,6 @@ import { } from '../../../common/lib'; import { FtrProviderContext } from '../../../common/ftr_provider_context'; -const NANOS_IN_MILLIS = 1000 * 1000; - // eslint-disable-next-line import/no-default-export export default function eventLogTests({ getService }: FtrProviderContext) { const supertest = getService('supertest'); @@ -403,10 +401,12 @@ export default function eventLogTests({ getService }: FtrProviderContext) { expect(event?.kibana?.alert?.rule?.execution?.metrics?.number_of_searches).to.be( numSearches ); - const esSearchDuration = - event?.kibana?.alert?.rule?.execution?.metrics?.es_search_duration_ms; - const totalSearchDuration = - event?.kibana?.alert?.rule?.execution?.metrics?.total_search_duration_ms; + const esSearchDuration = Number( + event?.kibana?.alert?.rule?.execution?.metrics?.es_search_duration_ms + ); + const totalSearchDuration = Number( + event?.kibana?.alert?.rule?.execution?.metrics?.total_search_duration_ms + ); expect(esSearchDuration).not.to.be(undefined); expect(totalSearchDuration).not.to.be(undefined); @@ -861,15 +861,13 @@ export function validateEvent(event: IValidatedEvent, params: ValidateEventLogPa const dateNow = Date.now(); if (duration !== undefined) { - expect(typeof duration).to.be('number'); + expect(typeof duration).to.be('string'); expect(eventStart).to.be.ok(); if (shouldHaveEventEnd !== false) { expect(eventEnd).to.be.ok(); - const durationDiff = Math.abs( - Math.round(duration! / NANOS_IN_MILLIS) - (eventEnd - eventStart) - ); + const durationDiff = Math.abs(nanosToMillis(duration!) - (eventEnd - eventStart)); // account for rounding errors expect(durationDiff < 1).to.equal(true); diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/event_log_alerts.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/event_log_alerts.ts index c65ffb1bef5ac..46da0e597e66a 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/event_log_alerts.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/event_log_alerts.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { IValidatedEvent } from '@kbn/event-log-plugin/server'; +import { IValidatedEvent, nanosToMillis } from '@kbn/event-log-plugin/server'; import { Spaces } from '../../scenarios'; import { getUrlPrefix, getTestRuleData, ObjectRemover, getEventLog } from '../../../common/lib'; import { FtrProviderContext } from '../../../common/ftr_provider_context'; @@ -91,7 +91,7 @@ export default function eventLogAlertTests({ getService }: FtrProviderContext) { const currentAlertSpan: { alertId?: string; start?: string; - durationToDate?: number; + durationToDate?: string; } = {}; for (let i = 0; i < instanceEvents.length; ++i) { switch (instanceEvents[i]?.event?.action) { @@ -102,7 +102,7 @@ export default function eventLogAlertTests({ getService }: FtrProviderContext) { currentAlertSpan.alertId = instanceEvents[i]?.kibana?.alerting?.instance_id; currentAlertSpan.start = instanceEvents[i]?.event?.start; - currentAlertSpan.durationToDate = instanceEvents[i]?.event?.duration; + currentAlertSpan.durationToDate = `${instanceEvents[i]?.event?.duration}`; break; case 'active-instance': @@ -110,12 +110,13 @@ export default function eventLogAlertTests({ getService }: FtrProviderContext) { expect(instanceEvents[i]?.event?.start).to.equal(currentAlertSpan.start); expect(instanceEvents[i]?.event?.end).to.be(undefined); - if (instanceEvents[i]?.event?.duration! !== 0) { - expect(instanceEvents[i]?.event?.duration! > currentAlertSpan.durationToDate!).to.be( - true - ); + if (instanceEvents[i]?.event?.duration! !== '0') { + expect( + BigInt(instanceEvents[i]?.event?.duration!) > + BigInt(currentAlertSpan.durationToDate!) + ).to.be(true); } - currentAlertSpan.durationToDate = instanceEvents[i]?.event?.duration; + currentAlertSpan.durationToDate = `${instanceEvents[i]?.event?.duration}`; break; case 'recovered-instance': @@ -125,7 +126,7 @@ export default function eventLogAlertTests({ getService }: FtrProviderContext) { expect( new Date(instanceEvents[i]?.event?.end!).valueOf() - new Date(instanceEvents[i]?.event?.start!).valueOf() - ).to.equal(instanceEvents[i]?.event?.duration! / 1000 / 1000); + ).to.equal(nanosToMillis(instanceEvents[i]?.event?.duration!)); break; } } 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 88e5e0740789f..424deaaf83815 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 @@ -11,8 +11,6 @@ import { Spaces } from '../scenarios'; // eslint-disable-next-line import/no-default-export export default function alertingApiIntegrationTests({ loadTestFile }: FtrProviderContext) { describe('alerting api integration spaces only', function () { - this.tags('ciGroup12'); - loadTestFile(require.resolve('./actions')); loadTestFile(require.resolve('./alerting')); loadTestFile(require.resolve('./action_task_params')); diff --git a/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/index.ts b/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/index.ts index bb581a7f61cdb..757f2793b239f 100644 --- a/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/index.ts +++ b/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/index.ts @@ -11,8 +11,6 @@ import { Spaces } from '../scenarios'; // eslint-disable-next-line import/no-default-export export default function alertingApiIntegrationTests({ loadTestFile }: FtrProviderContext) { describe('alerting api integration spaces only legacy configuration', function () { - this.tags('ciGroup12'); - loadTestFile(require.resolve('./actions/builtin_action_types/webhook')); }); } diff --git a/x-pack/test/api_integration/apis/index.ts b/x-pack/test/api_integration/apis/index.ts index ec964f97922ad..645cc81560682 100644 --- a/x-pack/test/api_integration/apis/index.ts +++ b/x-pack/test/api_integration/apis/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('apis', function () { - this.tags('ciGroup18'); - loadTestFile(require.resolve('./search')); loadTestFile(require.resolve('./es')); loadTestFile(require.resolve('./security')); diff --git a/x-pack/test/api_integration/apis/security/index.ts b/x-pack/test/api_integration/apis/security/index.ts index eb81d8245dbff..b595894f157fc 100644 --- a/x-pack/test/api_integration/apis/security/index.ts +++ b/x-pack/test/api_integration/apis/security/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security', function () { - this.tags('ciGroup18'); - // Updates here should be mirrored in `./security_basic.ts` if tests // should also run under a basic license. diff --git a/x-pack/test/api_integration/apis/security/security_basic.ts b/x-pack/test/api_integration/apis/security/security_basic.ts index 3dcb347126a97..1e7d8ed1ad4b2 100644 --- a/x-pack/test/api_integration/apis/security/security_basic.ts +++ b/x-pack/test/api_integration/apis/security/security_basic.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security (basic license)', function () { - this.tags('ciGroup6'); - // Updates here should be mirrored in `./index.js` if tests // should also run under a trial/platinum license. diff --git a/x-pack/test/api_integration/apis/security/security_trial.ts b/x-pack/test/api_integration/apis/security/security_trial.ts index be4ad252d408f..3786240b4e433 100644 --- a/x-pack/test/api_integration/apis/security/security_trial.ts +++ b/x-pack/test/api_integration/apis/security/security_trial.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security (trial license)', function () { - this.tags('ciGroup6'); - // THIS TEST NEEDS TO BE LAST. IT IS DESTRUCTIVE! IT REMOVES TRIAL LICENSE!!! loadTestFile(require.resolve('./license_downgrade')); }); diff --git a/x-pack/test/api_integration/apis/spaces/index.ts b/x-pack/test/api_integration/apis/spaces/index.ts index 3ca0040e39ec9..1ec1faac535ce 100644 --- a/x-pack/test/api_integration/apis/spaces/index.ts +++ b/x-pack/test/api_integration/apis/spaces/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('spaces', function () { - this.tags('ciGroup18'); - loadTestFile(require.resolve('./get_active_space')); loadTestFile(require.resolve('./saved_objects')); loadTestFile(require.resolve('./space_attributes')); diff --git a/x-pack/test/api_integration/config.ts b/x-pack/test/api_integration/config.ts index 4e47947aa29dc..8cc5fb6f57d42 100644 --- a/x-pack/test/api_integration/config.ts +++ b/x-pack/test/api_integration/config.ts @@ -10,7 +10,7 @@ import { services } from './services'; export async function getApiIntegrationConfig({ readConfigFile }: FtrConfigProviderContext) { const xPackFunctionalTestsConfig = await readConfigFile( - require.resolve('../functional/config.js') + require.resolve('../functional/config.base.js') ); return { diff --git a/x-pack/test/api_integration_basic/apis/index.ts b/x-pack/test/api_integration_basic/apis/index.ts index 9490d4c277675..31176c55ac3ca 100644 --- a/x-pack/test/api_integration_basic/apis/index.ts +++ b/x-pack/test/api_integration_basic/apis/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('apis', function () { - this.tags('ciGroup11'); - loadTestFile(require.resolve('./transform')); loadTestFile(require.resolve('./security_solution')); }); diff --git a/x-pack/test/apm_api_integration/tests/index.ts b/x-pack/test/apm_api_integration/tests/index.ts index 59764cf021c4a..e1312f589862c 100644 --- a/x-pack/test/apm_api_integration/tests/index.ts +++ b/x-pack/test/apm_api_integration/tests/index.ts @@ -14,8 +14,6 @@ export default function apmApiIntegrationTests({ getService, loadTestFile }: Ftr const registry = getService('registry'); describe('APM API tests', function () { - this.tags('ciGroup1'); - const tests = glob.sync('**/*.spec.ts', { cwd }); tests.forEach((test) => { describe(test, function () { diff --git a/x-pack/test/apm_api_integration/tests/suggestions/suggestions.spec.ts b/x-pack/test/apm_api_integration/tests/suggestions/suggestions.spec.ts index 74bdc860bfba3..692cd1c0cf7f1 100644 --- a/x-pack/test/apm_api_integration/tests/suggestions/suggestions.spec.ts +++ b/x-pack/test/apm_api_integration/tests/suggestions/suggestions.spec.ts @@ -9,12 +9,14 @@ import { SERVICE_NAME, TRANSACTION_TYPE, } from '@kbn/apm-plugin/common/elasticsearch_fieldnames'; +import archives_metadata from '../../common/fixtures/es_archiver/archives_metadata'; import { FtrProviderContext } from '../../common/ftr_provider_context'; export default function suggestionsTests({ getService }: FtrProviderContext) { const registry = getService('registry'); const apmApiClient = getService('apmApiClient'); const archiveName = 'apm_8.0.0'; + const { start, end } = archives_metadata[archiveName]; registry.when( 'suggestions when data is loaded', @@ -25,7 +27,7 @@ export default function suggestionsTests({ getService }: FtrProviderContext) { it('returns all environments', async () => { const { body } = await apmApiClient.readUser({ endpoint: 'GET /internal/apm/suggestions', - params: { query: { field: SERVICE_ENVIRONMENT, string: '' } }, + params: { query: { fieldName: SERVICE_ENVIRONMENT, fieldValue: '', start, end } }, }); expectSnapshot(body).toMatchInline(` @@ -43,7 +45,7 @@ export default function suggestionsTests({ getService }: FtrProviderContext) { it('returns items matching the string parameter', async () => { const { body } = await apmApiClient.readUser({ endpoint: 'GET /internal/apm/suggestions', - params: { query: { field: SERVICE_ENVIRONMENT, string: 'pr' } }, + params: { query: { fieldName: SERVICE_ENVIRONMENT, fieldValue: 'pr', start, end } }, }); expectSnapshot(body).toMatchInline(` @@ -62,7 +64,7 @@ export default function suggestionsTests({ getService }: FtrProviderContext) { it('returns all services', async () => { const { body } = await apmApiClient.readUser({ endpoint: 'GET /internal/apm/suggestions', - params: { query: { field: SERVICE_NAME, string: '' } }, + params: { query: { fieldName: SERVICE_NAME, fieldValue: '', start, end } }, }); expectSnapshot(body).toMatchInline(` @@ -86,7 +88,7 @@ export default function suggestionsTests({ getService }: FtrProviderContext) { it('returns items matching the string parameter', async () => { const { body } = await apmApiClient.readUser({ endpoint: 'GET /internal/apm/suggestions', - params: { query: { field: SERVICE_NAME, string: 'aud' } }, + params: { query: { fieldName: SERVICE_NAME, fieldValue: 'aud', start, end } }, }); expectSnapshot(body).toMatchInline(` @@ -105,7 +107,7 @@ export default function suggestionsTests({ getService }: FtrProviderContext) { it('returns all transaction types', async () => { const { body } = await apmApiClient.readUser({ endpoint: 'GET /internal/apm/suggestions', - params: { query: { field: TRANSACTION_TYPE, string: '' } }, + params: { query: { fieldName: TRANSACTION_TYPE, fieldValue: '', start, end } }, }); expectSnapshot(body).toMatchInline(` @@ -125,7 +127,7 @@ export default function suggestionsTests({ getService }: FtrProviderContext) { it('returns items matching the string parameter', async () => { const { body } = await apmApiClient.readUser({ endpoint: 'GET /internal/apm/suggestions', - params: { query: { field: TRANSACTION_TYPE, string: 'w' } }, + params: { query: { fieldName: TRANSACTION_TYPE, fieldValue: 'w', start, end } }, }); expectSnapshot(body).toMatchInline(` diff --git a/x-pack/test/banners_functional/config.ts b/x-pack/test/banners_functional/config.ts index 03f91dfbc34e2..83d0c4656572c 100644 --- a/x-pack/test/banners_functional/config.ts +++ b/x-pack/test/banners_functional/config.ts @@ -9,7 +9,9 @@ import { FtrConfigProviderContext } from '@kbn/test'; import { services, pageObjects } from './ftr_provider_context'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const kibanaFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const kibanaFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); return { testFiles: [require.resolve('./tests')], diff --git a/x-pack/test/banners_functional/tests/index.ts b/x-pack/test/banners_functional/tests/index.ts index 301c872c746e1..8a26cb66ad569 100644 --- a/x-pack/test/banners_functional/tests/index.ts +++ b/x-pack/test/banners_functional/tests/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('banners - functional tests', function () { - this.tags('ciGroup2'); - loadTestFile(require.resolve('./global')); loadTestFile(require.resolve('./spaces')); }); diff --git a/x-pack/test/cases_api_integration/common/lib/mock.ts b/x-pack/test/cases_api_integration/common/lib/mock.ts index 34f1d4a9273d2..08f30f8df024e 100644 --- a/x-pack/test/cases_api_integration/common/lib/mock.ts +++ b/x-pack/test/cases_api_integration/common/lib/mock.ts @@ -17,6 +17,7 @@ import { CaseStatuses, CommentRequest, CommentRequestActionsType, + CaseSeverity, } from '@kbn/cases-plugin/common/api'; export const defaultUser = { email: null, full_name: null, username: 'elastic' }; @@ -86,6 +87,7 @@ export const postCaseResp = ( ...(id != null ? { id } : {}), comments: [], duration: null, + severity: req.severity ?? CaseSeverity.LOW, totalAlerts: 0, totalComment: 0, closed_by: null, diff --git a/x-pack/test/cases_api_integration/common/lib/utils.ts b/x-pack/test/cases_api_integration/common/lib/utils.ts index ec0f9074df099..825f50b792cc6 100644 --- a/x-pack/test/cases_api_integration/common/lib/utils.ts +++ b/x-pack/test/cases_api_integration/common/lib/utils.ts @@ -48,9 +48,10 @@ import { ConnectorMappings, CasesByAlertId, CaseResolveResponse, - CaseMetricsResponse, + SingleCaseMetricsResponse, BulkCreateCommentRequest, CommentType, + CasesMetricsResponse, } from '@kbn/cases-plugin/common/api'; import { getCaseUserActionUrl } from '@kbn/cases-plugin/common/api/helpers'; import { SignalHit } from '@kbn/security-solution-plugin/server/lib/detection_engine/signals/types'; @@ -1009,13 +1010,13 @@ export const getCaseMetrics = async ({ }: { supertest: SuperTest.SuperTest; caseId: string; - features: string[]; + features: string[] | string; expectedHttpCode?: number; auth?: { user: User; space: string | null }; -}): Promise => { +}): Promise => { const { body: metricsResponse } = await supertest .get(`${getSpaceUrlPrefix(auth?.space)}${CASES_URL}/metrics/${caseId}`) - .query({ features: JSON.stringify(features) }) + .query({ features }) .auth(auth.user.username, auth.user.password) .expect(expectedHttpCode); @@ -1267,3 +1268,25 @@ export const calculateDuration = (closedAt: string | null, createdAt: string | n return Math.floor(Math.abs((closedAtMillis - createdAtMillis) / 1000)); }; + +export const getCasesMetrics = async ({ + supertest, + features, + query = {}, + expectedHttpCode = 200, + auth = { user: superUser, space: null }, +}: { + supertest: SuperTest.SuperTest; + features: string[] | string; + query?: Record; + expectedHttpCode?: number; + auth?: { user: User; space: string | null }; +}): Promise => { + const { body: metricsResponse } = await supertest + .get(`${getSpaceUrlPrefix(auth?.space)}${CASES_URL}/metrics`) + .query({ features, ...query }) + .auth(auth.user.username, auth.user.password) + .expect(expectedHttpCode); + + return metricsResponse; +}; diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/basic/index.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/basic/index.ts index b618cf5b4df68..714d7e0c6b219 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/basic/index.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/basic/index.ts @@ -11,9 +11,6 @@ import { createSpacesAndUsers, deleteSpacesAndUsers } from '../../../common/lib/ // eslint-disable-next-line import/no-default-export export default ({ loadTestFile, getService }: FtrProviderContext): void => { describe('cases security and spaces enabled: basic', function () { - // Fastest ciGroup for the moment. - this.tags('ciGroup27'); - before(async () => { await createSpacesAndUsers(getService); }); diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/import_export.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/import_export.ts index 44da07a845ff7..2ce441c37e687 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/import_export.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/import_export.ts @@ -27,6 +27,7 @@ import { CommentUserAction, CreateCaseUserAction, CaseStatuses, + CaseSeverity, } from '@kbn/cases-plugin/common/api'; import { ObjectRemover as ActionsRemover } from '../../../../../alerting_api_integration/common/lib'; import { @@ -204,6 +205,10 @@ const expectExportToHaveCaseSavedObject = ( expect(createdCaseSO.attributes.connector.name).to.eql(caseRequest.connector.name); expect(createdCaseSO.attributes.connector.fields).to.eql([]); expect(createdCaseSO.attributes.settings).to.eql(caseRequest.settings); + expect(createdCaseSO.attributes.status).to.eql(CaseStatuses.open); + expect(createdCaseSO.attributes.severity).to.eql(CaseSeverity.LOW); + expect(createdCaseSO.attributes.duration).to.eql(null); + expect(createdCaseSO.attributes.tags).to.eql(caseRequest.tags); }; const expectExportToHaveUserActions = (objects: SavedObject[], caseRequest: CasePostRequest) => { @@ -239,6 +244,7 @@ const expectCaseCreateUserAction = ( expect(restParsedCreateCase).to.eql({ ...restCreateCase, status: CaseStatuses.open, + severity: CaseSeverity.LOW, }); expect(restParsedConnector).to.eql(restConnector); }; diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/migrations.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/migrations.ts index 3c43ac1932986..4d4b9d45b6717 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/migrations.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/migrations.ts @@ -369,7 +369,7 @@ export default function createGetTests({ getService }: FtrProviderContext) { }); }); - describe('8.3.0 adding duration', () => { + describe('8.3.0', () => { before(async () => { await kibanaServer.importExport.load( 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.2.0/cases_duration.json' @@ -383,34 +383,48 @@ export default function createGetTests({ getService }: FtrProviderContext) { await deleteAllCaseItems(es); }); - it('calculates the correct duration for closed cases', async () => { - const caseInfo = await getCase({ - supertest, - caseId: '4537b380-a512-11ec-b92f-859b9e89e434', + describe('adding duration', () => { + it('calculates the correct duration for closed cases', async () => { + const caseInfo = await getCase({ + supertest, + caseId: '4537b380-a512-11ec-b92f-859b9e89e434', + }); + + expect(caseInfo).to.have.property('duration'); + expect(caseInfo.duration).to.be(120); }); - expect(caseInfo).to.have.property('duration'); - expect(caseInfo.duration).to.be(120); - }); + it('sets the duration to null to open cases', async () => { + const caseInfo = await getCase({ + supertest, + caseId: '7537b580-a512-11ec-b94f-85979e89e434', + }); - it('sets the duration to null to open cases', async () => { - const caseInfo = await getCase({ - supertest, - caseId: '7537b580-a512-11ec-b94f-85979e89e434', + expect(caseInfo).to.have.property('duration'); + expect(caseInfo.duration).to.be(null); }); - expect(caseInfo).to.have.property('duration'); - expect(caseInfo.duration).to.be(null); - }); + it('sets the duration to null to in-progress cases', async () => { + const caseInfo = await getCase({ + supertest, + caseId: '1537b580-a512-11ec-b94f-85979e89e434', + }); - it('sets the duration to null to in-progress cases', async () => { - const caseInfo = await getCase({ - supertest, - caseId: '1537b580-a512-11ec-b94f-85979e89e434', + expect(caseInfo).to.have.property('duration'); + expect(caseInfo.duration).to.be(null); }); + }); - expect(caseInfo).to.have.property('duration'); - expect(caseInfo.duration).to.be(null); + describe('add severity', () => { + it('adds the severity field for existing documents', async () => { + const caseInfo = await getCase({ + supertest, + caseId: '4537b380-a512-11ec-b92f-859b9e89e434', + }); + + expect(caseInfo).to.have.property('severity'); + expect(caseInfo.severity).to.be('low'); + }); }); }); }); diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts index 9ef1c3d5655e4..80dffef7cd3ee 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts @@ -10,6 +10,7 @@ import { ALERT_WORKFLOW_STATUS } from '@kbn/rule-data-utils'; import { DETECTION_ENGINE_QUERY_SIGNALS_URL } from '@kbn/security-solution-plugin/common/constants'; import { + CaseSeverity, CasesResponse, CaseStatuses, CommentType, @@ -170,6 +171,34 @@ export default ({ getService }: FtrProviderContext): void => { }); }); + it('should patch the severity of a case correctly', async () => { + const postedCase = await createCase(supertest, postCaseReq); + + // the default severity + expect(postedCase.severity).equal(CaseSeverity.LOW); + + const patchedCases = await updateCase({ + supertest, + params: { + cases: [ + { + id: postedCase.id, + version: postedCase.version, + severity: CaseSeverity.MEDIUM, + }, + ], + }, + }); + + const data = removeServerGeneratedPropertiesFromCase(patchedCases[0]); + + expect(data).to.eql({ + ...postCaseResp(), + severity: CaseSeverity.MEDIUM, + updated_by: defaultUser, + }); + }); + it('should patch a case with new connector', async () => { const postedCase = await createCase(supertest, postCaseReq); const patchedCases = await updateCase({ @@ -297,6 +326,22 @@ export default ({ getService }: FtrProviderContext): void => { }); }); + it('400s when a wrong severity value is passed', async () => { + await updateCase({ + supertest, + params: { + cases: [ + { + version: 'version', + // @ts-expect-error + severity: 'wont-do', + }, + ], + }, + expectedHttpCode: 400, + }); + }); + it('400s when id is missing', async () => { await updateCase({ supertest, diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/post_case.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/post_case.ts index 9cd986a032b24..d4b52ff6f3394 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/post_case.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/post_case.ts @@ -12,6 +12,7 @@ import { ConnectorTypes, ConnectorJiraTypeFields, CaseStatuses, + CaseSeverity, } from '@kbn/cases-plugin/common/api'; import { getPostCaseRequest, postCaseResp, defaultUser } from '../../../../common/lib/mock'; import { @@ -102,6 +103,32 @@ export default ({ getService }: FtrProviderContext): void => { ); }); + it('should post a case without severity', async () => { + const postedCase = await createCase(supertest, getPostCaseRequest()); + const data = removeServerGeneratedPropertiesFromCase(postedCase); + + expect(data).to.eql(postCaseResp(null, getPostCaseRequest())); + }); + + it('should post a case with severity', async () => { + const postedCase = await createCase( + supertest, + getPostCaseRequest({ + severity: CaseSeverity.HIGH, + }) + ); + const data = removeServerGeneratedPropertiesFromCase(postedCase); + + expect(data).to.eql( + postCaseResp( + null, + getPostCaseRequest({ + severity: CaseSeverity.HIGH, + }) + ) + ); + }); + it('should create a user action when creating a case', async () => { const postedCase = await createCase(supertest, getPostCaseRequest()); const userActions = await getCaseUserActions({ supertest, caseID: postedCase.id }); @@ -122,6 +149,7 @@ export default ({ getService }: FtrProviderContext): void => { settings: postedCase.settings, owner: postedCase.owner, status: CaseStatuses.open, + severity: CaseSeverity.LOW, }, }); }); @@ -207,6 +235,11 @@ export default ({ getService }: FtrProviderContext): void => { await supertest.post(CASES_URL).set('kbn-xsrf', 'true').send(caseWithoutTags).expect(400); }); + it('400s when passing a wrong severity value', async () => { + // @ts-expect-error + await createCase(supertest, { ...getPostCaseRequest(), severity: 'very-severe' }, 400); + }); + it('400s if you passing status for a new case', async () => { const req = getPostCaseRequest(); diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/index.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/index.ts index 25f39164f7c28..93bb948265ba0 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/index.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/index.ts @@ -37,6 +37,7 @@ export default ({ loadTestFile }: FtrProviderContext): void => { loadTestFile(require.resolve('./metrics/get_case_metrics_alerts')); loadTestFile(require.resolve('./metrics/get_case_metrics_actions')); loadTestFile(require.resolve('./metrics/get_case_metrics_connectors')); + loadTestFile(require.resolve('./metrics/get_cases_metrics')); /** * Internal routes diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/metrics/get_case_metrics.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/metrics/get_case_metrics.ts index cf1b842db0fe7..d08a00ab4f088 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/metrics/get_case_metrics.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/metrics/get_case_metrics.ts @@ -30,6 +30,24 @@ export default ({ getService }: FtrProviderContext): void => { const supertestWithoutAuth = getService('supertestWithoutAuth'); describe('case metrics', () => { + it('accepts the features as string', async () => { + const newCase = await createCase(supertest, getPostCaseRequest()); + + const metrics = await getCaseMetrics({ + supertest, + caseId: newCase.id, + features: 'connectors', + }); + + expect(metrics).to.eql({ + connectors: { + total: 0, + }, + }); + + await deleteAllCaseItems(es); + }); + describe('closed case from kbn archive', () => { const closedCaseId = 'e49ad6e0-cf9d-11eb-a603-13e7747d215z'; diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/metrics/get_cases_metrics.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/metrics/get_cases_metrics.ts new file mode 100644 index 0000000000000..e3e0c2cb20570 --- /dev/null +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/metrics/get_cases_metrics.ts @@ -0,0 +1,244 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { CaseStatuses } from '@kbn/cases-plugin/common/api'; +import { + secOnly, + obsOnlyRead, + secOnlyRead, + noKibanaPrivileges, + superUser, + globalRead, + obsSecRead, + obsSec, +} from '../../../../common/lib/authentication/users'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { + createCase, + deleteAllCaseItems, + getCasesMetrics, + updateCase, +} from '../../../../common/lib/utils'; +import { getPostCaseRequest } from '../../../../common/lib/mock'; + +// eslint-disable-next-line import/no-default-export +export default ({ getService }: FtrProviderContext): void => { + const es = getService('es'); + const supertest = getService('supertest'); + const supertestWithoutAuth = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + + describe('all cases metrics', () => { + it('accepts the features as string', async () => { + const metrics = await getCasesMetrics({ + supertest, + features: 'mttr', + }); + + expect(metrics).to.eql({ mttr: 0 }); + + await deleteAllCaseItems(es); + }); + + describe('MTTR', () => { + it('responses with zero if there are no cases', async () => { + const metrics = await getCasesMetrics({ + supertest, + features: ['mttr'], + }); + + expect(metrics).to.eql({ mttr: 0 }); + }); + + it('responses with zero if there are only open case and in-progress cases', async () => { + await createCase(supertest, getPostCaseRequest()); + const theCase = await createCase(supertest, getPostCaseRequest()); + + await updateCase({ + supertest, + params: { + cases: [ + { + id: theCase.id, + version: theCase.version, + status: CaseStatuses['in-progress'], + }, + ], + }, + }); + + const metrics = await getCasesMetrics({ + supertest, + features: ['mttr'], + }); + + expect(metrics).to.eql({ mttr: 0 }); + }); + + describe('closed and open cases from kbn archive', () => { + before(async () => { + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json' + ); + }); + + after(async () => { + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json' + ); + await deleteAllCaseItems(es); + }); + + it('should calculate the mttr correctly across all cases', async () => { + const metrics = await getCasesMetrics({ + supertest, + features: ['mttr'], + }); + + expect(metrics).to.eql({ mttr: 220 }); + }); + + it('should respects the range parameters', async () => { + const metrics = await getCasesMetrics({ + supertest, + features: ['mttr'], + query: { + from: '2022-04-28', + to: '2022-04-29', + }, + }); + + expect(metrics).to.eql({ mttr: 90 }); + }); + }); + }); + + describe('rbac', () => { + before(async () => { + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json', + { space: 'space1' } + ); + }); + + after(async () => { + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json', + { space: 'space1' } + ); + await deleteAllCaseItems(es); + }); + + it('should calculate the mttr correctly only for the cases the user has access to', async () => { + for (const scenario of [ + { + user: globalRead, + expectedMetrics: { mttr: 220 }, + owners: ['securitySolutionFixture', 'observabilityFixture'], + }, + { + user: superUser, + expectedMetrics: { mttr: 220 }, + owners: ['securitySolutionFixture', 'observabilityFixture'], + }, + { + user: secOnlyRead, + expectedMetrics: { mttr: 250 }, + owners: ['securitySolutionFixture'], + }, + { user: obsOnlyRead, expectedMetrics: { mttr: 160 }, owners: ['observabilityFixture'] }, + { + user: obsSecRead, + expectedMetrics: { mttr: 220 }, + owners: ['securitySolutionFixture', 'observabilityFixture'], + }, + ]) { + const metrics = await getCasesMetrics({ + supertest: supertestWithoutAuth, + features: ['mttr'], + auth: { + user: scenario.user, + space: 'space1', + }, + }); + + expect(metrics).to.eql(scenario.expectedMetrics); + } + }); + + for (const scenario of [ + { user: noKibanaPrivileges, space: 'space1' }, + { user: secOnly, space: 'space2' }, + ]) { + it(`User ${scenario.user.username} with role(s) ${scenario.user.roles.join()} and space ${ + scenario.space + } - should NOT read a case`, async () => { + // user should not be able to read cases at the appropriate space + await getCasesMetrics({ + supertest: supertestWithoutAuth, + features: ['mttr'], + auth: { + user: scenario.user, + space: scenario.space, + }, + expectedHttpCode: 403, + }); + }); + } + + it('should respect the owner filter when having permissions', async () => { + const metrics = await getCasesMetrics({ + supertest: supertestWithoutAuth, + features: ['mttr'], + query: { + owner: 'securitySolutionFixture', + }, + auth: { + user: obsSec, + space: 'space1', + }, + }); + + expect(metrics).to.eql({ mttr: 250 }); + }); + + it('should return the correct cases when trying to exploit RBAC through the owner query parameter', async () => { + const metrics = await getCasesMetrics({ + supertest: supertestWithoutAuth, + features: ['mttr'], + query: { + owner: ['securitySolutionFixture', 'observabilityFixture'], + }, + auth: { + user: secOnly, + space: 'space1', + }, + }); + + expect(metrics).to.eql({ mttr: 250 }); + }); + + it('should respect the owner filter when using range queries', async () => { + const metrics = await getCasesMetrics({ + supertest: supertestWithoutAuth, + features: ['mttr'], + query: { + from: '2022-04-20', + to: '2022-04-30', + }, + auth: { + user: secOnly, + space: 'space1', + }, + }); + + expect(metrics).to.eql({ mttr: 250 }); + }); + }); + }); +}; diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/user_actions/get_all_user_actions.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/user_actions/get_all_user_actions.ts index 283e6b0c5301b..aacb5f6c8ae17 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/user_actions/get_all_user_actions.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/user_actions/get_all_user_actions.ts @@ -9,6 +9,7 @@ import expect from '@kbn/expect'; import { CaseResponse, + CaseSeverity, CaseStatuses, CommentType, ConnectorTypes, @@ -106,6 +107,30 @@ export default ({ getService }: FtrProviderContext): void => { expect(statusUserAction.payload).to.eql({ status: 'closed' }); }); + it('creates a severity update user action when changing the severity', async () => { + const theCase = await createCase(supertest, postCaseReq); + await updateCase({ + supertest, + params: { + cases: [ + { + id: theCase.id, + version: theCase.version, + severity: CaseSeverity.HIGH, + }, + ], + }, + }); + + const userActions = await getCaseUserActions({ supertest, caseID: theCase.id }); + const statusUserAction = userActions[1]; + + expect(userActions.length).to.eql(2); + expect(statusUserAction.type).to.eql('severity'); + expect(statusUserAction.action).to.eql('update'); + expect(statusUserAction.payload).to.eql({ severity: 'high' }); + }); + it('creates a connector update user action', async () => { const newConnector = { id: '123', diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/index.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/index.ts index 3c1ee84296270..e768c92d8c8af 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/index.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/index.ts @@ -19,23 +19,15 @@ export default ({ loadTestFile, getService }: FtrProviderContext): void => { await deleteSpacesAndUsers(getService); }); - describe('', function () { - this.tags('ciGroup13'); + // Trial + loadTestFile(require.resolve('./cases/push_case')); + loadTestFile(require.resolve('./cases/user_actions/get_all_user_actions')); + loadTestFile(require.resolve('./configure')); - // Trial - loadTestFile(require.resolve('./cases/push_case')); - loadTestFile(require.resolve('./cases/user_actions/get_all_user_actions')); - loadTestFile(require.resolve('./configure')); - }); - - describe('', function () { - this.tags('ciGroup25'); + // Common + loadTestFile(require.resolve('../common')); - // Common - loadTestFile(require.resolve('../common')); - - // NOTE: These need to be at the end because they could delete the .kibana index and inadvertently remove the users and spaces - loadTestFile(require.resolve('../common/migrations')); - }); + // NOTE: These need to be at the end because they could delete the .kibana index and inadvertently remove the users and spaces + loadTestFile(require.resolve('../common/migrations')); }); }; diff --git a/x-pack/test/cases_api_integration/spaces_only/tests/common/index.ts b/x-pack/test/cases_api_integration/spaces_only/tests/common/index.ts index 0b18a56bdcd11..a180d46d45edb 100644 --- a/x-pack/test/cases_api_integration/spaces_only/tests/common/index.ts +++ b/x-pack/test/cases_api_integration/spaces_only/tests/common/index.ts @@ -29,6 +29,8 @@ export default ({ loadTestFile }: FtrProviderContext): void => { loadTestFile(require.resolve('./configure/get_configure')); loadTestFile(require.resolve('./configure/patch_configure')); loadTestFile(require.resolve('./configure/post_configure')); + loadTestFile(require.resolve('./configure/post_configure')); + loadTestFile(require.resolve('./metrics/get_cases_metrics')); /** * Internal routes diff --git a/x-pack/test/cases_api_integration/spaces_only/tests/common/metrics/get_cases_metrics.ts b/x-pack/test/cases_api_integration/spaces_only/tests/common/metrics/get_cases_metrics.ts new file mode 100644 index 0000000000000..66fb3f4343e58 --- /dev/null +++ b/x-pack/test/cases_api_integration/spaces_only/tests/common/metrics/get_cases_metrics.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; 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 { + deleteAllCaseItems, + getAuthWithSuperUser, + getCasesMetrics, +} from '../../../../common/lib/utils'; + +// eslint-disable-next-line import/no-default-export +export default ({ getService }: FtrProviderContext): void => { + const es = getService('es'); + const supertest = getService('supertest'); + const kibanaServer = getService('kibanaServer'); + const authSpace1 = getAuthWithSuperUser(); + + describe('all cases metrics', () => { + before(async () => { + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json', + { space: 'space1' } + ); + + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json', + { space: 'space2' } + ); + }); + + after(async () => { + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json', + { space: 'space1' } + ); + + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json', + { space: 'space2' } + ); + await deleteAllCaseItems(es); + }); + + describe('MTTR', () => { + it('should calculate the mttr correctly on space 1', async () => { + const metrics = await getCasesMetrics({ + supertest, + features: ['mttr'], + auth: authSpace1, + }); + + expect(metrics).to.eql({ mttr: 220 }); + }); + + it('should calculate the mttr correctly on space 2', async () => { + const authSpace2 = getAuthWithSuperUser('space2'); + const metrics = await getCasesMetrics({ + supertest, + features: ['mttr'], + auth: authSpace2, + }); + + expect(metrics).to.eql({ mttr: 220 }); + }); + }); + }); +}; diff --git a/x-pack/test/cases_api_integration/spaces_only/tests/trial/index.ts b/x-pack/test/cases_api_integration/spaces_only/tests/trial/index.ts index 346640aa6b9de..cbf0f010048ef 100644 --- a/x-pack/test/cases_api_integration/spaces_only/tests/trial/index.ts +++ b/x-pack/test/cases_api_integration/spaces_only/tests/trial/index.ts @@ -11,9 +11,6 @@ import { createSpaces, deleteSpaces } from '../../../common/lib/authentication'; // eslint-disable-next-line import/no-default-export export default ({ loadTestFile, getService }: FtrProviderContext): void => { describe('cases spaces only enabled: trial', function () { - // Fastest ciGroup for the moment. - this.tags('ciGroup5'); - before(async () => { await createSpaces(getService); }); diff --git a/x-pack/test/cloud_integration/config.ts b/x-pack/test/cloud_integration/config.ts index 102d276b34584..0074565875845 100644 --- a/x-pack/test/cloud_integration/config.ts +++ b/x-pack/test/cloud_integration/config.ts @@ -25,7 +25,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const kibanaFunctionalConfig = await readConfigFile( - require.resolve('../../../test/functional/config.js') + require.resolve('../../../test/functional/config.base.js') ); const kibanaPort = kibanaFunctionalConfig.get('servers.kibana.port'); diff --git a/x-pack/test/common/services/bsearch_secure.ts b/x-pack/test/common/services/bsearch_secure.ts index 458e0878e187f..f60dc6aa4c3cd 100644 --- a/x-pack/test/common/services/bsearch_secure.ts +++ b/x-pack/test/common/services/bsearch_secure.ts @@ -79,12 +79,11 @@ export const BSecureSearchFactory = (retry: RetryService) => ({ .set('kbn-xsrf', 'true') .send(options); } - if (result.status === 500 || result.status === 200) { + if ((result.status === 500 || result.status === 200) && result.body) { return result; } throw new Error('try again'); }); - if (body.isRunning) { const result = await retry.try(async () => { const resp = await supertestWithoutAuth diff --git a/x-pack/test/detection_engine_api_integration/basic/config.ts b/x-pack/test/detection_engine_api_integration/basic/config.ts index 0c5c7d1649f84..26fdc62e0ec52 100644 --- a/x-pack/test/detection_engine_api_integration/basic/config.ts +++ b/x-pack/test/detection_engine_api_integration/basic/config.ts @@ -8,7 +8,10 @@ import { createTestConfig } from '../common/config'; // eslint-disable-next-line import/no-default-export -export default createTestConfig('basic', { - license: 'basic', - ssl: true, -}); +export default createTestConfig( + { + license: 'basic', + ssl: true, + }, + [require.resolve('./tests')] +); diff --git a/x-pack/test/detection_engine_api_integration/basic/tests/index.ts b/x-pack/test/detection_engine_api_integration/basic/tests/index.ts index 1a5ea8de935b4..349d33c89fdf3 100644 --- a/x-pack/test/detection_engine_api_integration/basic/tests/index.ts +++ b/x-pack/test/detection_engine_api_integration/basic/tests/index.ts @@ -10,8 +10,6 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default ({ loadTestFile }: FtrProviderContext): void => { describe('detection engine api basic license', function () { - this.tags('ciGroup1'); - loadTestFile(require.resolve('./add_prepackaged_rules')); loadTestFile(require.resolve('./create_rules')); loadTestFile(require.resolve('./create_rules_bulk')); diff --git a/x-pack/test/detection_engine_api_integration/common/config.ts b/x-pack/test/detection_engine_api_integration/common/config.ts index 96a83d2c3a427..a95cb937d4cd9 100644 --- a/x-pack/test/detection_engine_api_integration/common/config.ts +++ b/x-pack/test/detection_engine_api_integration/common/config.ts @@ -31,7 +31,7 @@ const enabledActionTypes = [ 'test.rate-limit', ]; -export function createTestConfig(name: string, options: CreateTestConfigOptions) { +export function createTestConfig(options: CreateTestConfigOptions, testFiles?: string[]) { const { license = 'trial', ssl = false } = options; return async ({ readConfigFile }: FtrConfigProviderContext) => { @@ -47,7 +47,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) }; return { - testFiles: [require.resolve(`../${name}/tests/`)], + testFiles, servers, services, junit: { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/README.md b/x-pack/test/detection_engine_api_integration/security_and_spaces/README.md new file mode 100644 index 0000000000000..ca10827803c65 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/README.md @@ -0,0 +1,33 @@ +# What are all these groups? + +These tests take a while so they have been broken up into groups with their own `config.ts` and `index.ts` file, causing each of these groups to be independent bundles of tests which can be run on some worker in CI without taking an incredible amount of time. + +Want to change the groups to something more logical? Have fun! Just make sure that each group executes on CI in less than 10 minutes or so. We don't currently have any mechanism for validating this right now, you just need to look at the times in the log output on CI, but we'll be working on tooling for making this information more accessible soon. + +- Kibana Operations + +# Rule Exception List Tests + +These tests are currently in group7-9. + +These are tests for rule exception lists where we test each data type + +- date +- double +- float +- integer +- ip +- keyword +- long +- text + +Against the operator types of: + +- "is" +- "is not" +- "is one of" +- "is not one of" +- "exists" +- "does not exist" +- "is in list" +- "is not in list" diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/config.base.ts similarity index 87% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/config.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/config.base.ts index 78203525b887a..ed72e1faa682c 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/config.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/config.base.ts @@ -8,7 +8,7 @@ import { createTestConfig } from '../common/config'; // eslint-disable-next-line import/no-default-export -export default createTestConfig('security_and_spaces', { +export default createTestConfig({ license: 'trial', ssl: 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/group1/add_actions.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_actions.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/add_actions.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_prepackaged_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/add_prepackaged_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_prepackaged_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/add_prepackaged_rules.ts 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/group1/aliases.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/aliases.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/aliases.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/check_privileges.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/check_privileges.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/check_privileges.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/check_privileges.ts diff --git a/x-pack/test/functional_embedded/config.firefox.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/config.ts similarity index 54% rename from x-pack/test/functional_embedded/config.firefox.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/config.ts index 49359d37673de..2430b8f2148d9 100644 --- a/x-pack/test/functional_embedded/config.firefox.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/config.ts @@ -7,23 +7,12 @@ import { FtrConfigProviderContext } from '@kbn/test'; +// eslint-disable-next-line import/no-default-export export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const chromeConfig = await readConfigFile(require.resolve('./config')); + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); return { - ...chromeConfig.getAll(), - - browser: { - type: 'firefox', - acceptInsecureCerts: true, - }, - - suiteTags: { - exclude: ['skipFirefox'], - }, - - junit: { - reportName: 'Firefox Kibana Embedded in iframe with X-Pack Security', - }, + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], }; } 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/group1/create_index.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_index.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_index.ts 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/group1/create_ml.ts similarity index 98% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_ml.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_ml.ts index 20c914e17ce70..94d65933bc9dc 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/group1/create_ml.ts @@ -92,7 +92,8 @@ export default ({ getService }: FtrProviderContext) => { return body; } - describe('Generating signals from ml anomalies', () => { + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/125033 + describe.skip('Generating signals from ml anomalies', () => { before(async () => { // Order is critical here: auditbeat data must be loaded before attempting to start the ML job, // as the job looks for certain indices on start 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/group1/create_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_rules.ts 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/group1/create_rules_bulk.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_rules_bulk.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_signals_migrations.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_signals_migrations.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_signals_migrations.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_signals_migrations.ts 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/group1/create_threat_matching.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_threat_matching.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_threat_matching.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/delete_rules.ts similarity index 99% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/delete_rules.ts index 69cbd9fd4d4c7..f138bad4b9d2c 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/delete_rules.ts @@ -20,6 +20,7 @@ import { getSimpleRuleOutput, getSimpleRuleOutputWithoutRuleId, getSimpleRuleWithoutRuleId, + getSlackAction, getWebHookAction, removeServerGeneratedProperties, removeServerGeneratedPropertiesIncludingRuleId, @@ -148,7 +149,7 @@ export default ({ getService }: FtrProviderContext): void => { const { body: hookAction } = await supertest .post('/api/actions/action') .set('kbn-xsrf', 'true') - .send(getWebHookAction()) + .send(getSlackAction()) .expect(200); // create a rule without actions diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/delete_rules_bulk.ts similarity index 99% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules_bulk.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/delete_rules_bulk.ts index 29f5d5edf49d9..d05dcb690994c 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules_bulk.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/delete_rules_bulk.ts @@ -20,6 +20,7 @@ import { getSimpleRuleOutput, getSimpleRuleOutputWithoutRuleId, getSimpleRuleWithoutRuleId, + getSlackAction, getWebHookAction, removeServerGeneratedProperties, removeServerGeneratedPropertiesIncludingRuleId, @@ -277,7 +278,7 @@ export default ({ getService }: FtrProviderContext): void => { const { body: hookAction } = await supertest .post('/api/actions/action') .set('kbn-xsrf', 'true') - .send(getWebHookAction()) + .send(getSlackAction()) .expect(200); // create a rule without actions @@ -318,12 +319,12 @@ export default ({ getService }: FtrProviderContext): void => { const { body: hookAction1 } = await supertest .post('/api/actions/action') .set('kbn-xsrf', 'true') - .send(getWebHookAction()) + .send(getSlackAction()) .expect(200); const { body: hookAction2 } = await supertest .post('/api/actions/action') .set('kbn-xsrf', 'true') - .send(getWebHookAction()) + .send(getSlackAction()) .expect(200); // create 2 rules without actions diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_signals_migrations.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/delete_signals_migrations.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_signals_migrations.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/delete_signals_migrations.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/export_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/export_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/export_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/export_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/finalize_signals_migrations.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/finalize_signals_migrations.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/finalize_signals_migrations.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/finalize_signals_migrations.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/find_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/find_rules.ts 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/group1/generating_signals.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/generating_signals.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/generating_signals.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_prepackaged_rules_status.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/get_prepackaged_rules_status.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_prepackaged_rules_status.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/get_prepackaged_rules_status.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_rule_execution_events.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/get_rule_execution_events.ts similarity index 62% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_rule_execution_events.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/get_rule_execution_events.ts index d3bddc8b0d46c..9fadbd39f7704 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_rule_execution_events.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/get_rule_execution_events.ts @@ -52,11 +52,6 @@ export default ({ getService }: FtrProviderContext) => { await deleteAllEventLogExecutionEvents(es, log); }); - afterEach(async () => { - await deleteAllAlerts(supertest, log); - await deleteAllEventLogExecutionEvents(es, log); - }); - it('should return an error if rule does not exist', async () => { const start = dateMath.parse('now-24h')?.utc().toISOString(); const end = dateMath.parse('now', { roundUp: true })?.utc().toISOString(); @@ -90,7 +85,7 @@ export default ({ getService }: FtrProviderContext) => { expect(response.body.events[0].search_duration_ms).to.greaterThan(0); expect(response.body.events[0].schedule_delay_ms).to.greaterThan(0); expect(response.body.events[0].indexing_duration_ms).to.greaterThan(0); - expect(response.body.events[0].gap_duration_ms).to.eql(0); + expect(response.body.events[0].gap_duration_s).to.eql(0); expect(response.body.events[0].security_status).to.eql('succeeded'); expect(response.body.events[0].security_message).to.eql('succeeded'); }); @@ -114,7 +109,7 @@ export default ({ getService }: FtrProviderContext) => { expect(response.body.events[0].search_duration_ms).to.eql(0); expect(response.body.events[0].schedule_delay_ms).to.greaterThan(0); expect(response.body.events[0].indexing_duration_ms).to.eql(0); - expect(response.body.events[0].gap_duration_ms).to.eql(0); + expect(response.body.events[0].gap_duration_s).to.eql(0); expect(response.body.events[0].security_status).to.eql('partial failure'); expect( response.body.events[0].security_message.startsWith( @@ -123,16 +118,15 @@ export default ({ getService }: FtrProviderContext) => { ).to.eql(true); }); - // TODO: Debug indexing - it.skip('should return execution events for a rule that has executed in a failure state with a gap', async () => { + it('should return execution events for a rule that has executed in a failure state with a gap', async () => { const rule = getRuleForSignalTesting(['auditbeat-*'], uuid.v4(), false); const { id } = await createRule(supertest, log, rule); const start = dateMath.parse('now')?.utc().toISOString(); const end = dateMath.parse('now+24h', { roundUp: true })?.utc().toISOString(); - // Create 5 timestamps a minute apart to use in the templated data - const dateTimes = [...Array(5).keys()].map((i) => + // Create 5 timestamps (failedGapExecution.length) a minute apart to use in the templated data + const dateTimes = [...Array(failedGapExecution.length).keys()].map((i) => moment(start) .add(i + 1, 'm') .toDate() @@ -144,6 +138,7 @@ export default ({ getService }: FtrProviderContext) => { set(e, 'event.start', dateTimes[i]); set(e, 'event.end', dateTimes[i]); set(e, 'rule.id', id); + set(e, 'kibana.saved_objects[0].id', id); return e; }); @@ -155,73 +150,19 @@ export default ({ getService }: FtrProviderContext) => { .set('kbn-xsrf', 'true') .query({ start, end }); - // console.log(JSON.stringify(response)); - expect(response.status).to.eql(200); expect(response.body.total).to.eql(1); - expect(response.body.events[0].duration_ms).to.eql(4236); + expect(response.body.events[0].duration_ms).to.eql(1545); expect(response.body.events[0].search_duration_ms).to.eql(0); - expect(response.body.events[0].schedule_delay_ms).to.greaterThan(0); + expect(response.body.events[0].schedule_delay_ms).to.eql(544808); expect(response.body.events[0].indexing_duration_ms).to.eql(0); - expect(response.body.events[0].gap_duration_ms).to.greaterThan(0); + expect(response.body.events[0].gap_duration_s).to.eql(245); expect(response.body.events[0].security_status).to.eql('failed'); expect( response.body.events[0].security_message.startsWith( - 'Check privileges failed to execute ResponseError: index_not_found_exception: [index_not_found_exception] Reason: no such index [no-name-index]' + '4 minutes (244689ms) were not queried between this rule execution and the last execution, so signals may have been missed. Consider increasing your look behind time or adding more Kibana instances.' ) ).to.eql(true); }); - - // it('should return execution events when providing a status filter', async () => { - // const rule = getRuleForSignalTesting(['auditbeat-*', 'no-name-index']); - // const { id } = await createRule(supertest, log, rule); - // await waitForRuleSuccessOrStatus(supertest, log, id, RuleExecutionStatus.failed); - // await waitForSignalsToBePresent(supertest, log, 1, [id]); - // - // const start = dateMath.parse('now-24h')?.utc().toISOString(); - // const end = dateMath.parse('now', { roundUp: true })?.utc().toISOString(); - // const response = await supertest - // .get(detectionEngineRuleExecutionEventsUrl(id)) - // .set('kbn-xsrf', 'true') - // .query({ start, end }); - // - // expect(response.status).to.eql(200); - // expect(response.body.total).to.eql(1); - // expect(response.body.events[0].duration_ms).to.greaterThan(0); - // expect(response.body.events[0].search_duration_ms).to.eql(0); - // expect(response.body.events[0].schedule_delay_ms).to.greaterThan(0); - // expect(response.body.events[0].indexing_duration_ms).to.eql(0); - // expect(response.body.events[0].gap_duration_ms).to.eql(0); - // expect(response.body.events[0].security_status).to.eql('failed'); - // expect(response.body.events[0].security_message).to.include( - // 'were not queried between this rule execution and the last execution, so signals may have been missed. ' - // ); - // }); - - // it('should return execution events when providing a status filter and sortField', async () => { - // const rule = getRuleForSignalTesting(['auditbeat-*', 'no-name-index']); - // const { id } = await createRule(supertest, log, rule); - // await waitForRuleSuccessOrStatus(supertest, log, id, RuleExecutionStatus.failed); - // await waitForSignalsToBePresent(supertest, log, 1, [id]); - // - // const start = dateMath.parse('now-24h')?.utc().toISOString(); - // const end = dateMath.parse('now', { roundUp: true })?.utc().toISOString(); - // const response = await supertest - // .get(detectionEngineRuleExecutionEventsUrl(id)) - // .set('kbn-xsrf', 'true') - // .query({ start, end }); - // - // expect(response.status).to.eql(200); - // expect(response.body.total).to.eql(1); - // expect(response.body.events[0].duration_ms).to.greaterThan(0); - // expect(response.body.events[0].search_duration_ms).to.eql(0); - // expect(response.body.events[0].schedule_delay_ms).to.greaterThan(0); - // expect(response.body.events[0].indexing_duration_ms).to.eql(0); - // expect(response.body.events[0].gap_duration_ms).to.eql(0); - // expect(response.body.events[0].security_status).to.eql('failed'); - // expect(response.body.events[0].security_message).to.include( - // 'were not queried between this rule execution and the last execution, so signals may have been missed. ' - // ); - // }); }); }; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_signals_migration_status.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/get_signals_migration_status.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_signals_migration_status.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/get_signals_migration_status.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/ignore_fields.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/ignore_fields.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/ignore_fields.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/ignore_fields.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_export_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/import_export_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_export_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/import_export_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/import_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/import_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/index.ts new file mode 100644 index 0000000000000..f7a96c2f496d8 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/index.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 { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 1', function () { + // !!NOTE: For new routes that do any updates on a rule, please ensure that you are including the legacy + // action migration code. We are monitoring legacy action telemetry to clean up once we see their + // existence being near 0. + + loadTestFile(require.resolve('./aliases')); + loadTestFile(require.resolve('./add_actions')); + loadTestFile(require.resolve('./update_actions')); + loadTestFile(require.resolve('./add_prepackaged_rules')); + loadTestFile(require.resolve('./check_privileges')); + loadTestFile(require.resolve('./create_index')); + loadTestFile(require.resolve('./create_rules')); + loadTestFile(require.resolve('./preview_rules')); + loadTestFile(require.resolve('./create_rules_bulk')); + loadTestFile(require.resolve('./create_ml')); + loadTestFile(require.resolve('./create_threat_matching')); + loadTestFile(require.resolve('./delete_rules')); + loadTestFile(require.resolve('./delete_rules_bulk')); + loadTestFile(require.resolve('./export_rules')); + loadTestFile(require.resolve('./find_rules')); + loadTestFile(require.resolve('./generating_signals')); + loadTestFile(require.resolve('./get_prepackaged_rules_status')); + loadTestFile(require.resolve('./get_rule_execution_events')); + loadTestFile(require.resolve('./import_rules')); + loadTestFile(require.resolve('./import_export_rules')); + loadTestFile(require.resolve('./legacy_actions_migrations')); + loadTestFile(require.resolve('./read_rules')); + loadTestFile(require.resolve('./resolve_read_rules')); + loadTestFile(require.resolve('./update_rules')); + loadTestFile(require.resolve('./update_rules_bulk')); + loadTestFile(require.resolve('./patch_rules_bulk')); + loadTestFile(require.resolve('./perform_bulk_action')); + loadTestFile(require.resolve('./patch_rules')); + loadTestFile(require.resolve('./read_privileges')); + loadTestFile(require.resolve('./open_close_signals')); + loadTestFile(require.resolve('./get_signals_migration_status')); + loadTestFile(require.resolve('./create_signals_migrations')); + loadTestFile(require.resolve('./finalize_signals_migrations')); + loadTestFile(require.resolve('./delete_signals_migrations')); + loadTestFile(require.resolve('./timestamps')); + loadTestFile(require.resolve('./runtime')); + loadTestFile(require.resolve('./throttle')); + loadTestFile(require.resolve('./ignore_fields')); + loadTestFile(require.resolve('./migrations')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/legacy_actions_migrations.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/legacy_actions_migrations.ts new file mode 100644 index 0000000000000..ad6e45954e06a --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/legacy_actions_migrations.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. + */ + +import expect from '@kbn/expect'; + +import { DETECTION_ENGINE_RULES_URL } from '@kbn/security-solution-plugin/common/constants'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { + getLegacyActionSOById, + getLegacyActionNotificationSOById, + getRuleSOById, +} from '../../utils'; + +/** + * @deprecated Once the legacy notification system is removed, remove this test too. + */ +// eslint-disable-next-line import/no-default-export +export default ({ getService }: FtrProviderContext) => { + const supertest = getService('supertest'); + const es = getService('es'); + const esArchiver = getService('esArchiver'); + + // This test suite is not meant to test a specific route, but to test the legacy action migration + // code that lives in multiple routes. This code is also tested in each of the routes it lives in + // but not in as much detail and relying on mocks. This test loads an es_archive containing rules + // created in 7.15 with legacy actions. + // For new routes that do any updates on a rule, please ensure that you are including the legacy + // action migration code. We are monitoring legacy action telemetry to clean up once we see their + // existence being near 0. + describe('migrate_legacy_actions', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/security_solution/legacy_actions'); + }); + + after(async () => { + await esArchiver.unload( + 'x-pack/test/functional/es_archives/security_solution/legacy_actions' + ); + }); + + it('migrates legacy actions for rule with no actions', async () => { + const soId = '9095ee90-b075-11ec-bb3f-1f063f8e06cf'; + const ruleId = '2297be91-894c-4831-830f-b424a0ec84f0'; + const legacySidecarId = '926668d0-b075-11ec-bb3f-1f063f8e06cf'; + + // check for legacy sidecar action + const sidecarActionSO = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionSO.hits.hits.length).to.eql(1); + + // check for legacy notification SO + // should not have been created for a rule with no actions + const legacyNotificationSO = await getLegacyActionNotificationSOById(es, soId); + expect(legacyNotificationSO.hits.hits.length).to.eql(0); + + // patch enable the rule + // any route that edits the rule should trigger the migration + await supertest + .patch(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send({ rule_id: ruleId, enabled: false }) + .expect(200); + + const { + hits: { + hits: [{ _source: ruleSO }], + }, + } = await getRuleSOById(es, soId); + + // Sidecar should be removed + const sidecarActionsSOAfterMigration = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionsSOAfterMigration.hits.hits.length).to.eql(0); + + expect(ruleSO?.alert.actions).to.eql([]); + expect(ruleSO?.alert.throttle).to.eql(null); + expect(ruleSO?.alert.notifyWhen).to.eql('onActiveAlert'); + }); + + it('migrates legacy actions for rule with action run on every run', async () => { + const soId = 'dc6595f0-b075-11ec-bb3f-1f063f8e06cf'; + const ruleId = '72a0d429-363b-4f70-905e-c6019a224d40'; + const legacySidecarId = 'dde13970-b075-11ec-bb3f-1f063f8e06cf'; + + // check for legacy sidecar action + const sidecarActionSO = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionSO.hits.hits.length).to.eql(1); + + // check for legacy notification SO + // should not have been created for a rule that runs on every rule run + const legacyNotificationSO = await getLegacyActionNotificationSOById(es, soId); + expect(legacyNotificationSO.hits.hits.length).to.eql(0); + + // patch enable the rule + // any route that edits the rule should trigger the migration + await supertest + .patch(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send({ rule_id: ruleId, enabled: false }) + .expect(200); + + const { + hits: { + hits: [{ _source: ruleSO }], + }, + } = await getRuleSOById(es, soId); + + // Sidecar should be removed + const sidecarActionsSOAfterMigration = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionsSOAfterMigration.hits.hits.length).to.eql(0); + + expect(ruleSO?.alert.actions).to.eql([ + { + actionRef: 'action_0', + actionTypeId: '.email', + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + subject: 'Test Actions', + to: ['test@test.com'], + }, + }, + ]); + expect(ruleSO?.alert.throttle).to.eql(null); + expect(ruleSO?.alert.notifyWhen).to.eql('onActiveAlert'); + expect(ruleSO?.references).to.eql([ + { + id: 'c95cb100-b075-11ec-bb3f-1f063f8e06cf', + name: 'action_0', + type: 'action', + }, + ]); + }); + + it('migrates legacy actions for rule with action run hourly', async () => { + const soId = '064e3160-b076-11ec-bb3f-1f063f8e06cf'; + const ruleId = '4c056b05-75ac-4209-be32-82100f771eb4'; + const legacySidecarId = '07aa8d10-b076-11ec-bb3f-1f063f8e06cf'; + + // check for legacy sidecar action + const sidecarActionSO = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionSO.hits.hits.length).to.eql(1); + + // check for legacy notification SO + const legacyNotificationSO = await getLegacyActionNotificationSOById(es, soId); + expect(legacyNotificationSO.hits.hits.length).to.eql(1); + + // patch enable the rule + // any route that edits the rule should trigger the migration + await supertest + .patch(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send({ rule_id: ruleId, enabled: false }) + .expect(200); + + const { + hits: { + hits: [{ _source: ruleSO }], + }, + } = await getRuleSOById(es, soId); + + // Sidecar should be removed + const sidecarActionsSOAfterMigration = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionsSOAfterMigration.hits.hits.length).to.eql(0); + + // Legacy notification should be removed + const legacyNotificationSOAfterMigration = await getLegacyActionNotificationSOById(es, soId); + expect(legacyNotificationSOAfterMigration.hits.hits.length).to.eql(0); + + expect(ruleSO?.alert.actions).to.eql([ + { + actionTypeId: '.email', + params: { + subject: 'Rule email', + to: ['test@test.com'], + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + }, + actionRef: 'action_0', + group: 'default', + }, + { + actionTypeId: '.slack', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + }, + actionRef: 'action_1', + group: 'default', + }, + ]); + expect(ruleSO?.alert.throttle).to.eql('1h'); + expect(ruleSO?.alert.notifyWhen).to.eql('onThrottleInterval'); + expect(ruleSO?.references).to.eql([ + { + id: 'c95cb100-b075-11ec-bb3f-1f063f8e06cf', + name: 'action_0', + type: 'action', + }, + { + id: '207fa0e0-c04e-11ec-8a52-4fb92379525a', + name: 'action_1', + type: 'action', + }, + ]); + }); + + it('migrates legacy actions for rule with action run daily', async () => { + const soId = '27639570-b076-11ec-bb3f-1f063f8e06cf'; + const ruleId = '8e2c8550-f13f-4e21-be0c-92148d71a5f1'; + const legacySidecarId = '291ae260-b076-11ec-bb3f-1f063f8e06cf'; + + // check for legacy sidecar action + const sidecarActionSO = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionSO.hits.hits.length).to.eql(1); + + // check for legacy notification SO + const legacyNotificationSO = await getLegacyActionNotificationSOById(es, soId); + expect(legacyNotificationSO.hits.hits.length).to.eql(1); + + // patch enable the rule + await supertest + .patch(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send({ rule_id: ruleId, enabled: false }) + .expect(200); + + const { + hits: { + hits: [{ _source: ruleSO }], + }, + } = await getRuleSOById(es, soId); + + // Sidecar should be removed + const sidecarActionsSOAfterMigration = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionsSOAfterMigration.hits.hits.length).to.eql(0); + + // Legacy notification should be removed + const legacyNotificationSOAfterMigration = await getLegacyActionNotificationSOById(es, soId); + expect(legacyNotificationSOAfterMigration.hits.hits.length).to.eql(0); + + expect(ruleSO?.alert.actions).to.eql([ + { + actionRef: 'action_0', + actionTypeId: '.email', + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + subject: 'Test Actions', + to: ['test@test.com'], + }, + }, + ]); + expect(ruleSO?.alert.throttle).to.eql('1d'); + expect(ruleSO?.alert.notifyWhen).to.eql('onThrottleInterval'); + expect(ruleSO?.references).to.eql([ + { + id: 'c95cb100-b075-11ec-bb3f-1f063f8e06cf', + name: 'action_0', + type: 'action', + }, + ]); + }); + + it('migrates legacy actions for rule with action run weekly', async () => { + const soId = '61ec7a40-b076-11ec-bb3f-1f063f8e06cf'; + const ruleId = '05fbdd2a-e802-420b-bdc3-95ae0acca454'; + const legacySidecarId = '63aa2fd0-b076-11ec-bb3f-1f063f8e06cf'; + + // check for legacy sidecar action + const sidecarActionSO = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionSO.hits.hits.length).to.eql(1); + + // check for legacy notification SO + const legacyNotificationSO = await getLegacyActionNotificationSOById(es, soId); + expect(legacyNotificationSO.hits.hits.length).to.eql(1); + + // patch enable the rule + await supertest + .patch(DETECTION_ENGINE_RULES_URL) + .set('kbn-xsrf', 'true') + .send({ rule_id: ruleId, enabled: false }) + .expect(200); + + const { + hits: { + hits: [{ _source: ruleSO }], + }, + } = await getRuleSOById(es, soId); + + // Sidecar should be removed + const sidecarActionsSOAfterMigration = await getLegacyActionSOById(es, legacySidecarId); + expect(sidecarActionsSOAfterMigration.hits.hits.length).to.eql(0); + + // Legacy notification should be removed + const legacyNotificationSOAfterMigration = await getLegacyActionNotificationSOById(es, soId); + expect(legacyNotificationSOAfterMigration.hits.hits.length).to.eql(0); + + expect(ruleSO?.alert.actions).to.eql([ + { + actionRef: 'action_0', + actionTypeId: '.email', + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + subject: 'Test Actions', + to: ['test@test.com'], + }, + }, + ]); + expect(ruleSO?.alert.throttle).to.eql('7d'); + expect(ruleSO?.alert.notifyWhen).to.eql('onThrottleInterval'); + expect(ruleSO?.references).to.eql([ + { + id: 'c95cb100-b075-11ec-bb3f-1f063f8e06cf', + name: 'action_0', + type: 'action', + }, + ]); + }); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/migrations.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/migrations.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/migrations.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/migrations.ts 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/group1/open_close_signals.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/open_close_signals.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/open_close_signals.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/patch_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/patch_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/patch_rules_bulk.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules_bulk.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/patch_rules_bulk.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/perform_bulk_action.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/perform_bulk_action.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/perform_bulk_action.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/perform_bulk_action.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/preview_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/preview_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/preview_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/preview_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/read_privileges.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/read_privileges.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/read_privileges.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/read_privileges.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/read_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/read_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/read_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/read_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/resolve_read_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/resolve_read_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/resolve_read_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/resolve_read_rules.ts 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/group1/runtime.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/runtime.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/runtime.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/template_data/execution_events.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/template_data/execution_events.ts similarity index 83% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/template_data/execution_events.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/template_data/execution_events.ts index c4767bbcc5632..4a674c52fa1ed 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/template_data/execution_events.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/template_data/execution_events.ts @@ -5,6 +5,20 @@ * 2.0. */ +/** + * When using these execution events as templates be sure to replace all the following fields with their updated values + * + * E.g. + * set(e, '@timestamp', dateTimes[i]); + * set(e, 'event.start', dateTimes[i]); + * set(e, 'event.end', dateTimes[i]); + * set(e, 'rule.id', id); + * set(e, 'kibana.saved_objects[0].id', id); + */ + +/** + * Rule executed without issue + */ export const successfulExecution = [ { '@timestamp': '2022-03-17T22:59:31.360Z', @@ -226,30 +240,24 @@ export const successfulExecution = [ }, ]; +/** + * Rule execution identified gap since last execution + */ export const failedGapExecution = [ { - '@timestamp': '2022-03-17T12:36:16.413Z', + '@timestamp': '2022-03-17T12:36:14.868Z', event: { provider: 'alerting', - action: 'execute', + action: 'execute-start', kind: 'alert', category: ['siem'], start: '2022-03-17T12:36:14.868Z', - outcome: 'success', - end: '2022-03-17T12:36:16.413Z', - duration: 1545000000, }, kibana: { alert: { rule: { execution: { uuid: '38fa2d4a-94d3-4ea3-80d6-d1284eb98357', - metrics: { - number_of_triggered_actions: 0, - number_of_searches: 6, - es_search_duration_ms: 2, - total_search_duration_ms: 15, - }, }, }, }, @@ -265,9 +273,6 @@ export const failedGapExecution = [ scheduled: '2022-03-17T12:27:10.060Z', schedule_delay: 544808000000, }, - alerting: { - status: 'ok', - }, server_uuid: '5b2de169-2785-441b-ae8c-186a1936b17d', version: '8.2.0', }, @@ -276,22 +281,21 @@ export const failedGapExecution = [ license: 'basic', category: 'siem.queryRule', ruleset: 'siem', - name: 'Lots of Execution Events', }, - message: - "rule executed: siem.queryRule:fb1fc150-a292-11ec-a2cf-c1b28b0392b0: 'Lots of Execution Events'", + message: 'rule execution start: "fb1fc150-a292-11ec-a2cf-c1b28b0392b0"', ecs: { version: '1.8.0', }, }, { - '@timestamp': '2022-03-17T12:36:15.382Z', + '@timestamp': '2022-03-17T12:36:14.888Z', event: { provider: 'securitySolution.ruleExecution', - kind: 'metric', - action: 'execution-metrics', - sequence: 1, + kind: 'event', + action: 'status-change', + sequence: 0, }, + message: '', rule: { id: 'fb1fc150-a292-11ec-a2cf-c1b28b0392b0', name: 'Lots of Execution Events', @@ -301,9 +305,8 @@ export const failedGapExecution = [ alert: { rule: { execution: { - metrics: { - execution_gap_duration_s: 245, - }, + status: 'running', + status_order: 15, uuid: '38fa2d4a-94d3-4ea3-80d6-d1284eb98357', }, }, @@ -364,14 +367,13 @@ export const failedGapExecution = [ }, }, { - '@timestamp': '2022-03-17T12:36:14.888Z', + '@timestamp': '2022-03-17T12:36:15.382Z', event: { provider: 'securitySolution.ruleExecution', - kind: 'event', - action: 'status-change', - sequence: 0, + kind: 'metric', + action: 'execution-metrics', + sequence: 1, }, - message: '', rule: { id: 'fb1fc150-a292-11ec-a2cf-c1b28b0392b0', name: 'Lots of Execution Events', @@ -381,8 +383,9 @@ export const failedGapExecution = [ alert: { rule: { execution: { - status: 'running', - status_order: 15, + metrics: { + execution_gap_duration_s: 245, + }, uuid: '38fa2d4a-94d3-4ea3-80d6-d1284eb98357', }, }, @@ -403,19 +406,28 @@ export const failedGapExecution = [ }, }, { - '@timestamp': '2022-03-17T12:36:14.868Z', + '@timestamp': '2022-03-17T12:36:16.413Z', event: { provider: 'alerting', - action: 'execute-start', + action: 'execute', kind: 'alert', category: ['siem'], start: '2022-03-17T12:36:14.868Z', + outcome: 'success', + end: '2022-03-17T12:36:16.413Z', + duration: 1545000000, }, kibana: { alert: { rule: { execution: { uuid: '38fa2d4a-94d3-4ea3-80d6-d1284eb98357', + metrics: { + number_of_triggered_actions: 0, + number_of_searches: 6, + es_search_duration_ms: 2, + total_search_duration_ms: 15, + }, }, }, }, @@ -431,6 +443,9 @@ export const failedGapExecution = [ scheduled: '2022-03-17T12:27:10.060Z', schedule_delay: 544808000000, }, + alerting: { + status: 'ok', + }, server_uuid: '5b2de169-2785-441b-ae8c-186a1936b17d', version: '8.2.0', }, @@ -439,14 +454,19 @@ export const failedGapExecution = [ license: 'basic', category: 'siem.queryRule', ruleset: 'siem', + name: 'Lots of Execution Events', }, - message: 'rule execution start: "fb1fc150-a292-11ec-a2cf-c1b28b0392b0"', + message: + "rule executed: siem.queryRule:fb1fc150-a292-11ec-a2cf-c1b28b0392b0: 'Lots of Execution Events'", ecs: { version: '1.8.0', }, }, ]; +/** + * Rule execution resulted in partial warning, e.g. missing index pattern + */ export const partialWarningExecution = [ { '@timestamp': '2022-03-16T23:28:36.012Z', @@ -628,3 +648,112 @@ export const partialWarningExecution = [ }, }, ]; + +/** + * Rule execution failed because rule is disabled (configure 1s interval/lookback then rule + * is disabled while running) + */ +export const failedRanAfterDisabled = [ + { + '@timestamp': '2022-04-21T02:00:55.400Z', + event: { + provider: 'alerting', + action: 'execute', + kind: 'alert', + category: ['siem'], + start: '2022-04-21T02:00:55.397Z', + end: '2022-04-21T02:00:55.400Z', + duration: 3000000, + reason: 'disabled', + outcome: 'failure', + }, + kibana: { + alert: { + rule: { + rule_type_id: 'siem.queryRule', + consumer: 'siem', + execution: { + uuid: '50eb8b2e-8334-4387-b77f-d47fdb7fbe2d', + }, + }, + }, + saved_objects: [ + { + rel: 'primary', + type: 'alert', + id: 'a890e240-b9fb-11ec-8598-338317271cf4', + type_id: 'siem.queryRule', + }, + ], + space_ids: ['default'], + task: { + scheduled: '2022-04-21T02:00:53.325Z', + schedule_delay: 2072000000, + }, + alerting: { + status: 'error', + }, + server_uuid: '5b2de169-2785-441b-ae8c-186a1936b17d', + version: '8.3.0', + }, + rule: { + id: 'a890e240-b9fb-11ec-8598-338317271cf4', + license: 'basic', + category: 'siem.queryRule', + ruleset: 'siem', + }, + error: { + message: 'Rule failed to execute because rule ran after it was disabled.', + }, + message: 'siem.queryRule:a890e240-b9fb-11ec-8598-338317271cf4: execution failed', + ecs: { + version: '1.8.0', + }, + }, + { + '@timestamp': '2022-04-21T02:00:55.397Z', + event: { + provider: 'alerting', + action: 'execute-start', + kind: 'alert', + category: ['siem'], + start: '2022-04-21T02:00:55.397Z', + }, + kibana: { + alert: { + rule: { + rule_type_id: 'siem.queryRule', + consumer: 'siem', + execution: { + uuid: '50eb8b2e-8334-4387-b77f-d47fdb7fbe2d', + }, + }, + }, + saved_objects: [ + { + rel: 'primary', + type: 'alert', + id: 'a890e240-b9fb-11ec-8598-338317271cf4', + type_id: 'siem.queryRule', + }, + ], + space_ids: ['default'], + task: { + scheduled: '2022-04-21T02:00:53.325Z', + schedule_delay: 2072000000, + }, + server_uuid: '5b2de169-2785-441b-ae8c-186a1936b17d', + version: '8.3.0', + }, + rule: { + id: 'a890e240-b9fb-11ec-8598-338317271cf4', + license: 'basic', + category: 'siem.queryRule', + ruleset: 'siem', + }, + message: 'rule execution start: "a890e240-b9fb-11ec-8598-338317271cf4"', + ecs: { + version: '1.8.0', + }, + }, +]; 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/group1/throttle.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/throttle.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/throttle.ts 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/group1/timestamps.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/timestamps.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/timestamps.ts 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/group1/update_actions.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_actions.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/update_actions.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/update_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/update_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/update_rules_bulk.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules_bulk.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group1/update_rules_bulk.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group2/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group2/config.ts new file mode 100644 index 0000000000000..2430b8f2148d9 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group2/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} 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/group2/create_endpoint_exceptions.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group2/create_endpoint_exceptions.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group2/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group2/index.ts new file mode 100644 index 0000000000000..f477b23e801f3 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group2/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 2', function () { + loadTestFile(require.resolve('./create_endpoint_exceptions')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group3/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group3/config.ts new file mode 100644 index 0000000000000..2430b8f2148d9 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group3/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} 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/group3/create_exceptions.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_exceptions.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group3/create_exceptions.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group3/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group3/index.ts new file mode 100644 index 0000000000000..10d4e9c2d6635 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group3/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 3', function () { + loadTestFile(require.resolve('./create_exceptions')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/config.ts new file mode 100644 index 0000000000000..2430b8f2148d9 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/index.ts new file mode 100644 index 0000000000000..9394e81017aba --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 4', function () { + loadTestFile(require.resolve('./telemetry')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/README.md b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/README.md similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/README.md rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/README.md diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/index.ts similarity index 51% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/index.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/index.ts index d2050179abd0e..4e180f73dc742 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/index.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/index.ts @@ -10,15 +10,12 @@ import { FtrProviderContext } from '../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default ({ loadTestFile }: FtrProviderContext): void => { describe('Detection rule type telemetry', function () { - describe('', function () { - this.tags('ciGroup28'); - loadTestFile(require.resolve('./usage_collector/all_types')); - loadTestFile(require.resolve('./usage_collector/detection_rules')); - loadTestFile(require.resolve('./usage_collector/detection_rule_status')); + loadTestFile(require.resolve('./usage_collector/all_types')); + loadTestFile(require.resolve('./usage_collector/detection_rules')); + loadTestFile(require.resolve('./usage_collector/detection_rule_status')); - loadTestFile(require.resolve('./task_based/all_types')); - loadTestFile(require.resolve('./task_based/detection_rules')); - loadTestFile(require.resolve('./task_based/security_lists')); - }); + loadTestFile(require.resolve('./task_based/all_types')); + loadTestFile(require.resolve('./task_based/detection_rules')); + loadTestFile(require.resolve('./task_based/security_lists')); }); }; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/task_based/all_types.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/task_based/all_types.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/task_based/all_types.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/task_based/all_types.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/task_based/detection_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/task_based/detection_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/task_based/detection_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/task_based/detection_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/task_based/security_lists.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/task_based/security_lists.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/task_based/security_lists.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/task_based/security_lists.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/usage_collector/all_types.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/all_types.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/usage_collector/all_types.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/all_types.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/usage_collector/detection_rule_status.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/detection_rule_status.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/usage_collector/detection_rule_status.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/detection_rule_status.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/usage_collector/detection_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/detection_rules.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/telemetry/usage_collector/detection_rules.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/detection_rules.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/config.ts new file mode 100644 index 0000000000000..2430b8f2148d9 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/index.ts new file mode 100644 index 0000000000000..ac107392d4b5c --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 5', function () { + loadTestFile(require.resolve('./keyword_family')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/README.md b/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/keyword_family/README.md similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/README.md rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group5/keyword_family/README.md 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/group5/keyword_family/const_keyword.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/const_keyword.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group5/keyword_family/const_keyword.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/keyword_family/index.ts similarity index 68% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/index.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group5/keyword_family/index.ts index 4855524d650ef..1ecb06fbed4e5 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/index.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group5/keyword_family/index.ts @@ -10,12 +10,8 @@ import { FtrProviderContext } from '../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default ({ loadTestFile }: FtrProviderContext): void => { describe('Detection keyword family data types', function () { - describe('', function () { - this.tags('ciGroup11'); - - loadTestFile(require.resolve('./keyword')); - loadTestFile(require.resolve('./const_keyword')); - loadTestFile(require.resolve('./keyword_mixed_with_const')); - }); + loadTestFile(require.resolve('./keyword')); + loadTestFile(require.resolve('./const_keyword')); + loadTestFile(require.resolve('./keyword_mixed_with_const')); }); }; 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/group5/keyword_family/keyword.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group5/keyword_family/keyword.ts 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/group5/keyword_family/keyword_mixed_with_const.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/keyword_family/keyword_mixed_with_const.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group5/keyword_family/keyword_mixed_with_const.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/alerts/alerts_compatibility.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/alerts/alerts_compatibility.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/alerts/alerts_compatibility.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group6/alerts/alerts_compatibility.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/alerts/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/alerts/index.ts similarity index 79% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/alerts/index.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group6/alerts/index.ts index b06d6cb26e33b..320650a4c79e3 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/alerts/index.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/alerts/index.ts @@ -10,10 +10,6 @@ import { FtrProviderContext } from '../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default ({ loadTestFile }: FtrProviderContext): void => { describe('Detection engine signals/alerts compatibility', function () { - describe('', function () { - this.tags('ciGroup11'); - - loadTestFile(require.resolve('./alerts_compatibility')); - }); + loadTestFile(require.resolve('./alerts_compatibility')); }); }; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/config.ts new file mode 100644 index 0000000000000..2430b8f2148d9 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/index.ts new file mode 100644 index 0000000000000..92c235e95c0e4 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group6/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 6', function () { + loadTestFile(require.resolve('./alerts')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/config.ts new file mode 100644 index 0000000000000..2430b8f2148d9 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} 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/group7/exception_operators_data_types/date.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/date.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/date.ts 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/group7/exception_operators_data_types/double.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/double.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/double.ts 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/group7/exception_operators_data_types/float.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/float.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/float.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/index.ts new file mode 100644 index 0000000000000..6b2cf915cc51b --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('Detection exceptions data types and operators', function () { + loadTestFile(require.resolve('./date')); + loadTestFile(require.resolve('./double')); + loadTestFile(require.resolve('./float')); + loadTestFile(require.resolve('./integer')); + }); +}; 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/group7/exception_operators_data_types/integer.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/integer.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/integer.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/index.ts new file mode 100644 index 0000000000000..96f53c47441ed --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 7', function () { + loadTestFile(require.resolve('./exception_operators_data_types')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/config.ts new file mode 100644 index 0000000000000..2430b8f2148d9 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/exception_operators_data_types/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/exception_operators_data_types/index.ts new file mode 100644 index 0000000000000..cf87276aac3ae --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/exception_operators_data_types/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('Detection exceptions data types and operators', function () { + loadTestFile(require.resolve('./keyword')); + loadTestFile(require.resolve('./keyword_array')); + loadTestFile(require.resolve('./long')); + loadTestFile(require.resolve('./text')); + }); +}; 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/group8/exception_operators_data_types/keyword.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group8/exception_operators_data_types/keyword.ts 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/group8/exception_operators_data_types/keyword_array.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/keyword_array.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group8/exception_operators_data_types/keyword_array.ts 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/group8/exception_operators_data_types/long.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/long.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group8/exception_operators_data_types/long.ts 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/group8/exception_operators_data_types/text.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group8/exception_operators_data_types/text.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/index.ts new file mode 100644 index 0000000000000..7182e411a1332 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group8/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 8', function () { + loadTestFile(require.resolve('./exception_operators_data_types')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/config.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/config.ts new file mode 100644 index 0000000000000..2430b8f2148d9 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../config.base.ts')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/exception_operators_data_types/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/exception_operators_data_types/index.ts new file mode 100644 index 0000000000000..22864980e2653 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/exception_operators_data_types/index.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 { FtrProviderContext } from '../../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('Detection exceptions data types and operators', function () { + loadTestFile(require.resolve('./text_array')); + loadTestFile(require.resolve('./ip')); + loadTestFile(require.resolve('./ip_array')); + }); +}; 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/group9/exception_operators_data_types/ip.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group9/exception_operators_data_types/ip.ts 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/group9/exception_operators_data_types/ip_array.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/ip_array.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group9/exception_operators_data_types/ip_array.ts 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/group9/exception_operators_data_types/text_array.ts similarity index 100% rename from x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/text_array.ts rename to x-pack/test/detection_engine_api_integration/security_and_spaces/group9/exception_operators_data_types/text_array.ts diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/index.ts new file mode 100644 index 0000000000000..ad5e427c69df8 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group9/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('detection engine api security and spaces enabled - Group 9', function () { + loadTestFile(require.resolve('./exception_operators_data_types')); + }); +}; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/README.md b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/README.md deleted file mode 100644 index d6beb912d7007..0000000000000 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/README.md +++ /dev/null @@ -1,21 +0,0 @@ -These are tests for rule exception lists where we test each data type -* date -* double -* float -* integer -* ip -* keyword -* long -* text - -Against the operator types of: -* "is" -* "is not" -* "is one of" -* "is not one of" -* "exists" -* "does not exist" -* "is in list" -* "is not in list" - -If you add a test here, ensure you add it to the ./index.ts" file as well \ No newline at end of file diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/index.ts deleted file mode 100644 index ded3df8b6716c..0000000000000 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/exception_operators_data_types/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license 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'; - -// eslint-disable-next-line import/no-default-export -export default ({ loadTestFile }: FtrProviderContext): void => { - describe('Detection exceptions data types and operators', function () { - describe('', function () { - this.tags('ciGroup23'); - - loadTestFile(require.resolve('./date')); - loadTestFile(require.resolve('./double')); - loadTestFile(require.resolve('./float')); - loadTestFile(require.resolve('./integer')); - }); - - describe('', function () { - this.tags('ciGroup24'); - - loadTestFile(require.resolve('./keyword')); - loadTestFile(require.resolve('./keyword_array')); - loadTestFile(require.resolve('./long')); - loadTestFile(require.resolve('./text')); - loadTestFile(require.resolve('./text_array')); - }); - - describe('', function () { - this.tags('ciGroup16'); - - loadTestFile(require.resolve('./ip')); - }); - - describe('', function () { - this.tags('ciGroup21'); - - loadTestFile(require.resolve('./ip_array')); - }); - }); -}; 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 deleted file mode 100644 index a3c4dd8ed3be1..0000000000000 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts +++ /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 { FtrProviderContext } from '../../common/ftr_provider_context'; - -// eslint-disable-next-line import/no-default-export -export default ({ loadTestFile }: FtrProviderContext): void => { - describe('detection engine api security and spaces enabled', function () { - describe('', function () { - this.tags('ciGroup11'); - - loadTestFile(require.resolve('./aliases')); - loadTestFile(require.resolve('./add_actions')); - loadTestFile(require.resolve('./update_actions')); - loadTestFile(require.resolve('./add_prepackaged_rules')); - loadTestFile(require.resolve('./check_privileges')); - loadTestFile(require.resolve('./create_index')); - loadTestFile(require.resolve('./create_rules')); - loadTestFile(require.resolve('./preview_rules')); - loadTestFile(require.resolve('./create_rules_bulk')); - loadTestFile(require.resolve('./create_ml')); - loadTestFile(require.resolve('./create_threat_matching')); - loadTestFile(require.resolve('./delete_rules')); - loadTestFile(require.resolve('./delete_rules_bulk')); - loadTestFile(require.resolve('./export_rules')); - loadTestFile(require.resolve('./find_rules')); - loadTestFile(require.resolve('./generating_signals')); - loadTestFile(require.resolve('./get_prepackaged_rules_status')); - loadTestFile(require.resolve('./get_rule_execution_events')); - loadTestFile(require.resolve('./import_rules')); - loadTestFile(require.resolve('./import_export_rules')); - loadTestFile(require.resolve('./read_rules')); - loadTestFile(require.resolve('./resolve_read_rules')); - loadTestFile(require.resolve('./update_rules')); - loadTestFile(require.resolve('./update_rules_bulk')); - loadTestFile(require.resolve('./patch_rules_bulk')); - loadTestFile(require.resolve('./perform_bulk_action')); - loadTestFile(require.resolve('./patch_rules')); - loadTestFile(require.resolve('./read_privileges')); - loadTestFile(require.resolve('./open_close_signals')); - loadTestFile(require.resolve('./get_signals_migration_status')); - loadTestFile(require.resolve('./create_signals_migrations')); - loadTestFile(require.resolve('./finalize_signals_migrations')); - loadTestFile(require.resolve('./delete_signals_migrations')); - loadTestFile(require.resolve('./timestamps')); - loadTestFile(require.resolve('./runtime')); - loadTestFile(require.resolve('./throttle')); - loadTestFile(require.resolve('./ignore_fields')); - loadTestFile(require.resolve('./migrations')); - }); - - describe('', function () { - this.tags('ciGroup26'); - - loadTestFile(require.resolve('./create_endpoint_exceptions')); - }); - - describe('', function () { - this.tags('ciGroup14'); - - loadTestFile(require.resolve('./create_exceptions')); - }); - - // That split here enable us on using a different ciGroup to run the tests - // listed on ./exception_operators_data_types/index - describe('', function () { - loadTestFile(require.resolve('./exception_operators_data_types')); - }); - - // That split here enable us on using a different ciGroup to run the tests - // listed on ./keyword_family/index - describe('', function () { - loadTestFile(require.resolve('./keyword_family')); - }); - - describe('', function () { - loadTestFile(require.resolve('./alerts')); - }); - - describe('', function () { - loadTestFile(require.resolve('./telemetry')); - }); - }); -}; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_legacy_action_notification_so.ts b/x-pack/test/detection_engine_api_integration/utils/get_legacy_action_notification_so.ts new file mode 100644 index 0000000000000..9a084d800a2d8 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/utils/get_legacy_action_notification_so.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; +import { SavedObjectReference } from '@kbn/core/server'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { LegacyRuleNotificationAlertTypeParams } from '@kbn/security-solution-plugin/server/lib/detection_engine/notifications/legacy_types'; + +interface LegacyActionNotificationSO extends LegacyRuleNotificationAlertTypeParams { + references: SavedObjectReference[]; +} + +/** + * Fetch all legacy action sidecar notification SOs from the .kibana index + * @param es The ElasticSearch service + */ +export const getLegacyActionNotificationSO = async ( + es: Client +): Promise> => + es.search({ + index: '.kibana', + q: 'alert.alertTypeId:siem.notifications', + }); diff --git a/x-pack/test/detection_engine_api_integration/utils/get_legacy_action_notifications_so_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/get_legacy_action_notifications_so_by_id.ts new file mode 100644 index 0000000000000..3120e85e899bf --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/utils/get_legacy_action_notifications_so_by_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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; +import { SavedObjectReference } from '@kbn/core/server'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { LegacyRuleNotificationAlertTypeParams } from '@kbn/security-solution-plugin/server/lib/detection_engine/notifications/legacy_types'; + +interface LegacyActionNotificationSO extends LegacyRuleNotificationAlertTypeParams { + references: SavedObjectReference[]; +} + +/** + * Fetch legacy action sidecar notification SOs from the .kibana index + * @param es The ElasticSearch service + * @param id SO id + */ +export const getLegacyActionNotificationSOById = async ( + es: Client, + id: string +): Promise> => + es.search({ + index: '.kibana', + q: `alert.alertTypeId:siem.notifications AND alert.params.ruleAlertId:"${id}"`, + }); diff --git a/x-pack/test/detection_engine_api_integration/utils/get_legacy_actions_so_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/get_legacy_actions_so_by_id.ts new file mode 100644 index 0000000000000..48ea142aa28ca --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/utils/get_legacy_actions_so_by_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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; +import { SavedObjectReference } from '@kbn/core/server'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { LegacyRuleActions } from '@kbn/security-solution-plugin/server/lib/detection_engine/rule_actions/legacy_types'; + +interface LegacyActionSO extends LegacyRuleActions { + references: SavedObjectReference[]; +} + +/** + * Fetch legacy action sidecar SOs from the .kibana index + * @param es The ElasticSearch service + * @param id SO id + */ +export const getLegacyActionSOById = async ( + es: Client, + id: string +): Promise> => + es.search({ + index: '.kibana', + q: `type:siem-detection-engine-rule-actions AND _id:"siem-detection-engine-rule-actions:${id}"`, + }); diff --git a/x-pack/test/detection_engine_api_integration/utils/get_rule_so_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/get_rule_so_by_id.ts new file mode 100644 index 0000000000000..5a46f96cc400a --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/utils/get_rule_so_by_id.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; +import { SavedObjectReference } from '@kbn/core/server'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { Rule } from '@kbn/alerting-plugin/common'; + +interface RuleSO { + alert: Rule; + references: SavedObjectReference[]; +} + +/** + * Fetch legacy action sidecar SOs from the .kibana index + * @param es The ElasticSearch service + * @param id SO id + */ +export const getRuleSOById = async (es: Client, id: string): Promise> => + es.search({ + index: '.kibana', + q: `type:alert AND _id:"alert:${id}"`, + }); diff --git a/x-pack/test/detection_engine_api_integration/utils/get_slack_action.ts b/x-pack/test/detection_engine_api_integration/utils/get_slack_action.ts new file mode 100644 index 0000000000000..1d88f2cdbce73 --- /dev/null +++ b/x-pack/test/detection_engine_api_integration/utils/get_slack_action.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 getSlackAction = () => ({ + actionTypeId: '.slack', + secrets: { + webhookUrl: 'http://localhost:123', + }, + name: 'Slack connector', +}); diff --git a/x-pack/test/detection_engine_api_integration/utils/index.ts b/x-pack/test/detection_engine_api_integration/utils/index.ts index 3fb9c8ebafc02..81bad1b1b583b 100644 --- a/x-pack/test/detection_engine_api_integration/utils/index.ts +++ b/x-pack/test/detection_engine_api_integration/utils/index.ts @@ -35,7 +35,10 @@ export * from './get_detection_metrics_from_body'; export * from './get_eql_rule_for_signal_testing'; export * from './get_event_log_execute_complete_by_id'; export * from './get_index_name_from_load'; +export * from './get_legacy_action_notification_so'; +export * from './get_legacy_action_notifications_so_by_id'; export * from './get_legacy_action_so'; +export * from './get_legacy_actions_so_by_id'; export * from './get_open_signals'; export * from './get_prepackaged_rule_status'; export * from './get_query_all_signals'; @@ -44,6 +47,7 @@ export * from './get_query_signals_ids'; export * from './get_query_signals_rule_id'; export * from './get_rule'; export * from './get_rule_for_signal_testing'; +export * from './get_rule_so_by_id'; export * from './get_rule_for_signal_testing_with_timestamp_override'; export * from './get_rule_with_web_hook_action'; export * from './get_saved_query_rule_for_signal_testing'; @@ -70,6 +74,7 @@ export * from './get_stats'; export * from './get_stats_url'; export * from './get_threat_match_rule_for_signal_testing'; export * from './get_threshold_rule_for_signal_testing'; +export * from './get_slack_action'; export * from './get_web_hook_action'; export * from './index_event_log_execution_events'; export * from './install_prepackaged_rules'; diff --git a/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts b/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts index 63f8c9f2c8e1b..8e354607d4002 100644 --- a/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts +++ b/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts @@ -19,8 +19,9 @@ export const indexEventLogExecutionEvents = async ( log: ToolingLog, events: object[] ): Promise => { + const aliases = await es.cat.aliases({ format: 'json', name: '.kibana-event-log-*' }); const operations = events.flatMap((doc: object) => [ - { index: { _index: '.kibana-event-log-*' } }, + { index: { _index: aliases[0].index } }, doc, ]); diff --git a/x-pack/test/encrypted_saved_objects_api_integration/tests/index.ts b/x-pack/test/encrypted_saved_objects_api_integration/tests/index.ts index de87d627ac486..0313187ac09a7 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/tests/index.ts +++ b/x-pack/test/encrypted_saved_objects_api_integration/tests/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('encryptedSavedObjects', function encryptedSavedObjectsSuite() { - this.tags('ciGroup13'); loadTestFile(require.resolve('./encrypted_saved_objects_api')); loadTestFile(require.resolve('./encrypted_saved_objects_decryption')); }); diff --git a/x-pack/test/endpoint_api_integration_no_ingest/apis/index.ts b/x-pack/test/endpoint_api_integration_no_ingest/apis/index.ts index 1ca035df18fd5..10a4e18f8c133 100644 --- a/x-pack/test/endpoint_api_integration_no_ingest/apis/index.ts +++ b/x-pack/test/endpoint_api_integration_no_ingest/apis/index.ts @@ -10,7 +10,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function endpointAPIIntegrationTests({ loadTestFile }: FtrProviderContext) { // Failing ES snapshot promotion: https://github.com/elastic/kibana/issues/70535 describe.skip('Endpoint plugin', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./metadata')); }); } diff --git a/x-pack/test/examples/config.ts b/x-pack/test/examples/config.ts index 6eb1e86dd0826..16db620e76598 100644 --- a/x-pack/test/examples/config.ts +++ b/x-pack/test/examples/config.ts @@ -12,7 +12,9 @@ import fs from 'fs'; import { KIBANA_ROOT } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); // Find all folders in /examples and /x-pack/examples since we treat all them as plugin folder const examplesFiles = fs.readdirSync(resolve(KIBANA_ROOT, 'examples')); diff --git a/x-pack/test/examples/embedded_lens/index.ts b/x-pack/test/examples/embedded_lens/index.ts index debab4773f9eb..b418e69584a9a 100644 --- a/x-pack/test/examples/embedded_lens/index.ts +++ b/x-pack/test/examples/embedded_lens/index.ts @@ -13,6 +13,8 @@ export default function ({ getService, loadTestFile }: PluginFunctionalProviderC const kibanaServer = getService('kibanaServer'); describe('embedded Lens examples', function () { + this.tags('skipFirefox'); + before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.importExport.load( @@ -30,10 +32,6 @@ export default function ({ getService, loadTestFile }: PluginFunctionalProviderC ); }); - describe('', function () { - this.tags(['ciGroup4', 'skipFirefox']); - - loadTestFile(require.resolve('./embedded_example')); - }); + loadTestFile(require.resolve('./embedded_example')); }); } diff --git a/x-pack/test/examples/reporting_examples/index.ts b/x-pack/test/examples/reporting_examples/index.ts index e4e5c93e5eee2..2f1b00597a9d8 100644 --- a/x-pack/test/examples/reporting_examples/index.ts +++ b/x-pack/test/examples/reporting_examples/index.ts @@ -10,8 +10,6 @@ import { PluginFunctionalProviderContext } from '../../../../test/plugin_functio // eslint-disable-next-line import/no-default-export export default function ({ loadTestFile }: PluginFunctionalProviderContext) { describe('reporting examples', function () { - this.tags('ciGroup13'); - loadTestFile(require.resolve('./capture_test')); }); } diff --git a/x-pack/test/examples/screenshotting/index.ts b/x-pack/test/examples/screenshotting/index.ts index e9ecd2ecde346..c64d84c7fcf3d 100644 --- a/x-pack/test/examples/screenshotting/index.ts +++ b/x-pack/test/examples/screenshotting/index.ts @@ -22,8 +22,6 @@ export default function ({ // FAILING: https://github.com/elastic/kibana/issues/131190 describe.skip('Screenshotting Example', function () { - this.tags('ciGroup13'); - before(async () => { await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/visualize.json'); diff --git a/x-pack/test/examples/search_examples/index.ts b/x-pack/test/examples/search_examples/index.ts index c0f8ab22c8f8f..cee873dfed53a 100644 --- a/x-pack/test/examples/search_examples/index.ts +++ b/x-pack/test/examples/search_examples/index.ts @@ -13,7 +13,6 @@ export default function ({ getService, loadTestFile }: PluginFunctionalProviderC const kibanaServer = getService('kibanaServer'); describe('search examples', function () { - this.tags('ciGroup13'); before(async () => { await esArchiver.emptyKibanaIndex(); await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); diff --git a/x-pack/test/fleet_api_integration/apis/epm/install_remove_assets.ts b/x-pack/test/fleet_api_integration/apis/epm/install_remove_assets.ts index 8f2b3effd94ed..16f8fc04aa92f 100644 --- a/x-pack/test/fleet_api_integration/apis/epm/install_remove_assets.ts +++ b/x-pack/test/fleet_api_integration/apis/epm/install_remove_assets.ts @@ -569,6 +569,10 @@ const expectAssetsInstalled = ({ id: 'metrics-all_assets.test_metrics-all_assets', type: 'data_stream_ilm_policy', }, + { + id: 'all_assets', + type: 'ilm_policy', + }, { id: 'logs-all_assets.test_logs', type: 'index_template', diff --git a/x-pack/test/fleet_api_integration/apis/epm/update_assets.ts b/x-pack/test/fleet_api_integration/apis/epm/update_assets.ts index b73ca9537990c..9758107cee83d 100644 --- a/x-pack/test/fleet_api_integration/apis/epm/update_assets.ts +++ b/x-pack/test/fleet_api_integration/apis/epm/update_assets.ts @@ -403,13 +403,17 @@ export default function (providerContext: FtrProviderContext) { ], installed_es: [ { - id: 'logs-all_assets.test_logs-all_assets', - type: 'data_stream_ilm_policy', + id: 'all_assets', + type: 'ilm_policy', }, { id: 'default', type: 'ml_model', }, + { + id: 'logs-all_assets.test_logs-all_assets', + type: 'data_stream_ilm_policy', + }, { id: 'logs-all_assets.test_logs-0.2.0', type: 'ingest_pipeline', diff --git a/x-pack/test/fleet_api_integration/apis/index.js b/x-pack/test/fleet_api_integration/apis/index.js index 9f68eb1c7f81f..1c528e719e2e8 100644 --- a/x-pack/test/fleet_api_integration/apis/index.js +++ b/x-pack/test/fleet_api_integration/apis/index.js @@ -9,8 +9,6 @@ import { setupTestUsers } from './test_users'; export default function ({ loadTestFile, getService }) { describe('Fleet Endpoints', function () { - this.tags('ciGroup29'); - before(async () => { await setupTestUsers(getService('security')); }); diff --git a/x-pack/test/fleet_cypress/config.ts b/x-pack/test/fleet_cypress/config.ts index d2076fa940412..52198f4f035e0 100644 --- a/x-pack/test/fleet_cypress/config.ts +++ b/x-pack/test/fleet_cypress/config.ts @@ -14,7 +14,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('../functional/config.js') + require.resolve('../functional/config.base.js') ); return { diff --git a/x-pack/test/fleet_functional/apps/fleet/agents_page.ts b/x-pack/test/fleet_functional/apps/fleet/agents_page.ts index 515eaa65f5310..cff1273e0b901 100644 --- a/x-pack/test/fleet_functional/apps/fleet/agents_page.ts +++ b/x-pack/test/fleet_functional/apps/fleet/agents_page.ts @@ -11,8 +11,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const { agentsPage } = getPageObjects(['agentsPage']); describe('When in the Fleet application', function () { - this.tags(['ciGroup7']); - describe('and on the agents page', () => { before(async () => { await agentsPage.navigateToAgentsPage(); diff --git a/x-pack/test/fleet_functional/apps/fleet/index.ts b/x-pack/test/fleet_functional/apps/fleet/index.ts index ec16e2d857183..965d4c7776197 100644 --- a/x-pack/test/fleet_functional/apps/fleet/index.ts +++ b/x-pack/test/fleet_functional/apps/fleet/index.ts @@ -11,7 +11,6 @@ export default function (providerContext: FtrProviderContext) { const { loadTestFile } = providerContext; describe('endpoint', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./agents_page')); }); } diff --git a/x-pack/test/fleet_functional/apps/home/index.ts b/x-pack/test/fleet_functional/apps/home/index.ts index cd14bfdff557d..727213b96349e 100644 --- a/x-pack/test/fleet_functional/apps/home/index.ts +++ b/x-pack/test/fleet_functional/apps/home/index.ts @@ -11,7 +11,6 @@ export default function (providerContext: FtrProviderContext) { const { loadTestFile } = providerContext; describe('home onboarding', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./welcome')); }); } diff --git a/x-pack/test/fleet_functional/config.ts b/x-pack/test/fleet_functional/config.ts index 60db783280aec..5efc39b02acd6 100644 --- a/x-pack/test/fleet_functional/config.ts +++ b/x-pack/test/fleet_functional/config.ts @@ -11,7 +11,9 @@ import { pageObjects } from './page_objects'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); return { ...xpackFunctionalConfig.getAll(), diff --git a/x-pack/test/functional/apps/advanced_settings/config.ts b/x-pack/test/functional/apps/advanced_settings/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/advanced_settings/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/advanced_settings/index.ts b/x-pack/test/functional/apps/advanced_settings/index.ts index d962f648db395..f121b031466ea 100644 --- a/x-pack/test/functional/apps/advanced_settings/index.ts +++ b/x-pack/test/functional/apps/advanced_settings/index.ts @@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function advancedSettingsApp({ loadTestFile }: FtrProviderContext) { describe('Advanced Settings', function canvasAppTestSuite() { - this.tags(['ciGroup2', 'skipFirefox']); // CI requires tags ヽ(゜Q。)ノ? + this.tags(['skipFirefox']); // CI requires tags ヽ(゜Q。)ノ? loadTestFile(require.resolve('./feature_controls/advanced_settings_security')); loadTestFile(require.resolve('./feature_controls/advanced_settings_spaces')); }); diff --git a/x-pack/test/functional/apps/api_keys/config.ts b/x-pack/test/functional/apps/api_keys/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/api_keys/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/api_keys/index.ts b/x-pack/test/functional/apps/api_keys/index.ts index 7b9afd201e3d9..2f9d7206d374a 100644 --- a/x-pack/test/functional/apps/api_keys/index.ts +++ b/x-pack/test/functional/apps/api_keys/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('API Keys app', function () { - this.tags(['ciGroup7']); loadTestFile(require.resolve('./home_page')); loadTestFile(require.resolve('./feature_controls')); }); diff --git a/x-pack/test/functional/apps/apm/config.ts b/x-pack/test/functional/apps/apm/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/apm/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} 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 22b553d006303..5cba074eedbec 100644 --- a/x-pack/test/functional/apps/apm/correlations/latency_correlations.ts +++ b/x-pack/test/functional/apps/apm/correlations/latency_correlations.ts @@ -70,7 +70,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { 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'); diff --git a/x-pack/test/functional/apps/apm/index.ts b/x-pack/test/functional/apps/apm/index.ts index 20c2bc264a74f..61aca7ca3f9de 100644 --- a/x-pack/test/functional/apps/apm/index.ts +++ b/x-pack/test/functional/apps/apm/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('APM specs', function () { - this.tags('ciGroup10'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./correlations')); }); diff --git a/x-pack/test/functional/apps/canvas/config.ts b/x-pack/test/functional/apps/canvas/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/canvas/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/canvas/feature_controls/canvas_security.ts b/x-pack/test/functional/apps/canvas/feature_controls/canvas_security.ts index 1497c85b91bad..d1a500be98ff8 100644 --- a/x-pack/test/functional/apps/canvas/feature_controls/canvas_security.ts +++ b/x-pack/test/functional/apps/canvas/feature_controls/canvas_security.ts @@ -94,7 +94,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it(`allows a workpad to be edited`, async () => { await PageObjects.common.navigateToActualUrl( 'canvas', - 'workpad/workpad-1705f884-6224-47de-ba49-ca224fe6ec31', + '/workpad/workpad-1705f884-6224-47de-ba49-ca224fe6ec31', { ensureCurrentUrl: true, shouldLoginIfPrompted: false, @@ -171,7 +171,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it(`does not allow a workpad to be edited`, async () => { await PageObjects.common.navigateToActualUrl( 'canvas', - 'workpad/workpad-1705f884-6224-47de-ba49-ca224fe6ec31', + '/workpad/workpad-1705f884-6224-47de-ba49-ca224fe6ec31', { ensureCurrentUrl: true, shouldLoginIfPrompted: false, diff --git a/x-pack/test/functional/apps/canvas/feature_controls/canvas_spaces.ts b/x-pack/test/functional/apps/canvas/feature_controls/canvas_spaces.ts index 5060ac60eceae..e030cdbf5f624 100644 --- a/x-pack/test/functional/apps/canvas/feature_controls/canvas_spaces.ts +++ b/x-pack/test/functional/apps/canvas/feature_controls/canvas_spaces.ts @@ -80,7 +80,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it(`allows a workpad to be edited`, async () => { await PageObjects.common.navigateToActualUrl( 'canvas', - 'workpad/workpad-1705f884-6224-47de-ba49-ca224fe6ec31', + '/workpad/workpad-1705f884-6224-47de-ba49-ca224fe6ec31', { ensureCurrentUrl: true, shouldLoginIfPrompted: false, diff --git a/x-pack/test/functional/apps/canvas/index.js b/x-pack/test/functional/apps/canvas/index.js index 784aeb6655768..2c6a46b75e510 100644 --- a/x-pack/test/functional/apps/canvas/index.js +++ b/x-pack/test/functional/apps/canvas/index.js @@ -27,7 +27,6 @@ export default function canvasApp({ loadTestFile, getService }) { await security.testUser.restoreDefaults(); }); - this.tags('ciGroup2'); loadTestFile(require.resolve('./smoke_test')); loadTestFile(require.resolve('./expression')); loadTestFile(require.resolve('./filters')); diff --git a/x-pack/test/functional/apps/canvas/smoke_test.js b/x-pack/test/functional/apps/canvas/smoke_test.js index 053c58e88cde1..dff3cb7ce30a6 100644 --- a/x-pack/test/functional/apps/canvas/smoke_test.js +++ b/x-pack/test/functional/apps/canvas/smoke_test.js @@ -48,9 +48,9 @@ export default function canvasSmokeTest({ getService, getPageObjects }) { await retry.try(async () => { const url = await browser.getCurrentUrl(); - // remove all the search params, just compare the route - const hashRoute = new URL(url).hash.split('?')[0]; - expect(hashRoute).to.equal(`#/workpad/${testWorkpadId}/page/1`); + const path = new URL(url).pathname; + + expect(path).to.equal(`/app/canvas/workpad/${testWorkpadId}/page/1`); }); }); diff --git a/x-pack/test/functional/apps/cross_cluster_replication/config.ts b/x-pack/test/functional/apps/cross_cluster_replication/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/cross_cluster_replication/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/cross_cluster_replication/index.ts b/x-pack/test/functional/apps/cross_cluster_replication/index.ts index 1ab1ab7183394..5c6539b5e73f7 100644 --- a/x-pack/test/functional/apps/cross_cluster_replication/index.ts +++ b/x-pack/test/functional/apps/cross_cluster_replication/index.ts @@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Cross Cluster Replication app', function () { - this.tags(['ciGroup4', 'skipCloud']); + this.tags('skipCloud'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./home_page')); }); diff --git a/x-pack/test/functional/apps/dashboard/README.md b/x-pack/test/functional/apps/dashboard/README.md new file mode 100644 index 0000000000000..5e87a8b210bdd --- /dev/null +++ b/x-pack/test/functional/apps/dashboard/README.md @@ -0,0 +1,7 @@ +# What are all these groups? + +These tests take a while so they have been broken up into groups with their own `config.ts` and `index.ts` file, causing each of these groups to be independent bundles of tests which can be run on some worker in CI without taking an incredible amount of time. + +Want to change the groups to something more logical? Have fun! Just make sure that each group executes on CI in less than 10 minutes or so. We don't currently have any mechanism for validating this right now, you just need to look at the times in the log output on CI, but we'll be working on tooling for making this information more accessible soon. + +- Kibana Operations \ No newline at end of file diff --git a/x-pack/test/functional/apps/dashboard/group1/config.ts b/x-pack/test/functional/apps/dashboard/group1/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/dashboard/group1/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_dashboard_drilldown.ts b/x-pack/test/functional/apps/dashboard/group1/drilldowns/dashboard_to_dashboard_drilldown.ts similarity index 99% rename from x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_dashboard_drilldown.ts rename to x-pack/test/functional/apps/dashboard/group1/drilldowns/dashboard_to_dashboard_drilldown.ts index 9fd6beeb8ff22..c540d5673d89e 100644 --- a/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_dashboard_drilldown.ts +++ b/x-pack/test/functional/apps/dashboard/group1/drilldowns/dashboard_to_dashboard_drilldown.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; const DRILLDOWN_TO_PIE_CHART_NAME = 'Go to pie chart dashboard'; const DRILLDOWN_TO_AREA_CHART_NAME = 'Go to area chart dashboard'; diff --git a/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_url_drilldown.ts b/x-pack/test/functional/apps/dashboard/group1/drilldowns/dashboard_to_url_drilldown.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_url_drilldown.ts rename to x-pack/test/functional/apps/dashboard/group1/drilldowns/dashboard_to_url_drilldown.ts index 5ed118c9b753a..ca057b7421b7c 100644 --- a/x-pack/test/functional/apps/dashboard/drilldowns/dashboard_to_url_drilldown.ts +++ b/x-pack/test/functional/apps/dashboard/group1/drilldowns/dashboard_to_url_drilldown.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; const DRILLDOWN_TO_DISCOVER_URL = 'Go to discover'; diff --git a/x-pack/test/functional/apps/dashboard/drilldowns/explore_data_chart_action.ts b/x-pack/test/functional/apps/dashboard/group1/drilldowns/explore_data_chart_action.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/drilldowns/explore_data_chart_action.ts rename to x-pack/test/functional/apps/dashboard/group1/drilldowns/explore_data_chart_action.ts index b9272a0a6c3bd..2e2c1f7ecca1d 100644 --- a/x-pack/test/functional/apps/dashboard/drilldowns/explore_data_chart_action.ts +++ b/x-pack/test/functional/apps/dashboard/group1/drilldowns/explore_data_chart_action.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; const ACTION_ID = 'ACTION_EXPLORE_DATA_CHART'; const ACTION_TEST_SUBJ = `embeddablePanelAction-${ACTION_ID}`; diff --git a/x-pack/test/functional/apps/dashboard/drilldowns/explore_data_panel_action.ts b/x-pack/test/functional/apps/dashboard/group1/drilldowns/explore_data_panel_action.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/drilldowns/explore_data_panel_action.ts rename to x-pack/test/functional/apps/dashboard/group1/drilldowns/explore_data_panel_action.ts index c78c716364c4b..c302d9a195397 100644 --- a/x-pack/test/functional/apps/dashboard/drilldowns/explore_data_panel_action.ts +++ b/x-pack/test/functional/apps/dashboard/group1/drilldowns/explore_data_panel_action.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; const ACTION_ID = 'ACTION_EXPLORE_DATA'; const ACTION_TEST_SUBJ = `embeddablePanelAction-${ACTION_ID}`; diff --git a/x-pack/test/functional/apps/dashboard/drilldowns/index.ts b/x-pack/test/functional/apps/dashboard/group1/drilldowns/index.ts similarity index 95% rename from x-pack/test/functional/apps/dashboard/drilldowns/index.ts rename to x-pack/test/functional/apps/dashboard/group1/drilldowns/index.ts index fac0c355ce4d0..eaa1189ab1007 100644 --- a/x-pack/test/functional/apps/dashboard/drilldowns/index.ts +++ b/x-pack/test/functional/apps/dashboard/group1/drilldowns/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile, getService }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); diff --git a/x-pack/test/functional/apps/dashboard/feature_controls/dashboard_security.ts b/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_security.ts similarity index 99% rename from x-pack/test/functional/apps/dashboard/feature_controls/dashboard_security.ts rename to x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_security.ts index efac6d6739fcb..47a895472d992 100644 --- a/x-pack/test/functional/apps/dashboard/feature_controls/dashboard_security.ts +++ b/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_security.ts @@ -10,7 +10,7 @@ import { createDashboardEditUrl, DashboardConstants, } from '@kbn/dashboard-plugin/public/dashboard_constants'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/feature_controls/dashboard_spaces.ts b/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_spaces.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/feature_controls/dashboard_spaces.ts rename to x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_spaces.ts index 0d177a0f3c65b..24a90b883315e 100644 --- a/x-pack/test/functional/apps/dashboard/feature_controls/dashboard_spaces.ts +++ b/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_spaces.ts @@ -10,7 +10,7 @@ import { createDashboardEditUrl, DashboardConstants, } from '@kbn/dashboard-plugin/public/dashboard_constants'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/feature_controls/index.ts b/x-pack/test/functional/apps/dashboard/group1/feature_controls/index.ts similarity index 89% rename from x-pack/test/functional/apps/dashboard/feature_controls/index.ts rename to x-pack/test/functional/apps/dashboard/group1/feature_controls/index.ts index 3b32ea031f6e2..2ea15966f3740 100644 --- a/x-pack/test/functional/apps/dashboard/feature_controls/index.ts +++ b/x-pack/test/functional/apps/dashboard/group1/feature_controls/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('feature controls', function () { diff --git a/x-pack/test/functional/apps/dashboard/feature_controls/time_to_visualize_security.ts b/x-pack/test/functional/apps/dashboard/group1/feature_controls/time_to_visualize_security.ts similarity index 99% rename from x-pack/test/functional/apps/dashboard/feature_controls/time_to_visualize_security.ts rename to x-pack/test/functional/apps/dashboard/group1/feature_controls/time_to_visualize_security.ts index 9eeb49f5eb0d2..57ddc76835213 100644 --- a/x-pack/test/functional/apps/dashboard/feature_controls/time_to_visualize_security.ts +++ b/x-pack/test/functional/apps/dashboard/group1/feature_controls/time_to_visualize_security.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const PageObjects = getPageObjects([ diff --git a/x-pack/test/functional/apps/dashboard/group1/index.ts b/x-pack/test/functional/apps/dashboard/group1/index.ts new file mode 100644 index 0000000000000..f829002448f33 --- /dev/null +++ b/x-pack/test/functional/apps/dashboard/group1/index.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 { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('dashboard', function () { + loadTestFile(require.resolve('./feature_controls')); + loadTestFile(require.resolve('./preserve_url')); + loadTestFile(require.resolve('./reporting')); + loadTestFile(require.resolve('./drilldowns')); + }); +} diff --git a/x-pack/test/functional/apps/dashboard/preserve_url.ts b/x-pack/test/functional/apps/dashboard/group1/preserve_url.ts similarity index 97% rename from x-pack/test/functional/apps/dashboard/preserve_url.ts rename to x-pack/test/functional/apps/dashboard/group1/preserve_url.ts index e391a8b346f6f..88ad055d34c20 100644 --- a/x-pack/test/functional/apps/dashboard/preserve_url.ts +++ b/x-pack/test/functional/apps/dashboard/group1/preserve_url.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/reporting/README.md b/x-pack/test/functional/apps/dashboard/group1/reporting/README.md similarity index 92% rename from x-pack/test/functional/apps/dashboard/reporting/README.md rename to x-pack/test/functional/apps/dashboard/group1/reporting/README.md index 3a2b8f5cc783f..149b691dc3115 100644 --- a/x-pack/test/functional/apps/dashboard/reporting/README.md +++ b/x-pack/test/functional/apps/dashboard/group1/reporting/README.md @@ -11,8 +11,8 @@ Every now and then visual changes will be made that will require the snapshots t 1. **Load the ES Archive containing the dashboard and data.** This will load the test data into an Elasticsearch instance running via the functional test server: ``` - node scripts/es_archiver load reporting/ecommerce --config=x-pack/test/functional/config.js - node scripts/es_archiver load reporting/ecommerce_kibana --config=x-pack/test/functional/config.js + node scripts/es_archiver load reporting/ecommerce --config=x-pack/test/functional/apps/dashboard/config.ts + node scripts/es_archiver load reporting/ecommerce_kibana --config=x-pack/test/functional/apps/dashboard/config.ts ``` 2. **Generate the reports of the E-commerce dashboard in the Kibana UI.** Navigate to `http://localhost:5620`, find the archived dashboard, and generate all the types of reports for which there are stored baseline images. diff --git a/x-pack/test/functional/apps/dashboard/reporting/__snapshots__/download_csv.snap b/x-pack/test/functional/apps/dashboard/group1/reporting/__snapshots__/download_csv.snap similarity index 99% rename from x-pack/test/functional/apps/dashboard/reporting/__snapshots__/download_csv.snap rename to x-pack/test/functional/apps/dashboard/group1/reporting/__snapshots__/download_csv.snap index d524543183a3f..e6b31be13861d 100644 --- a/x-pack/test/functional/apps/dashboard/reporting/__snapshots__/download_csv.snap +++ b/x-pack/test/functional/apps/dashboard/group1/reporting/__snapshots__/download_csv.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`dashboard Reporting Download CSV Default Saved Search Data Download CSV export of a saved search panel 1`] = ` +exports[`dashboard Reporting Download CSV Default Saved Search Data Download CSV export of a saved search panel 1`] = ` "\\"order_date\\",category,currency,\\"customer_id\\",\\"order_id\\",\\"day_of_week_i\\",\\"products.created_on\\",sku \\"Jun 22, 2019 @ 00:00:00.000\\",\\"Men's Clothing, Men's Shoes\\",EUR,23,564670,6,\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"ZO0531205312, ZO0684706847\\" \\"Jun 22, 2019 @ 00:00:00.000\\",\\"Women's Clothing\\",EUR,44,564710,6,\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"ZO0263402634, ZO0499404994\\" @@ -460,7 +460,7 @@ exports[`dashboard Reporting Download CSV Default Saved Search Data Download CS " `; -exports[`dashboard Reporting Download CSV Default Saved Search Data Downloads a filtered CSV export of a saved search panel 1`] = ` +exports[`dashboard Reporting Download CSV Default Saved Search Data Downloads a filtered CSV export of a saved search panel 1`] = ` "\\"order_date\\",category,currency,\\"customer_id\\",\\"order_id\\",\\"day_of_week_i\\",\\"products.created_on\\",sku \\"Jun 22, 2019 @ 00:00:00.000\\",\\"Men's Clothing, Men's Shoes\\",EUR,23,564670,6,\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"ZO0531205312, ZO0684706847\\" \\"Jun 22, 2019 @ 00:00:00.000\\",\\"Men's Shoes, Men's Clothing\\",EUR,52,564513,6,\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"ZO0390003900, ZO0287902879\\" @@ -562,13 +562,13 @@ exports[`dashboard Reporting Download CSV Default Saved Search Data Downloads a " `; -exports[`dashboard Reporting Download CSV Field Formatters and Scripted Fields Download CSV export of a saved search panel 1`] = ` +exports[`dashboard Reporting Download CSV Field Formatters and Scripted Fields Download CSV export of a saved search panel 1`] = ` "date,\\"_id\\",name,gender,value,year,\\"years_ago\\",\\"date_informal\\" \\"Jan 1, 1982 @ 00:00:00.000\\",\\"1982-Fethany-F\\",Fethany,F,780,1982,\\"37.00000000000000000000\\",\\"Jan 1st 82\\" " `; -exports[`dashboard Reporting Download CSV Filtered Saved Search Downloads filtered Discover saved search report 1`] = ` +exports[`dashboard Reporting Download CSV Filtered Saved Search Downloads filtered Discover saved search report 1`] = ` "\\"order_date\\",category,\\"customer_full_name\\",\\"taxful_total_price\\",currency \\"Jun 25, 2019 @ 00:00:00.000\\",\\"Women's Accessories\\",\\"Betty Reese\\",\\"22.984\\",EUR \\"Jun 25, 2019 @ 00:00:00.000\\",\\"Women's Accessories, Women's Clothing\\",\\"Betty Brewer\\",\\"28.984\\",EUR diff --git a/x-pack/test/functional/apps/dashboard/reporting/download_csv.ts b/x-pack/test/functional/apps/dashboard/group1/reporting/download_csv.ts similarity index 99% rename from x-pack/test/functional/apps/dashboard/reporting/download_csv.ts rename to x-pack/test/functional/apps/dashboard/group1/reporting/download_csv.ts index 1e2d465fee66b..bdcf95955b451 100644 --- a/x-pack/test/functional/apps/dashboard/reporting/download_csv.ts +++ b/x-pack/test/functional/apps/dashboard/group1/reporting/download_csv.ts @@ -9,7 +9,7 @@ import { REPO_ROOT } from '@kbn/utils'; import expect from '@kbn/expect'; import fs from 'fs'; import path from 'path'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/reporting/index.ts b/x-pack/test/functional/apps/dashboard/group1/reporting/index.ts similarity index 86% rename from x-pack/test/functional/apps/dashboard/reporting/index.ts rename to x-pack/test/functional/apps/dashboard/group1/reporting/index.ts index 088e54d534b6a..ef9821a544b3a 100644 --- a/x-pack/test/functional/apps/dashboard/reporting/index.ts +++ b/x-pack/test/functional/apps/dashboard/group1/reporting/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Reporting', function () { diff --git a/x-pack/test/functional/apps/dashboard/reporting/reports/baseline/large_dashboard_preserve_layout.png b/x-pack/test/functional/apps/dashboard/group1/reporting/reports/baseline/large_dashboard_preserve_layout.png similarity index 100% rename from x-pack/test/functional/apps/dashboard/reporting/reports/baseline/large_dashboard_preserve_layout.png rename to x-pack/test/functional/apps/dashboard/group1/reporting/reports/baseline/large_dashboard_preserve_layout.png diff --git a/x-pack/test/functional/apps/dashboard/reporting/reports/baseline/small_dashboard_preserve_layout.png b/x-pack/test/functional/apps/dashboard/group1/reporting/reports/baseline/small_dashboard_preserve_layout.png similarity index 100% rename from x-pack/test/functional/apps/dashboard/reporting/reports/baseline/small_dashboard_preserve_layout.png rename to x-pack/test/functional/apps/dashboard/group1/reporting/reports/baseline/small_dashboard_preserve_layout.png diff --git a/x-pack/test/functional/apps/dashboard/reporting/screenshots.ts b/x-pack/test/functional/apps/dashboard/group1/reporting/screenshots.ts similarity index 99% rename from x-pack/test/functional/apps/dashboard/reporting/screenshots.ts rename to x-pack/test/functional/apps/dashboard/group1/reporting/screenshots.ts index d42d23b7578a5..5a69262801d2e 100644 --- a/x-pack/test/functional/apps/dashboard/reporting/screenshots.ts +++ b/x-pack/test/functional/apps/dashboard/group1/reporting/screenshots.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import path from 'path'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; const REPORTS_FOLDER = path.resolve(__dirname, 'reports'); diff --git a/x-pack/test/functional/apps/dashboard/_async_dashboard.ts b/x-pack/test/functional/apps/dashboard/group2/_async_dashboard.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/_async_dashboard.ts rename to x-pack/test/functional/apps/dashboard/group2/_async_dashboard.ts index 89c58645b64b0..ae79c1893ac8b 100644 --- a/x-pack/test/functional/apps/dashboard/_async_dashboard.ts +++ b/x-pack/test/functional/apps/dashboard/group2/_async_dashboard.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { UI_SETTINGS } from '@kbn/data-plugin/common'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); diff --git a/x-pack/test/functional/apps/dashboard/group2/config.ts b/x-pack/test/functional/apps/dashboard/group2/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/dashboard/group2/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/dashboard/dashboard_lens_by_value.ts b/x-pack/test/functional/apps/dashboard/group2/dashboard_lens_by_value.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/dashboard_lens_by_value.ts rename to x-pack/test/functional/apps/dashboard/group2/dashboard_lens_by_value.ts index 9e4c2554100b9..2604b942f7313 100644 --- a/x-pack/test/functional/apps/dashboard/dashboard_lens_by_value.ts +++ b/x-pack/test/functional/apps/dashboard/group2/dashboard_lens_by_value.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'dashboard', 'visualize', 'lens', 'timePicker']); diff --git a/x-pack/test/functional/apps/dashboard/dashboard_maps_by_value.ts b/x-pack/test/functional/apps/dashboard/group2/dashboard_maps_by_value.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/dashboard_maps_by_value.ts rename to x-pack/test/functional/apps/dashboard/group2/dashboard_maps_by_value.ts index e885d1c0d3f73..c1224b604364d 100644 --- a/x-pack/test/functional/apps/dashboard/dashboard_maps_by_value.ts +++ b/x-pack/test/functional/apps/dashboard/group2/dashboard_maps_by_value.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const PageObjects = getPageObjects([ diff --git a/x-pack/test/functional/apps/dashboard/dashboard_tagging.ts b/x-pack/test/functional/apps/dashboard/group2/dashboard_tagging.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/dashboard_tagging.ts rename to x-pack/test/functional/apps/dashboard/group2/dashboard_tagging.ts index 784d1f3678415..ca0093135b7da 100644 --- a/x-pack/test/functional/apps/dashboard/dashboard_tagging.ts +++ b/x-pack/test/functional/apps/dashboard/group2/dashboard_tagging.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const listingTable = getService('listingTable'); diff --git a/x-pack/test/functional/apps/dashboard/group2/index.ts b/x-pack/test/functional/apps/dashboard/group2/index.ts new file mode 100644 index 0000000000000..666756735e80f --- /dev/null +++ b/x-pack/test/functional/apps/dashboard/group2/index.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 { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('dashboard', function () { + loadTestFile(require.resolve('./sync_colors')); + loadTestFile(require.resolve('./_async_dashboard')); + loadTestFile(require.resolve('./dashboard_tagging')); + loadTestFile(require.resolve('./dashboard_lens_by_value')); + loadTestFile(require.resolve('./dashboard_maps_by_value')); + loadTestFile(require.resolve('./panel_titles')); + + loadTestFile(require.resolve('./migration_smoke_tests/lens_migration_smoke_test')); + loadTestFile(require.resolve('./migration_smoke_tests/controls_migration_smoke_test')); + loadTestFile(require.resolve('./migration_smoke_tests/visualize_migration_smoke_test')); + loadTestFile(require.resolve('./migration_smoke_tests/tsvb_migration_smoke_test')); + }); +} diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/controls_migration_smoke_test.ts b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/controls_migration_smoke_test.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/controls_migration_smoke_test.ts rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/controls_migration_smoke_test.ts index b87ee15910d23..20fe8a9413723 100644 --- a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/controls_migration_smoke_test.ts +++ b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/controls_migration_smoke_test.ts @@ -12,7 +12,7 @@ import expect from '@kbn/expect'; import path from 'path'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/controls_dashboard_migration_test_8_0_0.ndjson b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/controls_dashboard_migration_test_8_0_0.ndjson similarity index 100% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/controls_dashboard_migration_test_8_0_0.ndjson rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/controls_dashboard_migration_test_8_0_0.ndjson diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/lens_dashboard_migration_test_7_12_1.ndjson b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/lens_dashboard_migration_test_7_12_1.ndjson similarity index 100% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/lens_dashboard_migration_test_7_12_1.ndjson rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/lens_dashboard_migration_test_7_12_1.ndjson diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/tsvb_dashboard_migration_test_7_12_1.ndjson b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/tsvb_dashboard_migration_test_7_12_1.ndjson similarity index 100% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/tsvb_dashboard_migration_test_7_12_1.ndjson rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/tsvb_dashboard_migration_test_7_12_1.ndjson diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/tsvb_dashboard_migration_test_7_13_3.ndjson b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/tsvb_dashboard_migration_test_7_13_3.ndjson similarity index 100% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/tsvb_dashboard_migration_test_7_13_3.ndjson rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/tsvb_dashboard_migration_test_7_13_3.ndjson diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/visualize_dashboard_migration_test_7_12_1.ndjson b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/visualize_dashboard_migration_test_7_12_1.ndjson similarity index 100% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/exports/visualize_dashboard_migration_test_7_12_1.ndjson rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/exports/visualize_dashboard_migration_test_7_12_1.ndjson diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/lens_migration_smoke_test.ts b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/lens_migration_smoke_test.ts similarity index 97% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/lens_migration_smoke_test.ts rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/lens_migration_smoke_test.ts index 78b7ccfe7df08..32c6449ad97b5 100644 --- a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/lens_migration_smoke_test.ts +++ b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/lens_migration_smoke_test.ts @@ -11,7 +11,7 @@ import expect from '@kbn/expect'; import path from 'path'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/tsvb_migration_smoke_test.ts b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/tsvb_migration_smoke_test.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/tsvb_migration_smoke_test.ts rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/tsvb_migration_smoke_test.ts index 22606cf6d2862..0c3f9c652a6ec 100644 --- a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/tsvb_migration_smoke_test.ts +++ b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/tsvb_migration_smoke_test.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import path from 'path'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/visualize_migration_smoke_test.ts b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/visualize_migration_smoke_test.ts similarity index 97% rename from x-pack/test/functional/apps/dashboard/migration_smoke_tests/visualize_migration_smoke_test.ts rename to x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/visualize_migration_smoke_test.ts index d3d6ca46cd227..f4e86217a4d75 100644 --- a/x-pack/test/functional/apps/dashboard/migration_smoke_tests/visualize_migration_smoke_test.ts +++ b/x-pack/test/functional/apps/dashboard/group2/migration_smoke_tests/visualize_migration_smoke_test.ts @@ -11,7 +11,7 @@ import expect from '@kbn/expect'; import path from 'path'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/panel_titles.ts b/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts similarity index 99% rename from x-pack/test/functional/apps/dashboard/panel_titles.ts rename to x-pack/test/functional/apps/dashboard/group2/panel_titles.ts index 3db72ba8d0a90..34b7e14d26a1a 100644 --- a/x-pack/test/functional/apps/dashboard/panel_titles.ts +++ b/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/sync_colors.ts b/x-pack/test/functional/apps/dashboard/group2/sync_colors.ts similarity index 98% rename from x-pack/test/functional/apps/dashboard/sync_colors.ts rename to x-pack/test/functional/apps/dashboard/group2/sync_colors.ts index a3628635dfa2f..093318bb8b5cd 100644 --- a/x-pack/test/functional/apps/dashboard/sync_colors.ts +++ b/x-pack/test/functional/apps/dashboard/group2/sync_colors.ts @@ -7,7 +7,7 @@ import { DebugState } from '@elastic/charts'; import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/dashboard/index.ts b/x-pack/test/functional/apps/dashboard/index.ts deleted file mode 100644 index baf37ff56bd80..0000000000000 --- a/x-pack/test/functional/apps/dashboard/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrProviderContext } from '../../ftr_provider_context'; - -export default function ({ loadTestFile }: FtrProviderContext) { - describe('dashboard', function () { - describe('', function () { - this.tags('ciGroup19'); - loadTestFile(require.resolve('./feature_controls')); - loadTestFile(require.resolve('./preserve_url')); - loadTestFile(require.resolve('./reporting')); - loadTestFile(require.resolve('./drilldowns')); - }); - - describe('', function () { - this.tags('ciGroup31'); - loadTestFile(require.resolve('./sync_colors')); - loadTestFile(require.resolve('./_async_dashboard')); - loadTestFile(require.resolve('./dashboard_tagging')); - loadTestFile(require.resolve('./dashboard_lens_by_value')); - loadTestFile(require.resolve('./dashboard_maps_by_value')); - loadTestFile(require.resolve('./panel_titles')); - - loadTestFile(require.resolve('./migration_smoke_tests/lens_migration_smoke_test')); - loadTestFile(require.resolve('./migration_smoke_tests/controls_migration_smoke_test')); - loadTestFile(require.resolve('./migration_smoke_tests/visualize_migration_smoke_test')); - loadTestFile(require.resolve('./migration_smoke_tests/tsvb_migration_smoke_test')); - }); - }); -} diff --git a/x-pack/test/functional/apps/data_views/config.ts b/x-pack/test/functional/apps/data_views/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/data_views/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/data_views/index.ts b/x-pack/test/functional/apps/data_views/index.ts index 3b3f7b3608113..3284dc901c25a 100644 --- a/x-pack/test/functional/apps/data_views/index.ts +++ b/x-pack/test/functional/apps/data_views/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function advancedSettingsApp({ loadTestFile }: FtrProviderContext) { describe('Data Views', function indexPatternsTestSuite() { - this.tags('ciGroup2'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./spaces')); }); diff --git a/x-pack/test/functional/apps/dev_tools/config.ts b/x-pack/test/functional/apps/dev_tools/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/dev_tools/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/dev_tools/index.ts b/x-pack/test/functional/apps/dev_tools/index.ts index 4f0e9290cc25e..6ef1688bb4c4e 100644 --- a/x-pack/test/functional/apps/dev_tools/index.ts +++ b/x-pack/test/functional/apps/dev_tools/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Dev Tools', function () { - this.tags('ciGroup13'); - loadTestFile(require.resolve('./breadcrumbs')); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./searchprofiler_editor')); diff --git a/x-pack/test/functional/apps/discover/config.ts b/x-pack/test/functional/apps/discover/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/discover/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/discover/index.ts b/x-pack/test/functional/apps/discover/index.ts index 9eda11bc6e6fb..bb5ac2f8ea9d4 100644 --- a/x-pack/test/functional/apps/discover/index.ts +++ b/x-pack/test/functional/apps/discover/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('discover', function () { - this.tags('ciGroup25'); - loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./preserve_url')); loadTestFile(require.resolve('./async_scripted_fields')); diff --git a/x-pack/test/functional/apps/graph/config.ts b/x-pack/test/functional/apps/graph/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/graph/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/graph/feature_controls/graph_security.ts b/x-pack/test/functional/apps/graph/feature_controls/graph_security.ts index 9179373cf610c..a1f0e3db2c187 100644 --- a/x-pack/test/functional/apps/graph/feature_controls/graph_security.ts +++ b/x-pack/test/functional/apps/graph/feature_controls/graph_security.ts @@ -16,8 +16,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const appsMenu = getService('appsMenu'); const globalNav = getService('globalNav'); - // FLAKY https://github.com/elastic/kibana/issues/109564 - describe.skip('security', () => { + describe('security', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/empty_kibana'); // ensure we're logged out so we can login as the appropriate users diff --git a/x-pack/test/functional/apps/graph/index.ts b/x-pack/test/functional/apps/graph/index.ts index 561cf8e5833d4..ca0b02e8b0f7d 100644 --- a/x-pack/test/functional/apps/graph/index.ts +++ b/x-pack/test/functional/apps/graph/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('graph app', function () { - this.tags('ciGroup12'); - loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./graph')); }); diff --git a/x-pack/test/functional/apps/grok_debugger/config.ts b/x-pack/test/functional/apps/grok_debugger/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/grok_debugger/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/grok_debugger/index.ts b/x-pack/test/functional/apps/grok_debugger/index.ts index 1fed41f6e3e36..7b0bd70508b6f 100644 --- a/x-pack/test/functional/apps/grok_debugger/index.ts +++ b/x-pack/test/functional/apps/grok_debugger/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Grok Debugger App', function () { - this.tags('ciGroup13'); loadTestFile(require.resolve('./home_page')); }); }; diff --git a/x-pack/test/functional/apps/home/config.ts b/x-pack/test/functional/apps/home/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/home/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/home/index.ts b/x-pack/test/functional/apps/home/index.ts index c7579efff03a4..fd2c5b3b752c8 100644 --- a/x-pack/test/functional/apps/home/index.ts +++ b/x-pack/test/functional/apps/home/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Home page', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./feature_controls')); }); }; diff --git a/x-pack/test/functional/apps/index_lifecycle_management/config.ts b/x-pack/test/functional/apps/index_lifecycle_management/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/index_lifecycle_management/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts index d362b84ee479a..71056c2d836fc 100644 --- a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts +++ b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts @@ -29,7 +29,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { body: { type: 'fs', settings: { - // use one of the values defined in path.repo in test/functional/config.js + // use one of the values defined in path.repo in test/functional/config.base.js location: '/tmp/', }, }, diff --git a/x-pack/test/functional/apps/index_lifecycle_management/index.ts b/x-pack/test/functional/apps/index_lifecycle_management/index.ts index cf83939c942d9..38b5803bd77ef 100644 --- a/x-pack/test/functional/apps/index_lifecycle_management/index.ts +++ b/x-pack/test/functional/apps/index_lifecycle_management/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Index Lifecycle Management app', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./home_page')); }); diff --git a/x-pack/test/functional/apps/index_management/config.ts b/x-pack/test/functional/apps/index_management/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/index_management/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/index_management/index.ts b/x-pack/test/functional/apps/index_management/index.ts index 81bd94769db62..83da8cc4bba89 100644 --- a/x-pack/test/functional/apps/index_management/index.ts +++ b/x-pack/test/functional/apps/index_management/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Index Management app', function () { - this.tags('ciGroup13'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./home_page')); }); diff --git a/x-pack/test/functional/apps/infra/config.ts b/x-pack/test/functional/apps/infra/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/infra/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/infra/index.ts b/x-pack/test/functional/apps/infra/index.ts index 15f92b8f37fd4..d574c747bf041 100644 --- a/x-pack/test/functional/apps/infra/index.ts +++ b/x-pack/test/functional/apps/infra/index.ts @@ -9,14 +9,15 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('InfraOps App', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./feature_controls')); + describe('Metrics UI', function () { loadTestFile(require.resolve('./home_page')); loadTestFile(require.resolve('./metrics_source_configuration')); loadTestFile(require.resolve('./metrics_anomalies')); loadTestFile(require.resolve('./metrics_explorer')); }); + describe('Logs UI', function () { loadTestFile(require.resolve('./log_entry_categories_tab')); loadTestFile(require.resolve('./log_entry_rate_tab')); diff --git a/x-pack/test/functional/apps/ingest_pipelines/config.ts b/x-pack/test/functional/apps/ingest_pipelines/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/ingest_pipelines/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/ingest_pipelines/index.ts b/x-pack/test/functional/apps/ingest_pipelines/index.ts index 655fccaf35a95..3c585319cfe13 100644 --- a/x-pack/test/functional/apps/ingest_pipelines/index.ts +++ b/x-pack/test/functional/apps/ingest_pipelines/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Ingest pipelines app', function () { - this.tags('ciGroup13'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./ingest_pipelines')); }); diff --git a/x-pack/test/functional/apps/lens/README.md b/x-pack/test/functional/apps/lens/README.md new file mode 100644 index 0000000000000..5e87a8b210bdd --- /dev/null +++ b/x-pack/test/functional/apps/lens/README.md @@ -0,0 +1,7 @@ +# What are all these groups? + +These tests take a while so they have been broken up into groups with their own `config.ts` and `index.ts` file, causing each of these groups to be independent bundles of tests which can be run on some worker in CI without taking an incredible amount of time. + +Want to change the groups to something more logical? Have fun! Just make sure that each group executes on CI in less than 10 minutes or so. We don't currently have any mechanism for validating this right now, you just need to look at the times in the log output on CI, but we'll be working on tooling for making this information more accessible soon. + +- Kibana Operations \ No newline at end of file diff --git a/x-pack/test/functional/apps/lens/group1/config.ts b/x-pack/test/functional/apps/lens/group1/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/lens/group1/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/lens/index.ts b/x-pack/test/functional/apps/lens/group1/index.ts similarity index 55% rename from x-pack/test/functional/apps/lens/index.ts rename to x-pack/test/functional/apps/lens/group1/index.ts index 372d17b473e4d..35030e3636c96 100644 --- a/x-pack/test/functional/apps/lens/index.ts +++ b/x-pack/test/functional/apps/lens/group1/index.ts @@ -6,7 +6,7 @@ */ import { EsArchiver } from '@kbn/es-archiver'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default ({ getService, loadTestFile, getPageObjects }: FtrProviderContext) => { const browser = getService('browser'); @@ -17,7 +17,7 @@ export default ({ getService, loadTestFile, getPageObjects }: FtrProviderContext const config = getService('config'); let remoteEsArchiver; - describe('lens app', () => { + describe('lens app - group 1', () => { const esArchive = 'x-pack/test/functional/es_archives/logstash_functional'; const localIndexPatternString = 'logstash-*'; const remoteIndexPatternString = 'ftr-remote:logstash-*'; @@ -70,54 +70,12 @@ export default ({ getService, loadTestFile, getPageObjects }: FtrProviderContext }); if (config.get('esTestCluster.ccs')) { - describe('', function () { - this.tags(['ciGroup3', 'skipFirefox']); - loadTestFile(require.resolve('./smokescreen')); - }); + loadTestFile(require.resolve('./smokescreen')); } else { - describe('', function () { - this.tags(['ciGroup3', 'skipFirefox']); - loadTestFile(require.resolve('./smokescreen')); - loadTestFile(require.resolve('./persistent_context')); - }); - - describe('', function () { - this.tags(['ciGroup16', 'skipFirefox']); - - loadTestFile(require.resolve('./add_to_dashboard')); - loadTestFile(require.resolve('./table_dashboard')); - loadTestFile(require.resolve('./table')); - loadTestFile(require.resolve('./runtime_fields')); - loadTestFile(require.resolve('./dashboard')); - loadTestFile(require.resolve('./multi_terms')); - loadTestFile(require.resolve('./epoch_millis')); - loadTestFile(require.resolve('./show_underlying_data')); - loadTestFile(require.resolve('./show_underlying_data_dashboard')); - }); - - describe('', function () { - this.tags(['ciGroup4', 'skipFirefox']); - - loadTestFile(require.resolve('./colors')); - loadTestFile(require.resolve('./chart_data')); - loadTestFile(require.resolve('./time_shift')); - loadTestFile(require.resolve('./drag_and_drop')); - loadTestFile(require.resolve('./disable_auto_apply')); - loadTestFile(require.resolve('./geo_field')); - loadTestFile(require.resolve('./formula')); - loadTestFile(require.resolve('./heatmap')); - loadTestFile(require.resolve('./gauge')); - loadTestFile(require.resolve('./metrics')); - loadTestFile(require.resolve('./reference_lines')); - loadTestFile(require.resolve('./annotations')); - loadTestFile(require.resolve('./inspector')); - loadTestFile(require.resolve('./error_handling')); - loadTestFile(require.resolve('./lens_tagging')); - loadTestFile(require.resolve('./lens_reporting')); - loadTestFile(require.resolve('./tsvb_open_in_lens')); - // has to be last one in the suite because it overrides saved objects - loadTestFile(require.resolve('./rollup')); - }); + loadTestFile(require.resolve('./smokescreen')); + loadTestFile(require.resolve('./persistent_context')); + loadTestFile(require.resolve('./table_dashboard')); + loadTestFile(require.resolve('./table')); } }); }; diff --git a/x-pack/test/functional/apps/lens/persistent_context.ts b/x-pack/test/functional/apps/lens/group1/persistent_context.ts similarity index 99% rename from x-pack/test/functional/apps/lens/persistent_context.ts rename to x-pack/test/functional/apps/lens/group1/persistent_context.ts index 445caa1abbec2..b6c37f8842329 100644 --- a/x-pack/test/functional/apps/lens/persistent_context.ts +++ b/x-pack/test/functional/apps/lens/group1/persistent_context.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects([ diff --git a/x-pack/test/functional/apps/lens/smokescreen.ts b/x-pack/test/functional/apps/lens/group1/smokescreen.ts similarity index 99% rename from x-pack/test/functional/apps/lens/smokescreen.ts rename to x-pack/test/functional/apps/lens/group1/smokescreen.ts index d817ee912664a..70887b337114f 100644 --- a/x-pack/test/functional/apps/lens/smokescreen.ts +++ b/x-pack/test/functional/apps/lens/group1/smokescreen.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { range } from 'lodash'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/table.ts b/x-pack/test/functional/apps/lens/group1/table.ts similarity index 99% rename from x-pack/test/functional/apps/lens/table.ts rename to x-pack/test/functional/apps/lens/group1/table.ts index 2070eb047ef61..18ecc2e90cfe4 100644 --- a/x-pack/test/functional/apps/lens/table.ts +++ b/x-pack/test/functional/apps/lens/group1/table.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/table_dashboard.ts b/x-pack/test/functional/apps/lens/group1/table_dashboard.ts similarity index 97% rename from x-pack/test/functional/apps/lens/table_dashboard.ts rename to x-pack/test/functional/apps/lens/group1/table_dashboard.ts index 6e76d816fa6a6..136f1903420de 100644 --- a/x-pack/test/functional/apps/lens/table_dashboard.ts +++ b/x-pack/test/functional/apps/lens/group1/table_dashboard.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['lens', 'visualize', 'dashboard']); diff --git a/x-pack/test/functional/apps/lens/add_to_dashboard.ts b/x-pack/test/functional/apps/lens/group2/add_to_dashboard.ts similarity index 99% rename from x-pack/test/functional/apps/lens/add_to_dashboard.ts rename to x-pack/test/functional/apps/lens/group2/add_to_dashboard.ts index 5fbfdd0a5806e..8ad5cd41e0bec 100644 --- a/x-pack/test/functional/apps/lens/add_to_dashboard.ts +++ b/x-pack/test/functional/apps/lens/group2/add_to_dashboard.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects([ diff --git a/x-pack/test/functional/apps/lens/group2/config.ts b/x-pack/test/functional/apps/lens/group2/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/lens/group2/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/lens/dashboard.ts b/x-pack/test/functional/apps/lens/group2/dashboard.ts similarity index 99% rename from x-pack/test/functional/apps/lens/dashboard.ts rename to x-pack/test/functional/apps/lens/group2/dashboard.ts index 97dc29280761f..9a8cc99b24315 100644 --- a/x-pack/test/functional/apps/lens/dashboard.ts +++ b/x-pack/test/functional/apps/lens/group2/dashboard.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects([ diff --git a/x-pack/test/functional/apps/lens/epoch_millis.ts b/x-pack/test/functional/apps/lens/group2/epoch_millis.ts similarity index 97% rename from x-pack/test/functional/apps/lens/epoch_millis.ts rename to x-pack/test/functional/apps/lens/group2/epoch_millis.ts index d882d69ddd1fd..ce773baf27ad9 100644 --- a/x-pack/test/functional/apps/lens/epoch_millis.ts +++ b/x-pack/test/functional/apps/lens/group2/epoch_millis.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/group2/index.ts b/x-pack/test/functional/apps/lens/group2/index.ts new file mode 100644 index 0000000000000..0e1c732dff41c --- /dev/null +++ b/x-pack/test/functional/apps/lens/group2/index.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 { EsArchiver } from '@kbn/es-archiver'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default ({ getService, loadTestFile, getPageObjects }: FtrProviderContext) => { + const browser = getService('browser'); + const log = getService('log'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['timePicker']); + const config = getService('config'); + let remoteEsArchiver; + + describe('lens app - group 2', () => { + const esArchive = 'x-pack/test/functional/es_archives/logstash_functional'; + const localIndexPatternString = 'logstash-*'; + const remoteIndexPatternString = 'ftr-remote:logstash-*'; + const localFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/default', + }; + + const remoteFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/default', + }; + let esNode: EsArchiver; + let fixtureDirs: { + lensBasic: string; + lensDefault: string; + }; + let indexPatternString: string; + before(async () => { + await log.debug('Starting lens before method'); + await browser.setWindowSize(1280, 1200); + try { + config.get('esTestCluster.ccs'); + remoteEsArchiver = getService('remoteEsArchiver' as 'esArchiver'); + esNode = remoteEsArchiver; + fixtureDirs = remoteFixtures; + indexPatternString = remoteIndexPatternString; + } catch (error) { + esNode = esArchiver; + fixtureDirs = localFixtures; + indexPatternString = localIndexPatternString; + } + + await esNode.load(esArchive); + // changing the timepicker default here saves us from having to set it in Discover (~8s) + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.uiSettings.update({ + defaultIndex: indexPatternString, + 'dateFormat:tz': 'UTC', + }); + await kibanaServer.importExport.load(fixtureDirs.lensBasic); + await kibanaServer.importExport.load(fixtureDirs.lensDefault); + }); + + after(async () => { + await esArchiver.unload(esArchive); + await PageObjects.timePicker.resetDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.importExport.unload(fixtureDirs.lensBasic); + await kibanaServer.importExport.unload(fixtureDirs.lensDefault); + }); + + loadTestFile(require.resolve('./add_to_dashboard')); + loadTestFile(require.resolve('./runtime_fields')); + loadTestFile(require.resolve('./dashboard')); + loadTestFile(require.resolve('./multi_terms')); + loadTestFile(require.resolve('./epoch_millis')); + loadTestFile(require.resolve('./show_underlying_data')); + loadTestFile(require.resolve('./show_underlying_data_dashboard')); + }); +}; diff --git a/x-pack/test/functional/apps/lens/multi_terms.ts b/x-pack/test/functional/apps/lens/group2/multi_terms.ts similarity index 97% rename from x-pack/test/functional/apps/lens/multi_terms.ts rename to x-pack/test/functional/apps/lens/group2/multi_terms.ts index 05283b80a7c81..58fa172378964 100644 --- a/x-pack/test/functional/apps/lens/multi_terms.ts +++ b/x-pack/test/functional/apps/lens/group2/multi_terms.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/runtime_fields.ts b/x-pack/test/functional/apps/lens/group2/runtime_fields.ts similarity index 97% rename from x-pack/test/functional/apps/lens/runtime_fields.ts rename to x-pack/test/functional/apps/lens/group2/runtime_fields.ts index 252951cba4bd0..868432ce1ae4d 100644 --- a/x-pack/test/functional/apps/lens/runtime_fields.ts +++ b/x-pack/test/functional/apps/lens/group2/runtime_fields.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/show_underlying_data.ts b/x-pack/test/functional/apps/lens/group2/show_underlying_data.ts similarity index 99% rename from x-pack/test/functional/apps/lens/show_underlying_data.ts rename to x-pack/test/functional/apps/lens/group2/show_underlying_data.ts index 4bc8be22eb8f4..910a4a6880644 100644 --- a/x-pack/test/functional/apps/lens/show_underlying_data.ts +++ b/x-pack/test/functional/apps/lens/group2/show_underlying_data.ts @@ -5,7 +5,7 @@ * 2.0. */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header', 'discover']); diff --git a/x-pack/test/functional/apps/lens/show_underlying_data_dashboard.ts b/x-pack/test/functional/apps/lens/group2/show_underlying_data_dashboard.ts similarity index 98% rename from x-pack/test/functional/apps/lens/show_underlying_data_dashboard.ts rename to x-pack/test/functional/apps/lens/group2/show_underlying_data_dashboard.ts index dc25e5f77f412..9446b28c1e3ca 100644 --- a/x-pack/test/functional/apps/lens/show_underlying_data_dashboard.ts +++ b/x-pack/test/functional/apps/lens/group2/show_underlying_data_dashboard.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; import uuid from 'uuid'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects([ diff --git a/x-pack/test/functional/apps/lens/annotations.ts b/x-pack/test/functional/apps/lens/group3/annotations.ts similarity index 97% rename from x-pack/test/functional/apps/lens/annotations.ts rename to x-pack/test/functional/apps/lens/group3/annotations.ts index c54b3081f7418..2b641c6c161d4 100644 --- a/x-pack/test/functional/apps/lens/annotations.ts +++ b/x-pack/test/functional/apps/lens/group3/annotations.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/chart_data.ts b/x-pack/test/functional/apps/lens/group3/chart_data.ts similarity index 98% rename from x-pack/test/functional/apps/lens/chart_data.ts rename to x-pack/test/functional/apps/lens/group3/chart_data.ts index 7ea61c1fa3d81..6ef40c11407e8 100644 --- a/x-pack/test/functional/apps/lens/chart_data.ts +++ b/x-pack/test/functional/apps/lens/group3/chart_data.ts @@ -8,7 +8,7 @@ import { DebugState } from '@elastic/charts'; import expect from '@kbn/expect'; import { range } from 'lodash'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/colors.ts b/x-pack/test/functional/apps/lens/group3/colors.ts similarity index 96% rename from x-pack/test/functional/apps/lens/colors.ts rename to x-pack/test/functional/apps/lens/group3/colors.ts index 638da79b5c5cb..4078b0663d7ae 100644 --- a/x-pack/test/functional/apps/lens/colors.ts +++ b/x-pack/test/functional/apps/lens/group3/colors.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common']); diff --git a/x-pack/test/functional/apps/lens/group3/config.ts b/x-pack/test/functional/apps/lens/group3/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/lens/group3/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/lens/disable_auto_apply.ts b/x-pack/test/functional/apps/lens/group3/disable_auto_apply.ts similarity index 98% rename from x-pack/test/functional/apps/lens/disable_auto_apply.ts rename to x-pack/test/functional/apps/lens/group3/disable_auto_apply.ts index f73ce56bae694..e52b1cccda8a3 100644 --- a/x-pack/test/functional/apps/lens/disable_auto_apply.ts +++ b/x-pack/test/functional/apps/lens/group3/disable_auto_apply.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['lens', 'visualize']); diff --git a/x-pack/test/functional/apps/lens/drag_and_drop.ts b/x-pack/test/functional/apps/lens/group3/drag_and_drop.ts similarity index 99% rename from x-pack/test/functional/apps/lens/drag_and_drop.ts rename to x-pack/test/functional/apps/lens/group3/drag_and_drop.ts index d5b929481e6dc..dec72008d6f04 100644 --- a/x-pack/test/functional/apps/lens/drag_and_drop.ts +++ b/x-pack/test/functional/apps/lens/group3/drag_and_drop.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/error_handling.ts b/x-pack/test/functional/apps/lens/group3/error_handling.ts similarity index 97% rename from x-pack/test/functional/apps/lens/error_handling.ts rename to x-pack/test/functional/apps/lens/group3/error_handling.ts index 87f62abf88e4f..8f6659bda1562 100644 --- a/x-pack/test/functional/apps/lens/error_handling.ts +++ b/x-pack/test/functional/apps/lens/group3/error_handling.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects([ diff --git a/x-pack/test/functional/apps/lens/formula.ts b/x-pack/test/functional/apps/lens/group3/formula.ts similarity index 99% rename from x-pack/test/functional/apps/lens/formula.ts rename to x-pack/test/functional/apps/lens/group3/formula.ts index 02d4fda0e96a6..33a24d3aefb1c 100644 --- a/x-pack/test/functional/apps/lens/formula.ts +++ b/x-pack/test/functional/apps/lens/group3/formula.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common']); diff --git a/x-pack/test/functional/apps/lens/gauge.ts b/x-pack/test/functional/apps/lens/group3/gauge.ts similarity index 98% rename from x-pack/test/functional/apps/lens/gauge.ts rename to x-pack/test/functional/apps/lens/group3/gauge.ts index c21ddf5b70791..9cbcbb606b423 100644 --- a/x-pack/test/functional/apps/lens/gauge.ts +++ b/x-pack/test/functional/apps/lens/group3/gauge.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/geo_field.ts b/x-pack/test/functional/apps/lens/group3/geo_field.ts similarity index 95% rename from x-pack/test/functional/apps/lens/geo_field.ts rename to x-pack/test/functional/apps/lens/group3/geo_field.ts index f9b8277a22731..bb8012ba50d23 100644 --- a/x-pack/test/functional/apps/lens/geo_field.ts +++ b/x-pack/test/functional/apps/lens/group3/geo_field.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'header', 'maps', 'timePicker']); diff --git a/x-pack/test/functional/apps/lens/heatmap.ts b/x-pack/test/functional/apps/lens/group3/heatmap.ts similarity index 99% rename from x-pack/test/functional/apps/lens/heatmap.ts rename to x-pack/test/functional/apps/lens/group3/heatmap.ts index ff1378ac82539..aa1e10a715547 100644 --- a/x-pack/test/functional/apps/lens/heatmap.ts +++ b/x-pack/test/functional/apps/lens/group3/heatmap.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common']); diff --git a/x-pack/test/functional/apps/lens/group3/index.ts b/x-pack/test/functional/apps/lens/group3/index.ts new file mode 100644 index 0000000000000..03c42e4c70ebf --- /dev/null +++ b/x-pack/test/functional/apps/lens/group3/index.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. + */ + +import { EsArchiver } from '@kbn/es-archiver'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default ({ getService, loadTestFile, getPageObjects }: FtrProviderContext) => { + const browser = getService('browser'); + const log = getService('log'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['timePicker']); + const config = getService('config'); + let remoteEsArchiver; + + describe('lens app - group 3', () => { + const esArchive = 'x-pack/test/functional/es_archives/logstash_functional'; + const localIndexPatternString = 'logstash-*'; + const remoteIndexPatternString = 'ftr-remote:logstash-*'; + const localFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/default', + }; + + const remoteFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/default', + }; + let esNode: EsArchiver; + let fixtureDirs: { + lensBasic: string; + lensDefault: string; + }; + let indexPatternString: string; + before(async () => { + await log.debug('Starting lens before method'); + await browser.setWindowSize(1280, 1200); + try { + config.get('esTestCluster.ccs'); + remoteEsArchiver = getService('remoteEsArchiver' as 'esArchiver'); + esNode = remoteEsArchiver; + fixtureDirs = remoteFixtures; + indexPatternString = remoteIndexPatternString; + } catch (error) { + esNode = esArchiver; + fixtureDirs = localFixtures; + indexPatternString = localIndexPatternString; + } + + await esNode.load(esArchive); + // changing the timepicker default here saves us from having to set it in Discover (~8s) + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.uiSettings.update({ + defaultIndex: indexPatternString, + 'dateFormat:tz': 'UTC', + }); + await kibanaServer.importExport.load(fixtureDirs.lensBasic); + await kibanaServer.importExport.load(fixtureDirs.lensDefault); + }); + + after(async () => { + await esArchiver.unload(esArchive); + await PageObjects.timePicker.resetDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.importExport.unload(fixtureDirs.lensBasic); + await kibanaServer.importExport.unload(fixtureDirs.lensDefault); + }); + + loadTestFile(require.resolve('./colors')); + loadTestFile(require.resolve('./chart_data')); + loadTestFile(require.resolve('./time_shift')); + loadTestFile(require.resolve('./drag_and_drop')); + loadTestFile(require.resolve('./disable_auto_apply')); + loadTestFile(require.resolve('./geo_field')); + loadTestFile(require.resolve('./formula')); + loadTestFile(require.resolve('./heatmap')); + loadTestFile(require.resolve('./gauge')); + loadTestFile(require.resolve('./metrics')); + loadTestFile(require.resolve('./reference_lines')); + loadTestFile(require.resolve('./annotations')); + loadTestFile(require.resolve('./inspector')); + loadTestFile(require.resolve('./error_handling')); + loadTestFile(require.resolve('./lens_tagging')); + loadTestFile(require.resolve('./lens_reporting')); + loadTestFile(require.resolve('./tsvb_open_in_lens')); + // 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/group3/inspector.ts similarity index 96% rename from x-pack/test/functional/apps/lens/inspector.ts rename to x-pack/test/functional/apps/lens/group3/inspector.ts index d94d3413c07b0..9f52d783011c4 100644 --- a/x-pack/test/functional/apps/lens/inspector.ts +++ b/x-pack/test/functional/apps/lens/group3/inspector.ts @@ -5,7 +5,7 @@ * 2.0. */ import expect from '@kbn/expect'; -import type { FtrProviderContext } from '../../ftr_provider_context'; +import type { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/lens_reporting.ts b/x-pack/test/functional/apps/lens/group3/lens_reporting.ts similarity index 96% rename from x-pack/test/functional/apps/lens/lens_reporting.ts rename to x-pack/test/functional/apps/lens/group3/lens_reporting.ts index 6dfb1dd923b3e..2cbb55ae03d97 100644 --- a/x-pack/test/functional/apps/lens/lens_reporting.ts +++ b/x-pack/test/functional/apps/lens/group3/lens_reporting.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'dashboard', 'reporting', 'timePicker']); diff --git a/x-pack/test/functional/apps/lens/lens_tagging.ts b/x-pack/test/functional/apps/lens/group3/lens_tagging.ts similarity index 98% rename from x-pack/test/functional/apps/lens/lens_tagging.ts rename to x-pack/test/functional/apps/lens/group3/lens_tagging.ts index 3852fdb0456ac..d69b49403fc31 100644 --- a/x-pack/test/functional/apps/lens/lens_tagging.ts +++ b/x-pack/test/functional/apps/lens/group3/lens_tagging.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const listingTable = getService('listingTable'); diff --git a/x-pack/test/functional/apps/lens/metrics.ts b/x-pack/test/functional/apps/lens/group3/metrics.ts similarity index 97% rename from x-pack/test/functional/apps/lens/metrics.ts rename to x-pack/test/functional/apps/lens/group3/metrics.ts index 62a8b69141a58..bf651f7a12a1b 100644 --- a/x-pack/test/functional/apps/lens/metrics.ts +++ b/x-pack/test/functional/apps/lens/group3/metrics.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/reference_lines.ts b/x-pack/test/functional/apps/lens/group3/reference_lines.ts similarity index 98% rename from x-pack/test/functional/apps/lens/reference_lines.ts rename to x-pack/test/functional/apps/lens/group3/reference_lines.ts index 97c6ebf5b138f..f022a6cef6e7a 100644 --- a/x-pack/test/functional/apps/lens/reference_lines.ts +++ b/x-pack/test/functional/apps/lens/group3/reference_lines.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/rollup.ts b/x-pack/test/functional/apps/lens/group3/rollup.ts similarity index 98% rename from x-pack/test/functional/apps/lens/rollup.ts rename to x-pack/test/functional/apps/lens/group3/rollup.ts index 25ab766d04bbd..d42cc67ad673c 100644 --- a/x-pack/test/functional/apps/lens/rollup.ts +++ b/x-pack/test/functional/apps/lens/group3/rollup.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'header', 'timePicker']); diff --git a/x-pack/test/functional/apps/lens/time_shift.ts b/x-pack/test/functional/apps/lens/group3/time_shift.ts similarity index 97% rename from x-pack/test/functional/apps/lens/time_shift.ts rename to x-pack/test/functional/apps/lens/group3/time_shift.ts index e3363bee419aa..4dd22ea719ec7 100644 --- a/x-pack/test/functional/apps/lens/time_shift.ts +++ b/x-pack/test/functional/apps/lens/group3/time_shift.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); diff --git a/x-pack/test/functional/apps/lens/tsvb_open_in_lens.ts b/x-pack/test/functional/apps/lens/group3/tsvb_open_in_lens.ts similarity index 99% rename from x-pack/test/functional/apps/lens/tsvb_open_in_lens.ts rename to x-pack/test/functional/apps/lens/group3/tsvb_open_in_lens.ts index 0315d20e5fc91..f9d21f80462e6 100644 --- a/x-pack/test/functional/apps/lens/tsvb_open_in_lens.ts +++ b/x-pack/test/functional/apps/lens/group3/tsvb_open_in_lens.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const { visualize, visualBuilder, header, lens, timeToVisualize, dashboard, canvas } = diff --git a/x-pack/test/functional/apps/license_management/config.ts b/x-pack/test/functional/apps/license_management/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/license_management/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/license_management/index.ts b/x-pack/test/functional/apps/license_management/index.ts index a209a4370ced9..d4256588667ec 100644 --- a/x-pack/test/functional/apps/license_management/index.ts +++ b/x-pack/test/functional/apps/license_management/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('License app', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./home_page')); }); diff --git a/x-pack/test/functional/apps/logstash/config.ts b/x-pack/test/functional/apps/logstash/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/logstash/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/logstash/feature_controls/index.ts b/x-pack/test/functional/apps/logstash/feature_controls/index.ts index eb4c681531cbc..c50611d7fa7c4 100644 --- a/x-pack/test/functional/apps/logstash/feature_controls/index.ts +++ b/x-pack/test/functional/apps/logstash/feature_controls/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('feature controls', function () { - this.tags(['ciGroup2']); - loadTestFile(require.resolve('./logstash_security')); }); } diff --git a/x-pack/test/functional/apps/logstash/index.js b/x-pack/test/functional/apps/logstash/index.js index 8c1ac233e9c57..deaf4041b1b59 100644 --- a/x-pack/test/functional/apps/logstash/index.js +++ b/x-pack/test/functional/apps/logstash/index.js @@ -7,8 +7,6 @@ export default function ({ loadTestFile }) { describe('logstash', function () { - this.tags(['ciGroup2']); - loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./pipeline_list')); loadTestFile(require.resolve('./pipeline_create')); diff --git a/x-pack/test/functional/apps/management/config.ts b/x-pack/test/functional/apps/management/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/management/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/management/feature_controls/index.ts b/x-pack/test/functional/apps/management/feature_controls/index.ts index 66eb2e4937620..17e71ef190856 100644 --- a/x-pack/test/functional/apps/management/feature_controls/index.ts +++ b/x-pack/test/functional/apps/management/feature_controls/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('feature controls', function () { - this.tags(['ciGroup2']); - loadTestFile(require.resolve('./management_security')); }); } diff --git a/x-pack/test/functional/apps/management/index.ts b/x-pack/test/functional/apps/management/index.ts index 03fec9fffe4fb..72da3e0fd739a 100644 --- a/x-pack/test/functional/apps/management/index.ts +++ b/x-pack/test/functional/apps/management/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('management', function () { - this.tags(['ciGroup2']); - loadTestFile(require.resolve('./create_index_pattern_wizard')); loadTestFile(require.resolve('./feature_controls')); }); diff --git a/x-pack/test/functional/apps/maps/README.md b/x-pack/test/functional/apps/maps/README.md new file mode 100644 index 0000000000000..5e87a8b210bdd --- /dev/null +++ b/x-pack/test/functional/apps/maps/README.md @@ -0,0 +1,7 @@ +# What are all these groups? + +These tests take a while so they have been broken up into groups with their own `config.ts` and `index.ts` file, causing each of these groups to be independent bundles of tests which can be run on some worker in CI without taking an incredible amount of time. + +Want to change the groups to something more logical? Have fun! Just make sure that each group executes on CI in less than 10 minutes or so. We don't currently have any mechanism for validating this right now, you just need to look at the times in the log output on CI, but we'll be working on tooling for making this information more accessible soon. + +- Kibana Operations \ No newline at end of file diff --git a/x-pack/test/functional/apps/maps/auto_fit_to_bounds.js b/x-pack/test/functional/apps/maps/group1/auto_fit_to_bounds.js similarity index 100% rename from x-pack/test/functional/apps/maps/auto_fit_to_bounds.js rename to x-pack/test/functional/apps/maps/group1/auto_fit_to_bounds.js diff --git a/x-pack/test/functional/apps/maps/blended_vector_layer.js b/x-pack/test/functional/apps/maps/group1/blended_vector_layer.js similarity index 100% rename from x-pack/test/functional/apps/maps/blended_vector_layer.js rename to x-pack/test/functional/apps/maps/group1/blended_vector_layer.js diff --git a/x-pack/test/functional/apps/maps/group1/config.ts b/x-pack/test/functional/apps/maps/group1/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/maps/group1/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/maps/documents_source/docvalue_fields.js b/x-pack/test/functional/apps/maps/group1/documents_source/docvalue_fields.js similarity index 100% rename from x-pack/test/functional/apps/maps/documents_source/docvalue_fields.js rename to x-pack/test/functional/apps/maps/group1/documents_source/docvalue_fields.js diff --git a/x-pack/test/functional/apps/maps/documents_source/index.js b/x-pack/test/functional/apps/maps/group1/documents_source/index.js similarity index 100% rename from x-pack/test/functional/apps/maps/documents_source/index.js rename to x-pack/test/functional/apps/maps/group1/documents_source/index.js diff --git a/x-pack/test/functional/apps/maps/documents_source/search_hits.js b/x-pack/test/functional/apps/maps/group1/documents_source/search_hits.js similarity index 100% rename from x-pack/test/functional/apps/maps/documents_source/search_hits.js rename to x-pack/test/functional/apps/maps/group1/documents_source/search_hits.js diff --git a/x-pack/test/functional/apps/maps/documents_source/top_hits.js b/x-pack/test/functional/apps/maps/group1/documents_source/top_hits.js similarity index 100% rename from x-pack/test/functional/apps/maps/documents_source/top_hits.js rename to x-pack/test/functional/apps/maps/group1/documents_source/top_hits.js diff --git a/x-pack/test/functional/apps/maps/feature_controls/maps_security.ts b/x-pack/test/functional/apps/maps/group1/feature_controls/maps_security.ts similarity index 99% rename from x-pack/test/functional/apps/maps/feature_controls/maps_security.ts rename to x-pack/test/functional/apps/maps/group1/feature_controls/maps_security.ts index db6bfb642ebbb..ad4a2acd475a0 100644 --- a/x-pack/test/functional/apps/maps/feature_controls/maps_security.ts +++ b/x-pack/test/functional/apps/maps/group1/feature_controls/maps_security.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const security = getService('security'); diff --git a/x-pack/test/functional/apps/maps/feature_controls/maps_spaces.ts b/x-pack/test/functional/apps/maps/group1/feature_controls/maps_spaces.ts similarity index 98% rename from x-pack/test/functional/apps/maps/feature_controls/maps_spaces.ts rename to x-pack/test/functional/apps/maps/group1/feature_controls/maps_spaces.ts index 1beddd72d3fde..a306c15bfbdb2 100644 --- a/x-pack/test/functional/apps/maps/feature_controls/maps_spaces.ts +++ b/x-pack/test/functional/apps/maps/group1/feature_controls/maps_spaces.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { APP_ID } from '@kbn/maps-plugin/common/constants'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const spacesService = getService('spaces'); diff --git a/x-pack/test/functional/apps/maps/full_screen_mode.js b/x-pack/test/functional/apps/maps/group1/full_screen_mode.js similarity index 100% rename from x-pack/test/functional/apps/maps/full_screen_mode.js rename to x-pack/test/functional/apps/maps/group1/full_screen_mode.js diff --git a/x-pack/test/functional/apps/maps/group1/index.js b/x-pack/test/functional/apps/maps/group1/index.js new file mode 100644 index 0000000000000..be59d43012626 --- /dev/null +++ b/x-pack/test/functional/apps/maps/group1/index.js @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export default function ({ loadTestFile, getService }) { + const kibanaServer = getService('kibanaServer'); + const esArchiver = getService('esArchiver'); + const browser = getService('browser'); + const log = getService('log'); + const supertest = getService('supertest'); + + describe('maps app', function () { + this.tags(['skipFirefox']); + + before(async () => { + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/maps.json' + ); + // Functional tests verify behavior when referenced index pattern saved objects can not be found. + // However, saved object import fails when reference saved objects can not be found. + // To prevent import errors, index pattern saved object references exist during import + // but are then deleted afterwards to enable testing of missing reference index pattern saved objects. + + log.info('Delete index pattern'); + log.debug('id: ' + 'idThatDoesNotExitForESGeoGridSource'); + log.debug('id: ' + 'idThatDoesNotExitForESSearchSource'); + log.debug('id: ' + 'idThatDoesNotExitForESJoinSource'); + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESGeoGridSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESSearchSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESJoinSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await esArchiver.load('x-pack/test/functional/es_archives/maps/data'); + await kibanaServer.uiSettings.replace({ + defaultIndex: 'c698b940-e149-11e8-a35a-370a8516603a', + }); + await browser.setWindowSize(1600, 1000); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/maps/data'); + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/maps.json' + ); + }); + + loadTestFile(require.resolve('./documents_source')); + loadTestFile(require.resolve('./blended_vector_layer')); + loadTestFile(require.resolve('./vector_styling')); + loadTestFile(require.resolve('./saved_object_management')); + loadTestFile(require.resolve('./sample_data')); + loadTestFile(require.resolve('./auto_fit_to_bounds')); + loadTestFile(require.resolve('./layer_visibility')); + loadTestFile(require.resolve('./feature_controls/maps_security')); + loadTestFile(require.resolve('./feature_controls/maps_spaces')); + loadTestFile(require.resolve('./full_screen_mode')); + }); +} diff --git a/x-pack/test/functional/apps/maps/layer_visibility.js b/x-pack/test/functional/apps/maps/group1/layer_visibility.js similarity index 100% rename from x-pack/test/functional/apps/maps/layer_visibility.js rename to x-pack/test/functional/apps/maps/group1/layer_visibility.js diff --git a/x-pack/test/functional/apps/maps/sample_data.js b/x-pack/test/functional/apps/maps/group1/sample_data.js similarity index 100% rename from x-pack/test/functional/apps/maps/sample_data.js rename to x-pack/test/functional/apps/maps/group1/sample_data.js diff --git a/x-pack/test/functional/apps/maps/saved_object_management.js b/x-pack/test/functional/apps/maps/group1/saved_object_management.js similarity index 100% rename from x-pack/test/functional/apps/maps/saved_object_management.js rename to x-pack/test/functional/apps/maps/group1/saved_object_management.js diff --git a/x-pack/test/functional/apps/maps/vector_styling.js b/x-pack/test/functional/apps/maps/group1/vector_styling.js similarity index 100% rename from x-pack/test/functional/apps/maps/vector_styling.js rename to x-pack/test/functional/apps/maps/group1/vector_styling.js diff --git a/x-pack/test/functional/apps/maps/group2/config.ts b/x-pack/test/functional/apps/maps/group2/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/maps/group2/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/maps/embeddable/add_to_dashboard.js b/x-pack/test/functional/apps/maps/group2/embeddable/add_to_dashboard.js similarity index 100% rename from x-pack/test/functional/apps/maps/embeddable/add_to_dashboard.js rename to x-pack/test/functional/apps/maps/group2/embeddable/add_to_dashboard.js diff --git a/x-pack/test/functional/apps/maps/embeddable/dashboard.js b/x-pack/test/functional/apps/maps/group2/embeddable/dashboard.js similarity index 100% rename from x-pack/test/functional/apps/maps/embeddable/dashboard.js rename to x-pack/test/functional/apps/maps/group2/embeddable/dashboard.js diff --git a/x-pack/test/functional/apps/maps/embeddable/embeddable_library.js b/x-pack/test/functional/apps/maps/group2/embeddable/embeddable_library.js similarity index 100% rename from x-pack/test/functional/apps/maps/embeddable/embeddable_library.js rename to x-pack/test/functional/apps/maps/group2/embeddable/embeddable_library.js diff --git a/x-pack/test/functional/apps/maps/embeddable/embeddable_state.js b/x-pack/test/functional/apps/maps/group2/embeddable/embeddable_state.js similarity index 100% rename from x-pack/test/functional/apps/maps/embeddable/embeddable_state.js rename to x-pack/test/functional/apps/maps/group2/embeddable/embeddable_state.js diff --git a/x-pack/test/functional/apps/maps/embeddable/filter_by_map_extent.js b/x-pack/test/functional/apps/maps/group2/embeddable/filter_by_map_extent.js similarity index 100% rename from x-pack/test/functional/apps/maps/embeddable/filter_by_map_extent.js rename to x-pack/test/functional/apps/maps/group2/embeddable/filter_by_map_extent.js diff --git a/x-pack/test/functional/apps/maps/embeddable/index.js b/x-pack/test/functional/apps/maps/group2/embeddable/index.js similarity index 100% rename from x-pack/test/functional/apps/maps/embeddable/index.js rename to x-pack/test/functional/apps/maps/group2/embeddable/index.js diff --git a/x-pack/test/functional/apps/maps/embeddable/save_and_return.js b/x-pack/test/functional/apps/maps/group2/embeddable/save_and_return.js similarity index 100% rename from x-pack/test/functional/apps/maps/embeddable/save_and_return.js rename to x-pack/test/functional/apps/maps/group2/embeddable/save_and_return.js diff --git a/x-pack/test/functional/apps/maps/embeddable/tooltip_filter_actions.js b/x-pack/test/functional/apps/maps/group2/embeddable/tooltip_filter_actions.js similarity index 100% rename from x-pack/test/functional/apps/maps/embeddable/tooltip_filter_actions.js rename to x-pack/test/functional/apps/maps/group2/embeddable/tooltip_filter_actions.js diff --git a/x-pack/test/functional/apps/maps/es_geo_grid_source.js b/x-pack/test/functional/apps/maps/group2/es_geo_grid_source.js similarity index 100% rename from x-pack/test/functional/apps/maps/es_geo_grid_source.js rename to x-pack/test/functional/apps/maps/group2/es_geo_grid_source.js diff --git a/x-pack/test/functional/apps/maps/group2/index.js b/x-pack/test/functional/apps/maps/group2/index.js new file mode 100644 index 0000000000000..b8b3a15a10ed5 --- /dev/null +++ b/x-pack/test/functional/apps/maps/group2/index.js @@ -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. + */ + +export default function ({ loadTestFile, getService }) { + const kibanaServer = getService('kibanaServer'); + const esArchiver = getService('esArchiver'); + const browser = getService('browser'); + const log = getService('log'); + const supertest = getService('supertest'); + + describe('maps app', function () { + this.tags(['skipFirefox']); + + before(async () => { + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/maps.json' + ); + // Functional tests verify behavior when referenced index pattern saved objects can not be found. + // However, saved object import fails when reference saved objects can not be found. + // To prevent import errors, index pattern saved object references exist during import + // but are then deleted afterwards to enable testing of missing reference index pattern saved objects. + + log.info('Delete index pattern'); + log.debug('id: ' + 'idThatDoesNotExitForESGeoGridSource'); + log.debug('id: ' + 'idThatDoesNotExitForESSearchSource'); + log.debug('id: ' + 'idThatDoesNotExitForESJoinSource'); + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESGeoGridSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESSearchSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESJoinSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await esArchiver.load('x-pack/test/functional/es_archives/maps/data'); + await kibanaServer.uiSettings.replace({ + defaultIndex: 'c698b940-e149-11e8-a35a-370a8516603a', + }); + await browser.setWindowSize(1600, 1000); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/maps/data'); + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/maps.json' + ); + }); + + loadTestFile(require.resolve('./es_geo_grid_source')); + loadTestFile(require.resolve('./embeddable')); + }); +} diff --git a/x-pack/test/functional/apps/maps/group3/config.ts b/x-pack/test/functional/apps/maps/group3/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/maps/group3/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/maps/group3/index.js b/x-pack/test/functional/apps/maps/group3/index.js new file mode 100644 index 0000000000000..fda116cecc307 --- /dev/null +++ b/x-pack/test/functional/apps/maps/group3/index.js @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export default function ({ loadTestFile, getService }) { + const kibanaServer = getService('kibanaServer'); + const esArchiver = getService('esArchiver'); + const browser = getService('browser'); + const log = getService('log'); + const supertest = getService('supertest'); + + describe('maps app', function () { + this.tags(['skipFirefox']); + + before(async () => { + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/maps.json' + ); + // Functional tests verify behavior when referenced index pattern saved objects can not be found. + // However, saved object import fails when reference saved objects can not be found. + // To prevent import errors, index pattern saved object references exist during import + // but are then deleted afterwards to enable testing of missing reference index pattern saved objects. + + log.info('Delete index pattern'); + log.debug('id: ' + 'idThatDoesNotExitForESGeoGridSource'); + log.debug('id: ' + 'idThatDoesNotExitForESSearchSource'); + log.debug('id: ' + 'idThatDoesNotExitForESJoinSource'); + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESGeoGridSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESSearchSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await supertest + .delete('/api/index_patterns/index_pattern/' + 'idThatDoesNotExitForESJoinSource') + .set('kbn-xsrf', 'true') + .expect(200); + + await esArchiver.load('x-pack/test/functional/es_archives/maps/data'); + await kibanaServer.uiSettings.replace({ + defaultIndex: 'c698b940-e149-11e8-a35a-370a8516603a', + }); + await browser.setWindowSize(1600, 1000); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/maps/data'); + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/maps.json' + ); + }); + + loadTestFile(require.resolve('./reports')); + }); +} diff --git a/x-pack/test/functional/apps/maps/reports/baseline/example_map_report.png b/x-pack/test/functional/apps/maps/group3/reports/baseline/example_map_report.png similarity index 100% rename from x-pack/test/functional/apps/maps/reports/baseline/example_map_report.png rename to x-pack/test/functional/apps/maps/group3/reports/baseline/example_map_report.png diff --git a/x-pack/test/functional/apps/maps/reports/baseline/geo_map_report.png b/x-pack/test/functional/apps/maps/group3/reports/baseline/geo_map_report.png similarity index 100% rename from x-pack/test/functional/apps/maps/reports/baseline/geo_map_report.png rename to x-pack/test/functional/apps/maps/group3/reports/baseline/geo_map_report.png diff --git a/x-pack/test/functional/apps/maps/reports/index.ts b/x-pack/test/functional/apps/maps/group3/reports/index.ts similarity index 97% rename from x-pack/test/functional/apps/maps/reports/index.ts rename to x-pack/test/functional/apps/maps/group3/reports/index.ts index 4e942b1e150ef..c892842782aa6 100644 --- a/x-pack/test/functional/apps/maps/reports/index.ts +++ b/x-pack/test/functional/apps/maps/group3/reports/index.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; const REPORTS_FOLDER = __dirname; diff --git a/x-pack/test/functional/apps/maps/add_layer_panel.js b/x-pack/test/functional/apps/maps/group4/add_layer_panel.js similarity index 100% rename from x-pack/test/functional/apps/maps/add_layer_panel.js rename to x-pack/test/functional/apps/maps/group4/add_layer_panel.js diff --git a/x-pack/test/functional/apps/maps/group4/config.ts b/x-pack/test/functional/apps/maps/group4/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/maps/group4/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/maps/discover.js b/x-pack/test/functional/apps/maps/group4/discover.js similarity index 100% rename from x-pack/test/functional/apps/maps/discover.js rename to x-pack/test/functional/apps/maps/group4/discover.js diff --git a/x-pack/test/functional/apps/maps/es_pew_pew_source.js b/x-pack/test/functional/apps/maps/group4/es_pew_pew_source.js similarity index 100% rename from x-pack/test/functional/apps/maps/es_pew_pew_source.js rename to x-pack/test/functional/apps/maps/group4/es_pew_pew_source.js diff --git a/x-pack/test/functional/apps/maps/file_upload/files/cb_2018_us_csa_500k.dbf b/x-pack/test/functional/apps/maps/group4/file_upload/files/cb_2018_us_csa_500k.dbf similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/files/cb_2018_us_csa_500k.dbf rename to x-pack/test/functional/apps/maps/group4/file_upload/files/cb_2018_us_csa_500k.dbf diff --git a/x-pack/test/functional/apps/maps/file_upload/files/cb_2018_us_csa_500k.prj b/x-pack/test/functional/apps/maps/group4/file_upload/files/cb_2018_us_csa_500k.prj similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/files/cb_2018_us_csa_500k.prj rename to x-pack/test/functional/apps/maps/group4/file_upload/files/cb_2018_us_csa_500k.prj diff --git a/x-pack/test/functional/apps/maps/file_upload/files/cb_2018_us_csa_500k.shp b/x-pack/test/functional/apps/maps/group4/file_upload/files/cb_2018_us_csa_500k.shp similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/files/cb_2018_us_csa_500k.shp rename to x-pack/test/functional/apps/maps/group4/file_upload/files/cb_2018_us_csa_500k.shp diff --git a/x-pack/test/functional/apps/maps/file_upload/files/cb_2018_us_csa_500k.shx b/x-pack/test/functional/apps/maps/group4/file_upload/files/cb_2018_us_csa_500k.shx similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/files/cb_2018_us_csa_500k.shx rename to x-pack/test/functional/apps/maps/group4/file_upload/files/cb_2018_us_csa_500k.shx diff --git a/x-pack/test/functional/apps/maps/file_upload/files/point.json b/x-pack/test/functional/apps/maps/group4/file_upload/files/point.json similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/files/point.json rename to x-pack/test/functional/apps/maps/group4/file_upload/files/point.json diff --git a/x-pack/test/functional/apps/maps/file_upload/files/polygon.json b/x-pack/test/functional/apps/maps/group4/file_upload/files/polygon.json similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/files/polygon.json rename to x-pack/test/functional/apps/maps/group4/file_upload/files/polygon.json diff --git a/x-pack/test/functional/apps/maps/file_upload/files/world_countries_v7.geo.json b/x-pack/test/functional/apps/maps/group4/file_upload/files/world_countries_v7.geo.json similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/files/world_countries_v7.geo.json rename to x-pack/test/functional/apps/maps/group4/file_upload/files/world_countries_v7.geo.json diff --git a/x-pack/test/functional/apps/maps/file_upload/geojson.js b/x-pack/test/functional/apps/maps/group4/file_upload/geojson.js similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/geojson.js rename to x-pack/test/functional/apps/maps/group4/file_upload/geojson.js diff --git a/x-pack/test/functional/apps/maps/file_upload/index.js b/x-pack/test/functional/apps/maps/group4/file_upload/index.js similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/index.js rename to x-pack/test/functional/apps/maps/group4/file_upload/index.js diff --git a/x-pack/test/functional/apps/maps/file_upload/shapefile.js b/x-pack/test/functional/apps/maps/group4/file_upload/shapefile.js similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/shapefile.js rename to x-pack/test/functional/apps/maps/group4/file_upload/shapefile.js diff --git a/x-pack/test/functional/apps/maps/file_upload/wizard.js b/x-pack/test/functional/apps/maps/group4/file_upload/wizard.js similarity index 100% rename from x-pack/test/functional/apps/maps/file_upload/wizard.js rename to x-pack/test/functional/apps/maps/group4/file_upload/wizard.js diff --git a/x-pack/test/functional/apps/maps/geofile_wizard_auto_open.ts b/x-pack/test/functional/apps/maps/group4/geofile_wizard_auto_open.ts similarity index 95% rename from x-pack/test/functional/apps/maps/geofile_wizard_auto_open.ts rename to x-pack/test/functional/apps/maps/group4/geofile_wizard_auto_open.ts index dd69cc7882fc7..ebe434b6afe6e 100644 --- a/x-pack/test/functional/apps/maps/geofile_wizard_auto_open.ts +++ b/x-pack/test/functional/apps/maps/group4/geofile_wizard_auto_open.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'maps']); diff --git a/x-pack/test/functional/apps/maps/index.js b/x-pack/test/functional/apps/maps/group4/index.js similarity index 57% rename from x-pack/test/functional/apps/maps/index.js rename to x-pack/test/functional/apps/maps/group4/index.js index 9d7e7a9cbddcc..70cb5ac660768 100644 --- a/x-pack/test/functional/apps/maps/index.js +++ b/x-pack/test/functional/apps/maps/group4/index.js @@ -58,46 +58,18 @@ export default function ({ loadTestFile, getService }) { ); }); - describe('', async function () { - this.tags('ciGroup9'); - loadTestFile(require.resolve('./documents_source')); - loadTestFile(require.resolve('./blended_vector_layer')); - loadTestFile(require.resolve('./vector_styling')); - loadTestFile(require.resolve('./saved_object_management')); - loadTestFile(require.resolve('./sample_data')); - loadTestFile(require.resolve('./auto_fit_to_bounds')); - loadTestFile(require.resolve('./layer_visibility')); - loadTestFile(require.resolve('./feature_controls/maps_security')); - loadTestFile(require.resolve('./feature_controls/maps_spaces')); - loadTestFile(require.resolve('./full_screen_mode')); - }); - - describe('', function () { - this.tags('ciGroup22'); - loadTestFile(require.resolve('./es_geo_grid_source')); - loadTestFile(require.resolve('./embeddable')); - }); - - describe('', function () { - this.tags('ciGroup2'); // same group used in x-pack/test/reporting_functional - loadTestFile(require.resolve('./reports')); - }); - - describe('', function () { - this.tags('ciGroup10'); - loadTestFile(require.resolve('./es_pew_pew_source')); - loadTestFile(require.resolve('./joins')); - loadTestFile(require.resolve('./mvt_joins')); - loadTestFile(require.resolve('./mapbox_styles')); - loadTestFile(require.resolve('./mvt_scaling')); - loadTestFile(require.resolve('./mvt_geotile_grid')); - loadTestFile(require.resolve('./add_layer_panel')); - loadTestFile(require.resolve('./file_upload')); - loadTestFile(require.resolve('./layer_errors')); - loadTestFile(require.resolve('./visualize_create_menu')); - loadTestFile(require.resolve('./discover')); - loadTestFile(require.resolve('./geofile_wizard_auto_open')); - loadTestFile(require.resolve('./lens')); - }); + loadTestFile(require.resolve('./es_pew_pew_source')); + loadTestFile(require.resolve('./joins')); + loadTestFile(require.resolve('./mvt_joins')); + loadTestFile(require.resolve('./mapbox_styles')); + loadTestFile(require.resolve('./mvt_scaling')); + loadTestFile(require.resolve('./mvt_geotile_grid')); + loadTestFile(require.resolve('./add_layer_panel')); + loadTestFile(require.resolve('./file_upload')); + loadTestFile(require.resolve('./layer_errors')); + loadTestFile(require.resolve('./visualize_create_menu')); + loadTestFile(require.resolve('./discover')); + loadTestFile(require.resolve('./geofile_wizard_auto_open')); + loadTestFile(require.resolve('./lens')); }); } diff --git a/x-pack/test/functional/apps/maps/joins.js b/x-pack/test/functional/apps/maps/group4/joins.js similarity index 100% rename from x-pack/test/functional/apps/maps/joins.js rename to x-pack/test/functional/apps/maps/group4/joins.js diff --git a/x-pack/test/functional/apps/maps/layer_errors.js b/x-pack/test/functional/apps/maps/group4/layer_errors.js similarity index 100% rename from x-pack/test/functional/apps/maps/layer_errors.js rename to x-pack/test/functional/apps/maps/group4/layer_errors.js diff --git a/x-pack/test/functional/apps/maps/lens/choropleth_chart.ts b/x-pack/test/functional/apps/maps/group4/lens/choropleth_chart.ts similarity index 97% rename from x-pack/test/functional/apps/maps/lens/choropleth_chart.ts rename to x-pack/test/functional/apps/maps/group4/lens/choropleth_chart.ts index 420f895fe6aa6..b026dd7444748 100644 --- a/x-pack/test/functional/apps/maps/lens/choropleth_chart.ts +++ b/x-pack/test/functional/apps/maps/group4/lens/choropleth_chart.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'maps']); diff --git a/x-pack/test/functional/apps/maps/lens/index.ts b/x-pack/test/functional/apps/maps/group4/lens/index.ts similarity index 85% rename from x-pack/test/functional/apps/maps/lens/index.ts rename to x-pack/test/functional/apps/maps/group4/lens/index.ts index 78086303166a1..484faf431be75 100644 --- a/x-pack/test/functional/apps/maps/lens/index.ts +++ b/x-pack/test/functional/apps/maps/group4/lens/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('lens', function () { diff --git a/x-pack/test/functional/apps/maps/mapbox_styles.js b/x-pack/test/functional/apps/maps/group4/mapbox_styles.js similarity index 100% rename from x-pack/test/functional/apps/maps/mapbox_styles.js rename to x-pack/test/functional/apps/maps/group4/mapbox_styles.js diff --git a/x-pack/test/functional/apps/maps/mvt_geotile_grid.js b/x-pack/test/functional/apps/maps/group4/mvt_geotile_grid.js similarity index 100% rename from x-pack/test/functional/apps/maps/mvt_geotile_grid.js rename to x-pack/test/functional/apps/maps/group4/mvt_geotile_grid.js diff --git a/x-pack/test/functional/apps/maps/mvt_joins.ts b/x-pack/test/functional/apps/maps/group4/mvt_joins.ts similarity index 98% rename from x-pack/test/functional/apps/maps/mvt_joins.ts rename to x-pack/test/functional/apps/maps/group4/mvt_joins.ts index 2ae8f7ea5943b..c6567c84b2165 100644 --- a/x-pack/test/functional/apps/maps/mvt_joins.ts +++ b/x-pack/test/functional/apps/maps/group4/mvt_joins.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const PageObjects = getPageObjects(['maps']); diff --git a/x-pack/test/functional/apps/maps/mvt_scaling.js b/x-pack/test/functional/apps/maps/group4/mvt_scaling.js similarity index 100% rename from x-pack/test/functional/apps/maps/mvt_scaling.js rename to x-pack/test/functional/apps/maps/group4/mvt_scaling.js diff --git a/x-pack/test/functional/apps/maps/visualize_create_menu.js b/x-pack/test/functional/apps/maps/group4/visualize_create_menu.js similarity index 100% rename from x-pack/test/functional/apps/maps/visualize_create_menu.js rename to x-pack/test/functional/apps/maps/group4/visualize_create_menu.js diff --git a/x-pack/test/functional/apps/ml/README.md b/x-pack/test/functional/apps/ml/README.md new file mode 100644 index 0000000000000..5e87a8b210bdd --- /dev/null +++ b/x-pack/test/functional/apps/ml/README.md @@ -0,0 +1,7 @@ +# What are all these groups? + +These tests take a while so they have been broken up into groups with their own `config.ts` and `index.ts` file, causing each of these groups to be independent bundles of tests which can be run on some worker in CI without taking an incredible amount of time. + +Want to change the groups to something more logical? Have fun! Just make sure that each group executes on CI in less than 10 minutes or so. We don't currently have any mechanism for validating this right now, you just need to look at the times in the log output on CI, but we'll be working on tooling for making this information more accessible soon. + +- Kibana Operations \ No newline at end of file diff --git a/x-pack/test/functional/apps/ml/data_visualizer/config.ts b/x-pack/test/functional/apps/ml/data_visualizer/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/ml/data_visualizer/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} 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 f5610e8b607da..ef15775f86204 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 @@ -5,8 +5,6 @@ * 2.0. */ -import path from 'path'; - import { ML_JOB_FIELD_TYPES } from '@kbn/ml-plugin/common/constants/field_types'; import { FtrProviderContext } from '../../../ftr_provider_context'; @@ -16,7 +14,7 @@ export default function ({ getService }: FtrProviderContext) { const testDataListPositive = [ { suiteSuffix: 'with an artificial server log', - filePath: path.join(__dirname, 'files_to_import', 'artificial_server_log'), + filePath: require.resolve('./files_to_import/artificial_server_log'), indexName: 'user-import_1', createIndexPattern: false, fieldTypeFilters: [ML_JOB_FIELD_TYPES.NUMBER, ML_JOB_FIELD_TYPES.DATE], @@ -116,7 +114,7 @@ export default function ({ getService }: FtrProviderContext) { }, { suiteSuffix: 'with a file containing geo field', - filePath: path.join(__dirname, 'files_to_import', 'geo_file.csv'), + filePath: require.resolve('./files_to_import/geo_file.csv'), indexName: 'user-import_2', createIndexPattern: false, fieldTypeFilters: [ML_JOB_FIELD_TYPES.GEO_POINT], @@ -158,7 +156,7 @@ export default function ({ getService }: FtrProviderContext) { }, { 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'), + filePath: require.resolve('./files_to_import/missing_end_of_file_newline.csv'), indexName: 'user-import_3', createIndexPattern: false, fieldTypeFilters: [], @@ -205,7 +203,7 @@ export default function ({ getService }: FtrProviderContext) { const testDataListNegative = [ { suiteSuffix: 'with a non-log file', - filePath: path.join(__dirname, 'files_to_import', 'not_a_log_file'), + filePath: require.resolve('./files_to_import/not_a_log_file'), }, ]; diff --git a/x-pack/test/functional/apps/ml/data_visualizer/index.ts b/x-pack/test/functional/apps/ml/data_visualizer/index.ts index 3bb8e3d728318..973ebf2bbe3ab 100644 --- a/x-pack/test/functional/apps/ml/data_visualizer/index.ts +++ b/x-pack/test/functional/apps/ml/data_visualizer/index.ts @@ -7,10 +7,38 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; -export default function ({ loadTestFile }: FtrProviderContext) { - describe('data visualizer', function () { +export default function ({ getService, loadTestFile }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + const ml = getService('ml'); + + describe('machine learning - data visualizer', function () { this.tags(['skipFirefox', 'mlqa']); + before(async () => { + await ml.securityCommon.createMlRoles(); + await ml.securityCommon.createMlUsers(); + }); + + after(async () => { + // NOTE: Logout needs to happen before anything else to avoid flaky behavior + await ml.securityUI.logout(); + + await ml.securityCommon.cleanMlUsers(); + await ml.securityCommon.cleanMlRoles(); + + await esArchiver.unload('x-pack/test/functional/es_archives/ml/farequote'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/farequote_small'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/ecommerce'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/categorization_small'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/event_rate_nanos'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/bm_classification'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/ihp_outlier'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/egs_regression'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/module_sample_ecommerce'); + + await ml.testResources.resetKibanaTimeZone(); + }); + loadTestFile(require.resolve('./index_data_visualizer')); loadTestFile(require.resolve('./index_data_visualizer_grid_in_discover')); loadTestFile(require.resolve('./index_data_visualizer_grid_in_dashboard')); diff --git a/x-pack/test/functional/apps/ml/group1/config.ts b/x-pack/test/functional/apps/ml/group1/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/ml/group1/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/classification_creation.ts similarity index 98% rename from x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/classification_creation.ts index 2ba4ac6f08350..0cf7c4177f057 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/classification_creation.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { AnalyticsTableRowDetails } from '../../../services/ml/data_frame_analytics_table'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { AnalyticsTableRowDetails } from '../../../../services/ml/data_frame_analytics_table'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation_saved_search.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/classification_creation_saved_search.ts similarity index 98% rename from x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation_saved_search.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/classification_creation_saved_search.ts index 67550ae17a4b0..cfba10c25b17b 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation_saved_search.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/classification_creation_saved_search.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { AnalyticsTableRowDetails } from '../../../services/ml/data_frame_analytics_table'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { AnalyticsTableRowDetails } from '../../../../services/ml/data_frame_analytics_table'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/cloning.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/cloning.ts similarity index 99% rename from x-pack/test/functional/apps/ml/data_frame_analytics/cloning.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/cloning.ts index 3a33c95edba42..82f76e66b4ebd 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/cloning.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/cloning.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import { DeepPartial } from '@kbn/ml-plugin/common/types/common'; import { DataFrameAnalyticsConfig } from '@kbn/ml-plugin/public/application/data_frame_analytics/common'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/index.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/index.ts similarity index 93% rename from x-pack/test/functional/apps/ml/data_frame_analytics/index.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/index.ts index bc11a44148546..cf9bd17f11b81 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/index.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('data frame analytics', function () { diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/outlier_detection_creation.ts similarity index 97% rename from x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/outlier_detection_creation.ts index 1dacd8a7e80b4..e9146ce548422 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/outlier_detection_creation.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; -import { AnalyticsTableRowDetails } from '../../../services/ml/data_frame_analytics_table'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; +import { AnalyticsTableRowDetails } from '../../../../services/ml/data_frame_analytics_table'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); @@ -160,12 +160,10 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('displays the source data preview'); await ml.dataFrameAnalyticsCreation.assertSourceDataPreviewExists(); - - await ml.testExecution.logTestStep('enables the source data preview histogram charts'); - await ml.dataFrameAnalyticsCreation.enableSourceDataPreviewHistogramCharts(true); + await ml.dataFrameAnalyticsCreation.assertSourceDataPreviewHistogramChartEnabled(true); await ml.testExecution.logTestStep('displays the source data preview histogram charts'); - await ml.dataFrameAnalyticsCreation.assertSourceDataPreviewHistogramCharts( + await ml.dataFrameAnalyticsCreation.enableAndAssertSourceDataPreviewHistogramCharts( testData.expected.histogramCharts ); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation_saved_search.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/outlier_detection_creation_saved_search.ts similarity index 97% rename from x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation_saved_search.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/outlier_detection_creation_saved_search.ts index 861be18591a11..1e428531e6aa9 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation_saved_search.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/outlier_detection_creation_saved_search.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { AnalyticsTableRowDetails } from '../../../services/ml/data_frame_analytics_table'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { AnalyticsTableRowDetails } from '../../../../services/ml/data_frame_analytics_table'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); @@ -217,12 +217,10 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('displays the source data preview'); await ml.dataFrameAnalyticsCreation.assertSourceDataPreviewExists(); - - await ml.testExecution.logTestStep('enables the source data preview histogram charts'); - await ml.dataFrameAnalyticsCreation.enableSourceDataPreviewHistogramCharts(true); + await ml.dataFrameAnalyticsCreation.assertSourceDataPreviewHistogramChartEnabled(true); await ml.testExecution.logTestStep('displays the source data preview histogram charts'); - await ml.dataFrameAnalyticsCreation.assertSourceDataPreviewHistogramCharts( + await ml.dataFrameAnalyticsCreation.enableAndAssertSourceDataPreviewHistogramCharts( testData.expected.histogramCharts ); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/regression_creation.ts similarity index 98% rename from x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/regression_creation.ts index 7a84c41aa4a66..a0cbd123b5169 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/regression_creation.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; -import { AnalyticsTableRowDetails } from '../../../services/ml/data_frame_analytics_table'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; +import { AnalyticsTableRowDetails } from '../../../../services/ml/data_frame_analytics_table'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation_saved_search.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/regression_creation_saved_search.ts similarity index 98% rename from x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation_saved_search.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/regression_creation_saved_search.ts index e22c4908486d1..6b09b35c610a0 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation_saved_search.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/regression_creation_saved_search.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { AnalyticsTableRowDetails } from '../../../services/ml/data_frame_analytics_table'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { AnalyticsTableRowDetails } from '../../../../services/ml/data_frame_analytics_table'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/results_view_content.ts b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/results_view_content.ts similarity index 99% rename from x-pack/test/functional/apps/ml/data_frame_analytics/results_view_content.ts rename to x-pack/test/functional/apps/ml/group1/data_frame_analytics/results_view_content.ts index 2bddf0a7d9512..8d04c4897dab0 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/results_view_content.ts +++ b/x-pack/test/functional/apps/ml/group1/data_frame_analytics/results_view_content.ts @@ -8,7 +8,7 @@ import { DeepPartial } from '@kbn/ml-plugin/common/types/common'; import { DataFrameAnalyticsConfig } from '@kbn/ml-plugin/public/application/data_frame_analytics/common'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/index.ts b/x-pack/test/functional/apps/ml/group1/index.ts similarity index 64% rename from x-pack/test/functional/apps/ml/index.ts rename to x-pack/test/functional/apps/ml/group1/index.ts index c58b20e1c374b..7129f3e24d4f1 100644 --- a/x-pack/test/functional/apps/ml/index.ts +++ b/x-pack/test/functional/apps/ml/group1/index.ts @@ -5,13 +5,13 @@ * 2.0. */ -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, loadTestFile }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); - describe('machine learning', function () { + describe('machine learning - group 2', () => { before(async () => { await ml.securityCommon.createMlRoles(); await ml.securityCommon.createMlUsers(); @@ -37,26 +37,9 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { await ml.testResources.resetKibanaTimeZone(); }); - describe('', function () { - this.tags('ciGroup15'); - loadTestFile(require.resolve('./permissions')); - loadTestFile(require.resolve('./pages')); - loadTestFile(require.resolve('./data_visualizer')); - loadTestFile(require.resolve('./data_frame_analytics')); - loadTestFile(require.resolve('./model_management')); - }); - - describe('', function () { - this.tags('ciGroup26'); - loadTestFile(require.resolve('./anomaly_detection')); - }); - - describe('', function () { - this.tags('ciGroup8'); - loadTestFile(require.resolve('./feature_controls')); - loadTestFile(require.resolve('./settings')); - loadTestFile(require.resolve('./embeddables')); - loadTestFile(require.resolve('./stack_management_jobs')); - }); + loadTestFile(require.resolve('./permissions')); + loadTestFile(require.resolve('./pages')); + loadTestFile(require.resolve('./data_frame_analytics')); + loadTestFile(require.resolve('./model_management')); }); } diff --git a/x-pack/test/functional/apps/ml/model_management/index.ts b/x-pack/test/functional/apps/ml/group1/model_management/index.ts similarity index 86% rename from x-pack/test/functional/apps/ml/model_management/index.ts rename to x-pack/test/functional/apps/ml/group1/model_management/index.ts index e958392d9ba74..5595486260dee 100644 --- a/x-pack/test/functional/apps/ml/model_management/index.ts +++ b/x-pack/test/functional/apps/ml/group1/model_management/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('model management', function () { diff --git a/x-pack/test/functional/apps/ml/model_management/model_list.ts b/x-pack/test/functional/apps/ml/group1/model_management/model_list.ts similarity index 99% rename from x-pack/test/functional/apps/ml/model_management/model_list.ts rename to x-pack/test/functional/apps/ml/group1/model_management/model_list.ts index 08fb3b7124aec..ca360130b89f9 100644 --- a/x-pack/test/functional/apps/ml/model_management/model_list.ts +++ b/x-pack/test/functional/apps/ml/group1/model_management/model_list.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const ml = getService('ml'); diff --git a/x-pack/test/functional/apps/ml/pages.ts b/x-pack/test/functional/apps/ml/group1/pages.ts similarity index 94% rename from x-pack/test/functional/apps/ml/pages.ts rename to x-pack/test/functional/apps/ml/group1/pages.ts index 6c8687d213cee..2cc271e67194e 100644 --- a/x-pack/test/functional/apps/ml/pages.ts +++ b/x-pack/test/functional/apps/ml/group1/pages.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const ml = getService('ml'); @@ -21,7 +21,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('loads the ML home page'); await ml.navigation.navigateToMl(); - await ml.testExecution.logTestStep('loads the overview page'); + await ml.testExecution.logTestStep('loads the overview page'); await ml.navigation.navigateToOverview(); await ml.testExecution.logTestStep('loads the anomaly detection area'); diff --git a/x-pack/test/functional/apps/ml/permissions/full_ml_access.ts b/x-pack/test/functional/apps/ml/group1/permissions/full_ml_access.ts similarity index 98% rename from x-pack/test/functional/apps/ml/permissions/full_ml_access.ts rename to x-pack/test/functional/apps/ml/group1/permissions/full_ml_access.ts index 467bfc370e8e2..c632ae48b3f88 100644 --- a/x-pack/test/functional/apps/ml/permissions/full_ml_access.ts +++ b/x-pack/test/functional/apps/ml/group1/permissions/full_ml_access.ts @@ -5,11 +5,9 @@ * 2.0. */ -import path from 'path'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; -import { FtrProviderContext } from '../../../ftr_provider_context'; - -import { USER } from '../../../services/ml/security_common'; +import { USER } from '../../../../services/ml/security_common'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); @@ -123,12 +121,8 @@ export default function ({ getService }: FtrProviderContext) { const ecIndexPattern = 'ft_module_sample_ecommerce'; const ecExpectedTotalCount = '287'; - const uploadFilePath = path.join( - __dirname, - '..', - 'data_visualizer', - 'files_to_import', - 'artificial_server_log' + const uploadFilePath = require.resolve( + '../../data_visualizer/files_to_import/artificial_server_log' ); const expectedUploadFileTitle = 'artificial_server_log'; diff --git a/x-pack/test/functional/apps/ml/permissions/index.ts b/x-pack/test/functional/apps/ml/group1/permissions/index.ts similarity index 88% rename from x-pack/test/functional/apps/ml/permissions/index.ts rename to x-pack/test/functional/apps/ml/group1/permissions/index.ts index e777f241eaf85..23d7d6fe9e2b5 100644 --- a/x-pack/test/functional/apps/ml/permissions/index.ts +++ b/x-pack/test/functional/apps/ml/group1/permissions/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('permissions', function () { diff --git a/x-pack/test/functional/apps/ml/permissions/no_ml_access.ts b/x-pack/test/functional/apps/ml/group1/permissions/no_ml_access.ts similarity index 93% rename from x-pack/test/functional/apps/ml/permissions/no_ml_access.ts rename to x-pack/test/functional/apps/ml/group1/permissions/no_ml_access.ts index 6132e6e63b1b0..4a1c108b2fa5a 100644 --- a/x-pack/test/functional/apps/ml/permissions/no_ml_access.ts +++ b/x-pack/test/functional/apps/ml/group1/permissions/no_ml_access.ts @@ -5,9 +5,9 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; -import { USER } from '../../../services/ml/security_common'; +import { USER } from '../../../../services/ml/security_common'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'error']); diff --git a/x-pack/test/functional/apps/ml/permissions/read_ml_access.ts b/x-pack/test/functional/apps/ml/group1/permissions/read_ml_access.ts similarity index 98% rename from x-pack/test/functional/apps/ml/permissions/read_ml_access.ts rename to x-pack/test/functional/apps/ml/group1/permissions/read_ml_access.ts index fd9cb2cb4c79e..a18a6075055a6 100644 --- a/x-pack/test/functional/apps/ml/permissions/read_ml_access.ts +++ b/x-pack/test/functional/apps/ml/group1/permissions/read_ml_access.ts @@ -5,11 +5,9 @@ * 2.0. */ -import path from 'path'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; -import { FtrProviderContext } from '../../../ftr_provider_context'; - -import { USER } from '../../../services/ml/security_common'; +import { USER } from '../../../../services/ml/security_common'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); @@ -117,12 +115,8 @@ export default function ({ getService }: FtrProviderContext) { const ecIndexPattern = 'ft_module_sample_ecommerce'; const ecExpectedTotalCount = '287'; - const uploadFilePath = path.join( - __dirname, - '..', - 'data_visualizer', - 'files_to_import', - 'artificial_server_log' + const uploadFilePath = require.resolve( + '../../data_visualizer/files_to_import/artificial_server_log' ); const expectedUploadFileTitle = 'artificial_server_log'; diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/advanced_job.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/advanced_job.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/advanced_job.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/advanced_job.ts index 1fc4c87619f18..ba0d030cfcf6f 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/advanced_job.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/advanced_job.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; interface Detector { identifier: string; diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/aggregated_scripted_job.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/aggregated_scripted_job.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/aggregated_scripted_job.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/aggregated_scripted_job.ts index c47171c1cd75a..78974ecf1e64c 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/aggregated_scripted_job.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/aggregated_scripted_job.ts @@ -6,7 +6,7 @@ */ import { Datafeed, Job } from '@kbn/ml-plugin/common/types/anomaly_detection_jobs'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/annotations.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/annotations.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/annotations.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/annotations.ts index 3b36701e651a7..17c576281835a 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/annotations.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/annotations.ts @@ -6,7 +6,7 @@ */ import { Annotation } from '@kbn/ml-plugin/common/types/annotations'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/anomaly_explorer.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/anomaly_explorer.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/anomaly_explorer.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/anomaly_explorer.ts index bf6fcd10a9152..c71f4a5789fd2 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/anomaly_explorer.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/anomaly_explorer.ts @@ -6,7 +6,7 @@ */ import { Job, Datafeed } from '@kbn/ml-plugin/common/types/anomaly_detection_jobs'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; // @ts-expect-error not full interface const JOB_CONFIG: Job = { diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/categorization_job.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/categorization_job.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/categorization_job.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/categorization_job.ts index 555040ef8e59e..96c02f7827a58 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/categorization_job.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/categorization_job.ts @@ -6,7 +6,7 @@ */ import { CATEGORY_EXAMPLES_VALIDATION_STATUS } from '@kbn/ml-plugin/common/constants/categorization_job'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/custom_urls.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/custom_urls.ts similarity index 98% rename from x-pack/test/functional/apps/ml/anomaly_detection/custom_urls.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/custom_urls.ts index a83f5d814c028..1e6e020aff69c 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/custom_urls.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/custom_urls.ts @@ -7,12 +7,12 @@ import { Job, Datafeed } from '@kbn/ml-plugin/common/types/anomaly_detection_jobs'; import { TIME_RANGE_TYPE } from '@kbn/ml-plugin/public/application/jobs/components/custom_url_editor/constants'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; import type { DiscoverUrlConfig, DashboardUrlConfig, OtherUrlConfig, -} from '../../../services/ml/job_table'; +} from '../../../../services/ml/job_table'; // @ts-expect-error doesn't implement the full interface const JOB_CONFIG: Job = { diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/date_nanos_job.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/date_nanos_job.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/date_nanos_job.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/date_nanos_job.ts index 0401d13780403..4b593aacbebf1 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/date_nanos_job.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/date_nanos_job.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; interface Detector { identifier: string; diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/forecasts.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/forecasts.ts similarity index 98% rename from x-pack/test/functional/apps/ml/anomaly_detection/forecasts.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/forecasts.ts index 964e0762d9322..b290789419ed8 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/forecasts.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/forecasts.ts @@ -6,7 +6,7 @@ */ import { Job, Datafeed } from '@kbn/ml-plugin/common/types/anomaly_detection_jobs'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; // @ts-expect-error not full interface const JOB_CONFIG: Job = { diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/index.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/index.ts similarity index 94% rename from x-pack/test/functional/apps/ml/anomaly_detection/index.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/index.ts index ed5f618f86644..a1127c0e71c77 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/index.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('anomaly detection', function () { diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/multi_metric_job.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/multi_metric_job.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/multi_metric_job.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/multi_metric_job.ts index 4786f51bdc414..783312b0d8608 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/multi_metric_job.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/multi_metric_job.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/population_job.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/population_job.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/population_job.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/population_job.ts index f522f5ebefd9a..af2573e21f93d 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/population_job.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/population_job.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/saved_search_job.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/saved_search_job.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/saved_search_job.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/saved_search_job.ts index f314052035ff1..72dbac602cf8f 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/saved_search_job.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/saved_search_job.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/single_metric_job.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_job.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/single_metric_job.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_job.ts index 8ec2e4a48e228..e698dd270e1a8 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/single_metric_job.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_job.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/single_metric_job_without_datafeed_start.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_job_without_datafeed_start.ts similarity index 98% rename from x-pack/test/functional/apps/ml/anomaly_detection/single_metric_job_without_datafeed_start.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_job_without_datafeed_start.ts index 8d08fb84a8f55..2afa284fcc3d7 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/single_metric_job_without_datafeed_start.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_job_without_datafeed_start.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/single_metric_viewer.ts b/x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_viewer.ts similarity index 99% rename from x-pack/test/functional/apps/ml/anomaly_detection/single_metric_viewer.ts rename to x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_viewer.ts index c0946713a2564..b970a0efe5602 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/single_metric_viewer.ts +++ b/x-pack/test/functional/apps/ml/group2/anomaly_detection/single_metric_viewer.ts @@ -6,7 +6,7 @@ */ import { Job, Datafeed } from '@kbn/ml-plugin/common/types/anomaly_detection_jobs'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; // @ts-expect-error not full interface const JOB_CONFIG: Job = { diff --git a/x-pack/test/functional/apps/ml/group2/config.ts b/x-pack/test/functional/apps/ml/group2/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/ml/group2/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/ml/group2/index.ts b/x-pack/test/functional/apps/ml/group2/index.ts new file mode 100644 index 0000000000000..4515715327e05 --- /dev/null +++ b/x-pack/test/functional/apps/ml/group2/index.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 { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getService, loadTestFile }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + const ml = getService('ml'); + + describe('machine learning - group 2', () => { + before(async () => { + await ml.securityCommon.createMlRoles(); + await ml.securityCommon.createMlUsers(); + }); + + after(async () => { + // NOTE: Logout needs to happen before anything else to avoid flaky behavior + await ml.securityUI.logout(); + + await ml.securityCommon.cleanMlUsers(); + await ml.securityCommon.cleanMlRoles(); + + await esArchiver.unload('x-pack/test/functional/es_archives/ml/farequote'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/farequote_small'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/ecommerce'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/categorization_small'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/event_rate_nanos'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/bm_classification'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/ihp_outlier'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/egs_regression'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/module_sample_ecommerce'); + + await ml.testResources.resetKibanaTimeZone(); + }); + + loadTestFile(require.resolve('./anomaly_detection')); + }); +} diff --git a/x-pack/test/functional/apps/ml/group3/config.ts b/x-pack/test/functional/apps/ml/group3/config.ts new file mode 100644 index 0000000000000..d927f93adeffd --- /dev/null +++ b/x-pack/test/functional/apps/ml/group3/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/ml/embeddables/anomaly_charts_dashboard_embeddables.ts b/x-pack/test/functional/apps/ml/group3/embeddables/anomaly_charts_dashboard_embeddables.ts similarity index 98% rename from x-pack/test/functional/apps/ml/embeddables/anomaly_charts_dashboard_embeddables.ts rename to x-pack/test/functional/apps/ml/group3/embeddables/anomaly_charts_dashboard_embeddables.ts index 89b733c21498f..68981de99fc9a 100644 --- a/x-pack/test/functional/apps/ml/embeddables/anomaly_charts_dashboard_embeddables.ts +++ b/x-pack/test/functional/apps/ml/group3/embeddables/anomaly_charts_dashboard_embeddables.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; import { JOB_CONFIG, DATAFEED_CONFIG, ML_EMBEDDABLE_TYPES } from './constants'; const testDataList = [ diff --git a/x-pack/test/functional/apps/ml/embeddables/anomaly_embeddables_migration.ts b/x-pack/test/functional/apps/ml/group3/embeddables/anomaly_embeddables_migration.ts similarity index 98% rename from x-pack/test/functional/apps/ml/embeddables/anomaly_embeddables_migration.ts rename to x-pack/test/functional/apps/ml/group3/embeddables/anomaly_embeddables_migration.ts index ed38ff7021a92..a4c50549f5aed 100644 --- a/x-pack/test/functional/apps/ml/embeddables/anomaly_embeddables_migration.ts +++ b/x-pack/test/functional/apps/ml/group3/embeddables/anomaly_embeddables_migration.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; import { JOB_CONFIG, DATAFEED_CONFIG, ML_EMBEDDABLE_TYPES } from './constants'; const testDataList = [ diff --git a/x-pack/test/functional/apps/ml/embeddables/constants.ts b/x-pack/test/functional/apps/ml/group3/embeddables/constants.ts similarity index 100% rename from x-pack/test/functional/apps/ml/embeddables/constants.ts rename to x-pack/test/functional/apps/ml/group3/embeddables/constants.ts diff --git a/x-pack/test/functional/apps/ml/embeddables/index.ts b/x-pack/test/functional/apps/ml/group3/embeddables/index.ts similarity index 88% rename from x-pack/test/functional/apps/ml/embeddables/index.ts rename to x-pack/test/functional/apps/ml/group3/embeddables/index.ts index 31074a59866a6..d786491e55a4e 100644 --- a/x-pack/test/functional/apps/ml/embeddables/index.ts +++ b/x-pack/test/functional/apps/ml/group3/embeddables/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('embeddables', function () { diff --git a/x-pack/test/functional/apps/ml/feature_controls/index.ts b/x-pack/test/functional/apps/ml/group3/feature_controls/index.ts similarity index 87% rename from x-pack/test/functional/apps/ml/feature_controls/index.ts rename to x-pack/test/functional/apps/ml/group3/feature_controls/index.ts index ffe419b506fd6..ab0988c424761 100644 --- a/x-pack/test/functional/apps/ml/feature_controls/index.ts +++ b/x-pack/test/functional/apps/ml/group3/feature_controls/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('feature controls', function () { diff --git a/x-pack/test/functional/apps/ml/feature_controls/ml_security.ts b/x-pack/test/functional/apps/ml/group3/feature_controls/ml_security.ts similarity index 98% rename from x-pack/test/functional/apps/ml/feature_controls/ml_security.ts rename to x-pack/test/functional/apps/ml/group3/feature_controls/ml_security.ts index 58af3abbf6a47..fd498f00a8262 100644 --- a/x-pack/test/functional/apps/ml/feature_controls/ml_security.ts +++ b/x-pack/test/functional/apps/ml/group3/feature_controls/ml_security.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const security = getService('security'); diff --git a/x-pack/test/functional/apps/ml/feature_controls/ml_spaces.ts b/x-pack/test/functional/apps/ml/group3/feature_controls/ml_spaces.ts similarity index 97% rename from x-pack/test/functional/apps/ml/feature_controls/ml_spaces.ts rename to x-pack/test/functional/apps/ml/group3/feature_controls/ml_spaces.ts index 1ea0e1e717e5f..0352a0059ba55 100644 --- a/x-pack/test/functional/apps/ml/feature_controls/ml_spaces.ts +++ b/x-pack/test/functional/apps/ml/group3/feature_controls/ml_spaces.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const spacesService = getService('spaces'); diff --git a/x-pack/test/functional/apps/ml/group3/index.ts b/x-pack/test/functional/apps/ml/group3/index.ts new file mode 100644 index 0000000000000..e85b95b274720 --- /dev/null +++ b/x-pack/test/functional/apps/ml/group3/index.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 { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getService, loadTestFile }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + const ml = getService('ml'); + + describe('machine learning - group 3', function () { + before(async () => { + await ml.securityCommon.createMlRoles(); + await ml.securityCommon.createMlUsers(); + }); + + after(async () => { + // NOTE: Logout needs to happen before anything else to avoid flaky behavior + await ml.securityUI.logout(); + + await ml.securityCommon.cleanMlUsers(); + await ml.securityCommon.cleanMlRoles(); + + await esArchiver.unload('x-pack/test/functional/es_archives/ml/farequote'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/farequote_small'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/ecommerce'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/categorization_small'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/event_rate_nanos'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/bm_classification'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/ihp_outlier'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/egs_regression'); + await esArchiver.unload('x-pack/test/functional/es_archives/ml/module_sample_ecommerce'); + + await ml.testResources.resetKibanaTimeZone(); + }); + + loadTestFile(require.resolve('./feature_controls')); + loadTestFile(require.resolve('./settings')); + loadTestFile(require.resolve('./embeddables')); + loadTestFile(require.resolve('./stack_management_jobs')); + }); +} diff --git a/x-pack/test/functional/apps/ml/settings/calendar_creation.ts b/x-pack/test/functional/apps/ml/group3/settings/calendar_creation.ts similarity index 98% rename from x-pack/test/functional/apps/ml/settings/calendar_creation.ts rename to x-pack/test/functional/apps/ml/group3/settings/calendar_creation.ts index f0f5cd71cafe7..91121528d477a 100644 --- a/x-pack/test/functional/apps/ml/settings/calendar_creation.ts +++ b/x-pack/test/functional/apps/ml/group3/settings/calendar_creation.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; import { asyncForEach, createJobConfig } from './common'; export default function ({ getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/apps/ml/settings/calendar_delete.ts b/x-pack/test/functional/apps/ml/group3/settings/calendar_delete.ts similarity index 96% rename from x-pack/test/functional/apps/ml/settings/calendar_delete.ts rename to x-pack/test/functional/apps/ml/group3/settings/calendar_delete.ts index ff417a32c1d7c..28b526147c96e 100644 --- a/x-pack/test/functional/apps/ml/settings/calendar_delete.ts +++ b/x-pack/test/functional/apps/ml/group3/settings/calendar_delete.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; import { asyncForEach } from './common'; export default function ({ getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/apps/ml/settings/calendar_edit.ts b/x-pack/test/functional/apps/ml/group3/settings/calendar_edit.ts similarity index 98% rename from x-pack/test/functional/apps/ml/settings/calendar_edit.ts rename to x-pack/test/functional/apps/ml/group3/settings/calendar_edit.ts index 70c3e50ec309b..9f68ccc8a1196 100644 --- a/x-pack/test/functional/apps/ml/settings/calendar_edit.ts +++ b/x-pack/test/functional/apps/ml/group3/settings/calendar_edit.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; import { asyncForEach, createJobConfig } from './common'; export default function ({ getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/apps/ml/settings/common.ts b/x-pack/test/functional/apps/ml/group3/settings/common.ts similarity index 89% rename from x-pack/test/functional/apps/ml/settings/common.ts rename to x-pack/test/functional/apps/ml/group3/settings/common.ts index f161ae637e3ad..77d798ecf241b 100644 --- a/x-pack/test/functional/apps/ml/settings/common.ts +++ b/x-pack/test/functional/apps/ml/group3/settings/common.ts @@ -5,7 +5,10 @@ * 2.0. */ -export async function asyncForEach(array: T[], callback: (item: T, index: number) => void) { +export async function asyncForEach( + array: T[], + callback: (item: T, index: number) => Promise +) { for (let index = 0; index < array.length; index++) { await callback(array[index], index); } diff --git a/x-pack/test/functional/apps/ml/settings/filter_list_creation.ts b/x-pack/test/functional/apps/ml/group3/settings/filter_list_creation.ts similarity index 96% rename from x-pack/test/functional/apps/ml/settings/filter_list_creation.ts rename to x-pack/test/functional/apps/ml/group3/settings/filter_list_creation.ts index 3938b73a131f4..38ee8a3e6e4c2 100644 --- a/x-pack/test/functional/apps/ml/settings/filter_list_creation.ts +++ b/x-pack/test/functional/apps/ml/group3/settings/filter_list_creation.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const ml = getService('ml'); diff --git a/x-pack/test/functional/apps/ml/settings/filter_list_delete.ts b/x-pack/test/functional/apps/ml/group3/settings/filter_list_delete.ts similarity index 96% rename from x-pack/test/functional/apps/ml/settings/filter_list_delete.ts rename to x-pack/test/functional/apps/ml/group3/settings/filter_list_delete.ts index aad56ffe55606..cdbf26ea12a03 100644 --- a/x-pack/test/functional/apps/ml/settings/filter_list_delete.ts +++ b/x-pack/test/functional/apps/ml/group3/settings/filter_list_delete.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; import { asyncForEach } from './common'; export default function ({ getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/apps/ml/settings/filter_list_edit.ts b/x-pack/test/functional/apps/ml/group3/settings/filter_list_edit.ts similarity index 97% rename from x-pack/test/functional/apps/ml/settings/filter_list_edit.ts rename to x-pack/test/functional/apps/ml/group3/settings/filter_list_edit.ts index 7acd1b2bbc123..0a4c4f63ee741 100644 --- a/x-pack/test/functional/apps/ml/settings/filter_list_edit.ts +++ b/x-pack/test/functional/apps/ml/group3/settings/filter_list_edit.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; import { asyncForEach } from './common'; export default function ({ getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/apps/ml/settings/index.ts b/x-pack/test/functional/apps/ml/group3/settings/index.ts similarity index 91% rename from x-pack/test/functional/apps/ml/settings/index.ts rename to x-pack/test/functional/apps/ml/group3/settings/index.ts index e904eaedb8db0..9ac25b7fc9483 100644 --- a/x-pack/test/functional/apps/ml/settings/index.ts +++ b/x-pack/test/functional/apps/ml/group3/settings/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('settings', function () { diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/export_jobs.ts b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/export_jobs.ts similarity index 99% rename from x-pack/test/functional/apps/ml/stack_management_jobs/export_jobs.ts rename to x-pack/test/functional/apps/ml/group3/stack_management_jobs/export_jobs.ts index 85e249861378f..4ced89e35d608 100644 --- a/x-pack/test/functional/apps/ml/stack_management_jobs/export_jobs.ts +++ b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/export_jobs.ts @@ -7,7 +7,7 @@ import { Job, Datafeed } from '@kbn/ml-plugin/common/types/anomaly_detection_jobs'; import type { DataFrameAnalyticsConfig } from '@kbn/ml-plugin/public/application/data_frame_analytics/common'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; const testADJobs: Array<{ job: Job; datafeed: Datafeed }> = [ { diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/files_to_import/anomaly_detection_jobs_7.16.json b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/files_to_import/anomaly_detection_jobs_7.16.json similarity index 100% rename from x-pack/test/functional/apps/ml/stack_management_jobs/files_to_import/anomaly_detection_jobs_7.16.json rename to x-pack/test/functional/apps/ml/group3/stack_management_jobs/files_to_import/anomaly_detection_jobs_7.16.json diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/files_to_import/bad_data.json b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/files_to_import/bad_data.json similarity index 100% rename from x-pack/test/functional/apps/ml/stack_management_jobs/files_to_import/bad_data.json rename to x-pack/test/functional/apps/ml/group3/stack_management_jobs/files_to_import/bad_data.json diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/files_to_import/data_frame_analytics_jobs_7.16.json b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/files_to_import/data_frame_analytics_jobs_7.16.json similarity index 100% rename from x-pack/test/functional/apps/ml/stack_management_jobs/files_to_import/data_frame_analytics_jobs_7.16.json rename to x-pack/test/functional/apps/ml/group3/stack_management_jobs/files_to_import/data_frame_analytics_jobs_7.16.json diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/import_jobs.ts b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/import_jobs.ts similarity index 92% rename from x-pack/test/functional/apps/ml/stack_management_jobs/import_jobs.ts rename to x-pack/test/functional/apps/ml/group3/stack_management_jobs/import_jobs.ts index ef367797ef7e9..212bb029b6e0b 100644 --- a/x-pack/test/functional/apps/ml/stack_management_jobs/import_jobs.ts +++ b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/import_jobs.ts @@ -5,17 +5,15 @@ * 2.0. */ -import path from 'path'; - import { JobType } from '@kbn/ml-plugin/common/types/saved_objects'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); const testDataListPositive = [ { - filePath: path.join(__dirname, 'files_to_import', 'anomaly_detection_jobs_7.16.json'), + filePath: require.resolve('./files_to_import/anomaly_detection_jobs_7.16.json'), expected: { jobType: 'anomaly-detector' as JobType, jobIds: ['ad-test1', 'ad-test3'], @@ -23,7 +21,7 @@ export default function ({ getService }: FtrProviderContext) { }, }, { - filePath: path.join(__dirname, 'files_to_import', 'data_frame_analytics_jobs_7.16.json'), + filePath: require.resolve('./files_to_import/data_frame_analytics_jobs_7.16.json'), expected: { jobType: 'data-frame-analytics' as JobType, jobIds: ['dfa-test1'], @@ -107,7 +105,7 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('selects job import'); await ml.stackManagementJobs.openImportFlyout(); await ml.stackManagementJobs.selectFileToImport( - path.join(__dirname, 'files_to_import', 'bad_data.json'), + require.resolve('./files_to_import/bad_data.json'), true ); }); diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/index.ts b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/index.ts similarity index 89% rename from x-pack/test/functional/apps/ml/stack_management_jobs/index.ts rename to x-pack/test/functional/apps/ml/group3/stack_management_jobs/index.ts index c5e0728266bab..4c4bedfeb9b76 100644 --- a/x-pack/test/functional/apps/ml/stack_management_jobs/index.ts +++ b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('stack management jobs', function () { diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/manage_spaces.ts b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/manage_spaces.ts similarity index 99% rename from x-pack/test/functional/apps/ml/stack_management_jobs/manage_spaces.ts rename to x-pack/test/functional/apps/ml/group3/stack_management_jobs/manage_spaces.ts index 4841fca9d74f7..5563bb9043c7f 100644 --- a/x-pack/test/functional/apps/ml/stack_management_jobs/manage_spaces.ts +++ b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/manage_spaces.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const browser = getService('browser'); diff --git a/x-pack/test/functional/apps/ml/stack_management_jobs/synchronize.ts b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/synchronize.ts similarity index 98% rename from x-pack/test/functional/apps/ml/stack_management_jobs/synchronize.ts rename to x-pack/test/functional/apps/ml/group3/stack_management_jobs/synchronize.ts index cf22f29bc277f..e760549b7a151 100644 --- a/x-pack/test/functional/apps/ml/stack_management_jobs/synchronize.ts +++ b/x-pack/test/functional/apps/ml/group3/stack_management_jobs/synchronize.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); diff --git a/x-pack/test/functional/apps/monitoring/config.ts b/x-pack/test/functional/apps/monitoring/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/monitoring/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/monitoring/index.js b/x-pack/test/functional/apps/monitoring/index.js index b8f6f223092f6..cfa29d2f784e6 100644 --- a/x-pack/test/functional/apps/monitoring/index.js +++ b/x-pack/test/functional/apps/monitoring/index.js @@ -7,7 +7,6 @@ export default function ({ loadTestFile }) { describe('Monitoring app', function () { - this.tags('ciGroup28'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./cluster/list')); diff --git a/x-pack/test/functional/apps/remote_clusters/config.ts b/x-pack/test/functional/apps/remote_clusters/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/remote_clusters/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/remote_clusters/index.ts b/x-pack/test/functional/apps/remote_clusters/index.ts index a1cc660b6426a..74c4ce6e68bfc 100644 --- a/x-pack/test/functional/apps/remote_clusters/index.ts +++ b/x-pack/test/functional/apps/remote_clusters/index.ts @@ -12,7 +12,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; // https://www.elastic.co/guide/en/kibana/7.9/working-remote-clusters.html export default ({ loadTestFile }: FtrProviderContext) => { describe('Remote Clusters app', function () { - this.tags(['ciGroup4', 'skipCloud']); + this.tags('skipCloud'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./home_page')); }); diff --git a/x-pack/test/functional/apps/reporting/README.md b/x-pack/test/functional/apps/reporting/README.md index ec9bba8b88341..5d47804fef284 100644 --- a/x-pack/test/functional/apps/reporting/README.md +++ b/x-pack/test/functional/apps/reporting/README.md @@ -5,7 +5,7 @@ Functional tests on report generation are under the applications that use report **PDF/PNG Report testing:** - `x-pack/test/functional/apps/canvas/reports.ts` - `x-pack/test/functional/apps/dashboard/reporting/screenshots.ts` - - `x-pack/test/functional/apps/lens/lens_reporting.ts` + - `x-pack/test/functional/apps/lens/group3/lens_reporting.ts` - `x-pack/test/functional/apps/visualize/reporting.ts` **CSV Report testing:** diff --git a/x-pack/test/functional/apps/reporting_management/config.ts b/x-pack/test/functional/apps/reporting_management/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/reporting_management/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/reporting_management/index.js b/x-pack/test/functional/apps/reporting_management/index.js index 4e6abe85a4041..dcf5583eeb92a 100644 --- a/x-pack/test/functional/apps/reporting_management/index.js +++ b/x-pack/test/functional/apps/reporting_management/index.js @@ -7,7 +7,6 @@ export default ({ loadTestFile }) => { describe('reporting management app', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./report_listing')); }); }; diff --git a/x-pack/test/functional/apps/rollup_job/config.ts b/x-pack/test/functional/apps/rollup_job/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/rollup_job/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/rollup_job/index.js b/x-pack/test/functional/apps/rollup_job/index.js index 8fa9cd6f7aa72..943536539c5ad 100644 --- a/x-pack/test/functional/apps/rollup_job/index.js +++ b/x-pack/test/functional/apps/rollup_job/index.js @@ -7,8 +7,6 @@ export default function ({ loadTestFile }) { describe('rollup app', function () { - this.tags('ciGroup28'); - loadTestFile(require.resolve('./rollup_jobs')); loadTestFile(require.resolve('./hybrid_index_pattern')); loadTestFile(require.resolve('./tsvb')); diff --git a/x-pack/test/functional/apps/saved_objects_management/config.ts b/x-pack/test/functional/apps/saved_objects_management/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/saved_objects_management/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/saved_objects_management/exports/_7.13_import_saved_objects.ndjson b/x-pack/test/functional/apps/saved_objects_management/exports/_7.13_import_saved_objects.ndjson index 21be31349af0f..8f2aa535f305c 100644 --- a/x-pack/test/functional/apps/saved_objects_management/exports/_7.13_import_saved_objects.ndjson +++ b/x-pack/test/functional/apps/saved_objects_management/exports/_7.13_import_saved_objects.ndjson @@ -1,87 +1,83 @@ -{"attributes":{"accessCount":0,"accessDate":1621977234367,"createDate":1621977234367,"url":"/app/dashboards#/view/154944b0-6249-11eb-aebf-c306684b328d?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(description:%27%27,filters:!(),fullScreenMode:!f,options:(darkTheme:!f,hidePanelTitles:!f,useMargins:!t),panels:!((embeddableConfig:(enhancements:()),gridData:(h:15,i:%271%27,w:24,x:0,y:0),id:%2736b91810-6239-11eb-aebf-c306684b328d%27,panelIndex:%271%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:(),vis:!n),gridData:(h:15,i:%272%27,w:24,x:24,y:0),id:%270a274320-61cc-11eb-aebf-c306684b328d%27,panelIndex:%272%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%273%27,w:24,x:0,y:15),id:e4aef350-623d-11eb-aebf-c306684b328d,panelIndex:%273%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%274%27,w:24,x:24,y:15),id:f92e5630-623e-11eb-aebf-c306684b328d,panelIndex:%274%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:(),vis:!n),gridData:(h:15,i:%275%27,w:24,x:0,y:30),id:%279853d4d0-623d-11eb-aebf-c306684b328d%27,panelIndex:%275%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:(),vis:!n),gridData:(h:15,i:%276%27,w:24,x:24,y:30),id:%276ecb33b0-623d-11eb-aebf-c306684b328d%27,panelIndex:%276%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:(),vis:!n),gridData:(h:15,i:%277%27,w:24,x:0,y:45),id:b8e35c80-623c-11eb-aebf-c306684b328d,panelIndex:%277%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%278%27,w:24,x:24,y:45),id:f1bc75d0-6239-11eb-aebf-c306684b328d,panelIndex:%278%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%279%27,w:24,x:0,y:60),id:%270d8a8860-623a-11eb-aebf-c306684b328d%27,panelIndex:%279%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2710%27,w:24,x:24,y:60),id:d79fe3d0-6239-11eb-aebf-c306684b328d,panelIndex:%2710%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2711%27,w:24,x:0,y:75),id:%27318375a0-6240-11eb-aebf-c306684b328d%27,panelIndex:%2711%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2712%27,w:24,x:24,y:75),id:e461eb20-6245-11eb-aebf-c306684b328d,panelIndex:%2712%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2713%27,w:24,x:0,y:90),id:%2725bdc750-6242-11eb-aebf-c306684b328d%27,panelIndex:%2713%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2714%27,w:24,x:24,y:90),id:%2771dd7bc0-6248-11eb-aebf-c306684b328d%27,panelIndex:%2714%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2715%27,w:24,x:0,y:105),id:%276aea48a0-6240-11eb-aebf-c306684b328d%27,panelIndex:%2715%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2716%27,w:24,x:24,y:105),id:%2732b681f0-6241-11eb-aebf-c306684b328d%27,panelIndex:%2716%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2717%27,w:24,x:0,y:120),id:ccca99e0-6244-11eb-aebf-c306684b328d,panelIndex:%2717%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2718%27,w:24,x:24,y:120),id:a4d7be80-6245-11eb-aebf-c306684b328d,panelIndex:%2718%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2719%27,w:24,x:0,y:135),id:c94d8440-6248-11eb-aebf-c306684b328d,panelIndex:%2719%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2720%27,w:24,x:24,y:135),id:db6226f0-61c0-11eb-aebf-c306684b328d,panelIndex:%2720%27,type:search,version:%277.13.1%27)),query:(language:lucene,query:%27%27),tags:!(),timeRestore:!f,title:logstash_dashboardwithtime,viewMode:view)"},"coreMigrationVersion":"7.13.2","id":"058bc10f0578013fc41ddedc9a1dcd1e","references":[],"sort":[1623693556928,448],"type":"url","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NDUsNF0="} -{"attributes":{"color":"#ba898f","description":"","name":"By value tag"},"coreMigrationVersion":"7.13.2","id":"07f48f70-ca29-11eb-bf5e-3de94e83d4f0","references":[],"sort":[1623415891791,116],"type":"tag","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0MzEsNF0="} -{"attributes":{"fieldAttrs":"{\"ip\":{\"count\":2},\"geo.dest\":{\"count\":1}}","fields":"[]","runtimeFieldMap":"{}","timeFieldName":"@timestamp","title":"logstash-*"},"coreMigrationVersion":"7.13.2","id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1623415891791,120],"type":"index-pattern","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0MzMsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"60aaea59-d871-4e90-9ff3-78946d6bef90\"},\"panelIndex\":\"60aaea59-d871-4e90-9ff3-78946d6bef90\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsPie\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"2174c5fe-75d2-43ae-9c79-1a7cc7bbbaea\":{\"columns\":{\"65625f0d-e7f1-4370-b939-7db27af74de7\":{\"label\":\"Top values of geo.srcdest\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"geo.srcdest\",\"isBucketed\":true,\"params\":{\"size\":18,\"orderBy\":{\"type\":\"column\",\"columnId\":\"553a353f-dac5-4a52-a25d-52c6e1462597\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"553a353f-dac5-4a52-a25d-52c6e1462597\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"}},\"columnOrder\":[\"65625f0d-e7f1-4370-b939-7db27af74de7\",\"553a353f-dac5-4a52-a25d-52c6e1462597\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"2174c5fe-75d2-43ae-9c79-1a7cc7bbbaea\",\"groups\":[\"65625f0d-e7f1-4370-b939-7db27af74de7\",\"65625f0d-e7f1-4370-b939-7db27af74de7\",\"65625f0d-e7f1-4370-b939-7db27af74de7\"],\"metric\":\"553a353f-dac5-4a52-a25d-52c6e1462597\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"43fcac20-ca27-11eb-bf5e-3de94e83d4f0\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"43fcac20-ca27-11eb-bf5e-3de94e83d4f0\",\"name\":\"indexpattern-datasource-layer-2174c5fe-75d2-43ae-9c79-1a7cc7bbbaea\"}]},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"9ed45b8b-534b-4fac-9fee-436896b90039\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"circular drilldown\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}},\"type\":\"lens\"}}]","timeRestore":false,"title":"lens_panel_drilldown","version":1},"coreMigrationVersion":"7.13.2","id":"35ce3b30-ca29-11eb-bf5e-3de94e83d4f0","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"indexpattern-datasource-layer-2174c5fe-75d2-43ae-9c79-1a7cc7bbbaea","type":"index-pattern"},{"id":"08dec860-ca29-11eb-bf5e-3de94e83d4f0","name":"drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:9ed45b8b-534b-4fac-9fee-436896b90039:dashboardId","type":"dashboard"},{"id":"07f48f70-ca29-11eb-bf5e-3de94e83d4f0","name":"tag-07f48f70-ca29-11eb-bf5e-3de94e83d4f0","type":"tag"}],"sort":[1623415891791,125],"type":"dashboard","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0MzQsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"095e13b2-d0ac-47db-a62b-0aca28931402\"},\"panelIndex\":\"095e13b2-d0ac-47db-a62b-0aca28931402\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"f61694eb-94ed-495d-9ce8-63592f040b0b\":{\"columns\":{\"75ddcdb4-3050-4545-b401-509384b0d532\":{\"label\":\"Top values of machine.os.raw\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"machine.os.raw\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"2f97b0f5-f0ff-40f2-abb0-bb7d1081a126\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"273e31ef-7c2d-4d0e-9063-5528f4011a51\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\"}},\"2f97b0f5-f0ff-40f2-abb0-bb7d1081a126\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"},\"2eb30654-0ead-40ac-92ab-d8d113e25ac5\":{\"label\":\"Average of bytes\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"bytes\",\"isBucketed\":false,\"scale\":\"ratio\"}},\"columnOrder\":[\"75ddcdb4-3050-4545-b401-509384b0d532\",\"273e31ef-7c2d-4d0e-9063-5528f4011a51\",\"2f97b0f5-f0ff-40f2-abb0-bb7d1081a126\",\"2eb30654-0ead-40ac-92ab-d8d113e25ac5\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"f61694eb-94ed-495d-9ce8-63592f040b0b\",\"accessors\":[\"2f97b0f5-f0ff-40f2-abb0-bb7d1081a126\",\"2eb30654-0ead-40ac-92ab-d8d113e25ac5\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"273e31ef-7c2d-4d0e-9063-5528f4011a51\",\"splitAccessor\":\"75ddcdb4-3050-4545-b401-509384b0d532\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"43fcac20-ca27-11eb-bf5e-3de94e83d4f0\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"43fcac20-ca27-11eb-bf5e-3de94e83d4f0\",\"name\":\"indexpattern-datasource-layer-f61694eb-94ed-495d-9ce8-63592f040b0b\"}]},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"da7ad2b6-1e4a-40b5-9123-d0ec2bde858d\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"lens_panel_drilldown\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}},\"type\":\"lens\"}},{\"version\":\"7.13.1\",\"type\":\"map\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"153bb2dc-c4f5-4fcc-a45a-4e61cdaad8c2\"},\"panelIndex\":\"153bb2dc-c4f5-4fcc-a45a-4e61cdaad8c2\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"layerListJSON\":\"[{\\\"sourceDescriptor\\\":{\\\"type\\\":\\\"EMS_TMS\\\",\\\"isAutoSelect\\\":true},\\\"id\\\":\\\"16b378f6-4b68-4d17-8be4-3da333440869\\\",\\\"label\\\":null,\\\"minZoom\\\":0,\\\"maxZoom\\\":24,\\\"alpha\\\":1,\\\"visible\\\":true,\\\"style\\\":{\\\"type\\\":\\\"TILE\\\"},\\\"type\\\":\\\"VECTOR_TILE\\\"},{\\\"sourceDescriptor\\\":{\\\"indexPatternId\\\":\\\"43fcac20-ca27-11eb-bf5e-3de94e83d4f0\\\",\\\"geoField\\\":\\\"geo.coordinates\\\",\\\"filterByMapBounds\\\":true,\\\"scalingType\\\":\\\"CLUSTERS\\\",\\\"topHitsSplitField\\\":\\\"\\\",\\\"topHitsSize\\\":1,\\\"id\\\":\\\"86ff9ac9-9ccf-44b0-8b90-a4b779f5bc38\\\",\\\"type\\\":\\\"ES_SEARCH\\\",\\\"applyGlobalQuery\\\":true,\\\"applyGlobalTime\\\":true,\\\"tooltipProperties\\\":[\\\"extension\\\",\\\"geo.dest\\\",\\\"response\\\"],\\\"sortField\\\":\\\"\\\",\\\"sortOrder\\\":\\\"desc\\\"},\\\"id\\\":\\\"3d062d54-73de-4be7-8ae2-11e9b385f7d9\\\",\\\"label\\\":\\\"\\\",\\\"minZoom\\\":0,\\\"maxZoom\\\":24,\\\"alpha\\\":0.75,\\\"visible\\\":true,\\\"style\\\":{\\\"type\\\":\\\"VECTOR\\\",\\\"properties\\\":{\\\"icon\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"value\\\":\\\"marker\\\"}},\\\"fillColor\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"color\\\":\\\"#54B399\\\"}},\\\"lineColor\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"color\\\":\\\"#41937c\\\"}},\\\"lineWidth\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"size\\\":1}},\\\"iconSize\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"size\\\":6}},\\\"iconOrientation\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"orientation\\\":0}},\\\"labelText\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"value\\\":\\\"\\\"}},\\\"labelColor\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"color\\\":\\\"#000000\\\"}},\\\"labelSize\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"size\\\":14}},\\\"labelBorderColor\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"symbolizeAs\\\":{\\\"options\\\":{\\\"value\\\":\\\"circle\\\"}},\\\"labelBorderSize\\\":{\\\"options\\\":{\\\"size\\\":\\\"SMALL\\\"}}},\\\"isTimeAware\\\":true},\\\"type\\\":\\\"BLENDED_VECTOR\\\",\\\"joins\\\":[]}]\",\"mapStateJSON\":\"{\\\"zoom\\\":1.38,\\\"center\\\":{\\\"lon\\\":0,\\\"lat\\\":19.94277},\\\"timeFilters\\\":{\\\"from\\\":\\\"now-15y\\\",\\\"to\\\":\\\"now\\\"},\\\"refreshConfig\\\":{\\\"isPaused\\\":true,\\\"interval\\\":0},\\\"query\\\":{\\\"query\\\":\\\"\\\",\\\"language\\\":\\\"kuery\\\"},\\\"filters\\\":[],\\\"settings\\\":{\\\"autoFitToDataBounds\\\":false,\\\"backgroundColor\\\":\\\"#ffffff\\\",\\\"disableInteractive\\\":false,\\\"disableTooltipControl\\\":false,\\\"hideToolbarOverlay\\\":false,\\\"hideLayerControl\\\":false,\\\"hideViewControl\\\":false,\\\"initialLocation\\\":\\\"LAST_SAVED_LOCATION\\\",\\\"fixedLocation\\\":{\\\"lat\\\":0,\\\"lon\\\":0,\\\"zoom\\\":2},\\\"browserLocation\\\":{\\\"zoom\\\":2},\\\"maxZoom\\\":24,\\\"minZoom\\\":0,\\\"showScaleControl\\\":false,\\\"showSpatialFilters\\\":true,\\\"spatialFiltersAlpa\\\":0.3,\\\"spatialFiltersFillColor\\\":\\\"#DA8B45\\\",\\\"spatialFiltersLineColor\\\":\\\"#DA8B45\\\"}}\",\"uiStateJSON\":\"{\\\"isLayerTOCOpen\\\":true,\\\"openTOCDetails\\\":[]}\"},\"mapCenter\":{\"lat\":19.94277,\"lon\":0,\"zoom\":1.38},\"mapBuffer\":{\"minLon\":-214.7723,\"minLat\":-74.644155,\"maxLon\":214.7723,\"maxLat\":102.864625},\"isLayerTOCOpen\":true,\"openTOCDetails\":[],\"hiddenLayers\":[],\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"b10e564b-7d42-45f5-8c26-a9220c405834\",\"triggers\":[\"CONTEXT_MENU_TRIGGER\"],\"action\":{\"name\":\"URL drilldown\",\"config\":{\"url\":{\"template\":\"http://localhost:5601/app/discover#/view/0abce1c0-ca2a-11eb-bf5e-3de94e83d4f0?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(columns:!(),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',key:geo.srcdest,negate:!f,params:!('IN:CN'),type:phrases,value:'IN:CN'),query:(bool:(minimum_should_match:1,should:!((match_phrase:(geo.srcdest:'IN:CN'))))))),index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}}]}},\"type\":\"map\"}},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"5de83d82-bbd1-4d30-be61-dd6724f32c07\"},\"panelIndex\":\"5de83d82-bbd1-4d30-be61-dd6724f32c07\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"metrics\",\"params\":{\"annotations\":[{\"fields\":\"response.raw\",\"template\":\"{{response.raw}}\",\"index_pattern\":\"logstash-*\",\"query_string\":{\"query\":\"response.raw :\\\"404\\\" \",\"language\":\"kuery\"},\"color\":\"#F00\",\"icon\":\"fa-bomb\",\"id\":\"37395960-ca28-11eb-9eac-2f3ccefcbeef\",\"ignore_global_filters\":1,\"ignore_panel_filters\":1,\"time_field\":\"@timestamp\"}],\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"index_pattern\":\"logstash-*\",\"interval\":\"\",\"isModelInvalid\":false,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"number\",\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"line_width\":1,\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"count\"}],\"point_size\":1,\"separate_axis\":0,\"split_color_mode\":\"kibana\",\"split_mode\":\"everything\",\"stacked\":\"none\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"@timestamp\",\"tooltip_mode\":\"show_all\",\"type\":\"timeseries\",\"use_kibana_indexes\":false},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"23d04651-266f-4f0a-8eef-6f190f0a84af\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"dashboard\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}},\"type\":\"visualization\"}},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"a254a623-a9af-4372-851b-572fa95b0902\"},\"panelIndex\":\"a254a623-a9af-4372-851b-572fa95b0902\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"vega\",\"params\":{\"spec\":\"{\\n/*\\n\\nWelcome to Vega visualizations. Here you can design your own dataviz from scratch using a declarative language called Vega, or its simpler form Vega-Lite. In Vega, you have the full control of what data is loaded, even from multiple sources, how that data is transformed, and what visual elements are used to show it. Use help icon to view Vega examples, tutorials, and other docs. Use the wrench icon to reformat this text, or to remove comments.\\n\\nThis example graph shows the document count in all indexes in the current time range. You might need to adjust the time filter in the upper right corner.\\n*/\\n\\n $schema: https://vega.github.io/schema/vega-lite/v4.json\\n title: Event counts from all indexes\\n\\n // Define the data source\\n data: {\\n url: {\\n/*\\nAn object instead of a string for the \\\"url\\\" param is treated as an Elasticsearch query. Anything inside this object is not part of the Vega language, but only understood by Kibana and Elasticsearch server. This query counts the number of documents per time interval, assuming you have a @timestamp field in your data.\\n\\nKibana has a special handling for the fields surrounded by \\\"%\\\". They are processed before the the query is sent to Elasticsearch. This way the query becomes context aware, and can use the time range and the dashboard filters.\\n*/\\n\\n // Apply dashboard context filters when set\\n %context%: true\\n // Filter the time picker (upper right corner) with this field\\n %timefield%: @timestamp\\n\\n/*\\nSee .search() documentation for : https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-search\\n*/\\n\\n // Which index to search\\n index: _all\\n // Aggregate data by the time field into time buckets, counting the number of documents in each bucket.\\n body: {\\n aggs: {\\n time_buckets: {\\n date_histogram: {\\n // Use date histogram aggregation on @timestamp field\\n field: @timestamp\\n // The interval value will depend on the daterange picker (true), or use an integer to set an approximate bucket count\\n interval: {%autointerval%: true}\\n // Make sure we get an entire range, even if it has no data\\n extended_bounds: {\\n // Use the current time range's start and end\\n min: {%timefilter%: \\\"min\\\"}\\n max: {%timefilter%: \\\"max\\\"}\\n }\\n // Use this for linear (e.g. line, area) graphs. Without it, empty buckets will not show up\\n min_doc_count: 0\\n }\\n }\\n }\\n // Speed up the response by only including aggregation results\\n size: 0\\n }\\n }\\n/*\\nElasticsearch will return results in this format:\\n\\naggregations: {\\n time_buckets: {\\n buckets: [\\n {\\n key_as_string: 2015-11-30T22:00:00.000Z\\n key: 1448920800000\\n doc_count: 0\\n },\\n {\\n key_as_string: 2015-11-30T23:00:00.000Z\\n key: 1448924400000\\n doc_count: 0\\n }\\n ...\\n ]\\n }\\n}\\n\\nFor our graph, we only need the list of bucket values. Use the format.property to discard everything else.\\n*/\\n format: {property: \\\"aggregations.time_buckets.buckets\\\"}\\n }\\n\\n // \\\"mark\\\" is the graphics element used to show our data. Other mark values are: area, bar, circle, line, point, rect, rule, square, text, and tick. See https://vega.github.io/vega-lite/docs/mark.html\\n mark: line\\n\\n // \\\"encoding\\\" tells the \\\"mark\\\" what data to use and in what way. See https://vega.github.io/vega-lite/docs/encoding.html\\n encoding: {\\n x: {\\n // The \\\"key\\\" value is the timestamp in milliseconds. Use it for X axis.\\n field: key\\n type: temporal\\n axis: {title: false} // Customize X axis format\\n }\\n y: {\\n // The \\\"doc_count\\\" is the count per bucket. Use it for Y axis.\\n field: doc_count\\n type: quantitative\\n axis: {title: \\\"Document count\\\"}\\n }\\n }\\n}\\n\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"index\":\"43fcac20-ca27-11eb-bf5e-3de94e83d4f0\",\"key\":\"geo.srcdest\",\"negate\":false,\"params\":{\"query\":\"CN:CN\"},\"type\":\"phrase\"},\"query\":{\"match_phrase\":{\"geo.srcdest\":\"CN:CN\"}}}]}}},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"cfd2521d-15a0-4c64-b0ab-d2dc18f396e3\",\"triggers\":[\"CONTEXT_MENU_TRIGGER\"],\"action\":{\"name\":\"URL\",\"config\":{\"url\":{\"template\":\"http://localhost:5601/app/discover#/view/4acce030-ca2a-11eb-bf5e-3de94e83d4f0?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(columns:!(),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',key:ip,negate:!f,params:(query:'57.237.11.219'),type:phrase),query:(match_phrase:(ip:'57.237.11.219')))),index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}}]}},\"type\":\"visualization\"}},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"7f0506ed-1f30-410f-bcd7-3f70623aa5ba\"},\"panelIndex\":\"7f0506ed-1f30-410f-bcd7-3f70623aa5ba\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"significant_terms\",\"params\":{\"field\":\"geo.srcdest\",\"size\":77},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"43fcac20-ca27-11eb-bf5e-3de94e83d4f0\",\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{},\"type\":\"visualization\"}}]","timeRestore":false,"title":"logstash_by_value_dashboard","version":1},"coreMigrationVersion":"7.13.2","id":"08dec860-ca29-11eb-bf5e-3de94e83d4f0","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"indexpattern-datasource-layer-f61694eb-94ed-495d-9ce8-63592f040b0b","type":"index-pattern"},{"id":"35ce3b30-ca29-11eb-bf5e-3de94e83d4f0","name":"drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:da7ad2b6-1e4a-40b5-9123-d0ec2bde858d:dashboardId","type":"dashboard"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"layer_1_source_index_pattern","type":"index-pattern"},{"id":"35ce3b30-ca29-11eb-bf5e-3de94e83d4f0","name":"drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:23d04651-266f-4f0a-8eef-6f190f0a84af:dashboardId","type":"dashboard"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"07f48f70-ca29-11eb-bf5e-3de94e83d4f0","name":"tag-07f48f70-ca29-11eb-bf5e-3de94e83d4f0","type":"tag"}],"sort":[1623415891791,134],"type":"dashboard","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0MzUsNF0="} -{"attributes":{"fieldAttrs":"{\"machine.os\":{\"count\":1},\"spaces\":{\"count\":1},\"type\":{\"count\":1},\"bytes_scripted\":{\"count\":1}}","fields":"[{\"count\":1,\"script\":\"doc['bytes'].value*1024\",\"lang\":\"painless\",\"name\":\"bytes_scripted\",\"type\":\"number\",\"scripted\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]","runtimeFieldMap":"{}","timeFieldName":"@timestamp","title":"logstash-*"},"coreMigrationVersion":"7.13.2","id":"56b34100-619d-11eb-aebf-c306684b328d","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1623693556928,449],"type":"index-pattern","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NDYsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_scriptedfieldviz","uiStateJSON":"{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}}","version":1,"visState":"{\"title\":\"logstash_scriptedfieldviz\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"range\",\"schema\":\"group\",\"params\":{\"field\":\"bytes_scripted\",\"ranges\":[{\"from\":0,\"to\":40000},{\"from\":40001,\"to\":20000000}]}}]}"},"coreMigrationVersion":"7.13.2","id":"0a274320-61cc-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,451],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NDcsNF0="} -{"attributes":{"columns":[],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"type\":\"phrases\",\"key\":\"geo.srcdest\",\"value\":\"IN:CN\",\"params\":[\"IN:CN\"],\"alias\":null,\"negate\":false,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"bool\":{\"should\":[{\"match_phrase\":{\"geo.srcdest\":\"IN:CN\"}}],\"minimum_should_match\":1}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"search_saved","version":1},"coreMigrationVersion":"7.13.2","id":"0abce1c0-ca2a-11eb-bf5e-3de94e83d4f0","migrationVersion":{"search":"7.9.3"},"references":[{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"sort":[1623415891791,137],"type":"search","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0MzYsNF0="} -{"attributes":{"color":"#81a93f","description":"","name":"logstash_tag"},"coreMigrationVersion":"7.13.2","id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","references":[],"sort":[1623693556928,452],"type":"tag","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NDgsNF0="} -{"attributes":{"description":"","layerListJSON":"[{\"sourceDescriptor\":{\"type\":\"EMS_TMS\",\"isAutoSelect\":true},\"id\":\"4c2394ca-a6a2-4f8d-9631-259eb3a9627f\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"style\":{\"type\":\"TILE\"},\"type\":\"VECTOR_TILE\"},{\"sourceDescriptor\":{\"geoField\":\"geo.coordinates\",\"filterByMapBounds\":true,\"scalingType\":\"CLUSTERS\",\"id\":\"7555324e-e793-4b7d-a9d2-cd63e6b7fe3d\",\"type\":\"ES_SEARCH\",\"applyGlobalQuery\":true,\"applyGlobalTime\":true,\"tooltipProperties\":[\"geo.srcdest\",\"machine.os\",\"type\"],\"sortField\":\"bytes_scripted\",\"sortOrder\":\"desc\",\"topHitsSplitField\":\"\",\"topHitsSize\":1,\"indexPatternRefName\":\"layer_1_source_index_pattern\"},\"id\":\"6a493d8b-a220-46bc-8906-a1a7569799e0\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"icon\":{\"type\":\"STATIC\",\"options\":{\"value\":\"marker\"}},\"fillColor\":{\"type\":\"DYNAMIC\",\"options\":{\"color\":\"Blues\",\"colorCategory\":\"palette_0\",\"field\":{\"name\":\"extension.raw\",\"origin\":\"source\"},\"fieldMetaOptions\":{\"isEnabled\":true,\"sigma\":3},\"type\":\"CATEGORICAL\"}},\"lineColor\":{\"type\":\"DYNAMIC\",\"options\":{\"color\":\"Blues\",\"colorCategory\":\"palette_0\",\"field\":{\"name\":\"machine.os.raw\",\"origin\":\"source\"},\"fieldMetaOptions\":{\"isEnabled\":true,\"sigma\":3},\"type\":\"CATEGORICAL\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":6}},\"iconOrientation\":{\"type\":\"STATIC\",\"options\":{\"orientation\":0}},\"labelText\":{\"type\":\"STATIC\",\"options\":{\"value\":\"\"}},\"labelColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#000000\"}},\"labelSize\":{\"type\":\"STATIC\",\"options\":{\"size\":14}},\"labelBorderColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"symbolizeAs\":{\"options\":{\"value\":\"circle\"}},\"labelBorderSize\":{\"options\":{\"size\":\"SMALL\"}}},\"isTimeAware\":true},\"type\":\"BLENDED_VECTOR\",\"joins\":[]}]","mapStateJSON":"{\"zoom\":1.56,\"center\":{\"lon\":0,\"lat\":19.94277},\"timeFilters\":{\"from\":\"now-15y\",\"to\":\"now\"},\"refreshConfig\":{\"isPaused\":true,\"interval\":0},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"settings\":{\"autoFitToDataBounds\":false,\"backgroundColor\":\"#ffffff\",\"disableInteractive\":false,\"disableTooltipControl\":false,\"hideToolbarOverlay\":false,\"hideLayerControl\":false,\"hideViewControl\":false,\"initialLocation\":\"LAST_SAVED_LOCATION\",\"fixedLocation\":{\"lat\":0,\"lon\":0,\"zoom\":2},\"browserLocation\":{\"zoom\":2},\"maxZoom\":24,\"minZoom\":0,\"showScaleControl\":false,\"showSpatialFilters\":true,\"spatialFiltersAlpa\":0.3,\"spatialFiltersFillColor\":\"#DA8B45\",\"spatialFiltersLineColor\":\"#DA8B45\"}}","title":"logstash_maps","uiStateJSON":"{\"isLayerTOCOpen\":true,\"openTOCDetails\":[]}"},"coreMigrationVersion":"7.13.2","id":"0c5974f0-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"map":"7.12.0"},"references":[{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"layer_1_source_index_pattern","type":"index-pattern"}],"sort":[1623693556928,455],"type":"map","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NDksNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_datatable","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"logstash_datatable\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":true,\"totalFunc\":\"sum\",\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-07-24T08:58:14.175Z\",\"to\":\"2015-11-11T13:28:17.223Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"response.raw\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"0d8a8860-623a-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,457],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTAsNF0="} -{"attributes":{"description":null,"state":{"datasourceStates":{"indexpattern":{"layers":{"35fd070e-5bbc-4906-bf69-8548a213d7a0":{"columnOrder":["2bf7969f-0371-4df2-a398-0a191e428ce5","aab812d6-609b-444d-9990-1e67f85fd85d","e9829e8a-c484-4c9d-b489-f1eb3fb138d2","4fc9fb3b-29a5-4679-ab3c-90d5daaf0661"],"columns":{"2bf7969f-0371-4df2-a398-0a191e428ce5":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"4fc9fb3b-29a5-4679-ab3c-90d5daaf0661":{"dataType":"number","isBucketed":false,"label":"Moving average of Median of bytes","operationType":"moving_average","params":{"window":5},"references":["e9829e8a-c484-4c9d-b489-f1eb3fb138d2"],"scale":"ratio"},"aab812d6-609b-444d-9990-1e67f85fd85d":{"dataType":"number","isBucketed":false,"label":"Average of bytes","operationType":"average","scale":"ratio","sourceField":"bytes"},"e9829e8a-c484-4c9d-b489-f1eb3fb138d2":{"dataType":"number","isBucketed":false,"label":"Median of bytes","operationType":"median","scale":"ratio","sourceField":"bytes"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["aab812d6-609b-444d-9990-1e67f85fd85d","4fc9fb3b-29a5-4679-ab3c-90d5daaf0661"],"layerId":"35fd070e-5bbc-4906-bf69-8548a213d7a0","position":"top","seriesType":"bar_stacked","showGridlines":false,"xAccessor":"2bf7969f-0371-4df2-a398-0a191e428ce5"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_barvertical_stacked_average","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"0dbbf8b0-be3c-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-35fd070e-5bbc-4906-bf69-8548a213d7a0","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,461],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTEsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_area_chart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_area_chart\",\"type\":\"area\",\"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,\"filter\":true},\"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,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2010-01-28T19:25:55.242Z\",\"to\":\"2021-01-28T19:40:55.242Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"machine.os.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"machine OS\"}}]}"},"coreMigrationVersion":"7.13.2","id":"36b91810-6239-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,463],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTIsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_horizontal","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_horizontal\",\"type\":\"horizontal_bar\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":200},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":75,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"no of documents\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"no of documents\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":true,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"no of documents\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-07-24T08:58:14.175Z\",\"to\":\"2015-11-11T13:28:17.223Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"agent.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"extension.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"e4aef350-623d-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,465],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTMsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_linechart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_linechart\",\"type\":\"line\",\"params\":{\"type\":\"line\",\"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,\"filter\":true},\"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\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"radiusRatio\":51,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-09-18T06:38:43.311Z\",\"to\":\"2015-09-26T04:02:51.104Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"radius\",\"params\":{\"field\":\"bytes\",\"customLabel\":\"bubbles\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"machine.os.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"f92e5630-623e-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,467],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTQsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_heatmap","uiStateJSON":"{\"vis\":{\"defaultColors\":{\"0% - 25%\":\"rgb(255,255,204)\",\"25% - 50%\":\"rgb(254,217,118)\",\"50% - 75%\":\"rgb(253,141,60)\",\"75% - 100%\":\"rgb(227,27,28)\"}}}","version":1,"visState":"{\"title\":\"logstash_heatmap\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Yellow to Red\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":true,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"#555\"}}],\"row\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-07-24T08:58:14.175Z\",\"to\":\"2015-11-11T13:28:17.223Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"machine.os.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"response.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"9853d4d0-623d-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,469],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTUsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_goalchart","uiStateJSON":"{\"vis\":{\"defaultColors\":{\"0 - 33\":\"rgb(0,104,55)\",\"33 - 67\":\"rgb(255,255,190)\",\"67 - 100\":\"rgb(165,0,38)\"}}}","version":1,"visState":"{\"title\":\"logstash_goalchart\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Circle\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000},{\"from\":10001,\"to\":20000},{\"from\":20001,\"to\":30000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60},\"minAngle\":0,\"maxAngle\":6.283185307179586}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"group\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-07-24T08:58:14.175Z\",\"to\":\"2015-11-11T13:28:17.223Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"coreMigrationVersion":"7.13.2","id":"6ecb33b0-623d-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,471],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTYsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_gauge","uiStateJSON":"{\"vis\":{\"defaultColors\":{\"0 - 50\":\"rgb(0,104,55)\",\"50 - 75\":\"rgb(255,255,190)\",\"75 - 100\":\"rgb(165,0,38)\"}}}","version":1,"visState":"{\"title\":\"logstash_gauge\",\"type\":\"gauge\",\"params\":{\"type\":\"gauge\",\"addTooltip\":true,\"addLegend\":true,\"isDisplayWarning\":false,\"gauge\":{\"extendRange\":true,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"Labels\",\"colorsRange\":[{\"from\":0,\"to\":50},{\"from\":50,\"to\":75},{\"from\":75,\"to\":100}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":true,\"labels\":false,\"color\":\"#333\"},\"type\":\"meter\",\"style\":{\"bgWidth\":0.9,\"width\":0.9,\"mask\":false,\"bgMask\":false,\"maskBars\":50,\"bgFill\":\"#eee\",\"bgColor\":false,\"subText\":\"\",\"fontSize\":60,\"labelColor\":true},\"alignment\":\"horizontal\"}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"range\",\"schema\":\"group\",\"params\":{\"field\":\"bytes\",\"ranges\":[{\"from\":0,\"to\":10001},{\"from\":10002,\"to\":1000000}],\"json\":\"\"}}]}"},"coreMigrationVersion":"7.13.2","id":"b8e35c80-623c-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,473],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTcsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_coordinatemaps","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_coordinatemaps\",\"type\":\"tile_map\",\"params\":{\"colorSchema\":\"Yellow to Red\",\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":false,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"selectedTmsLayer\":{\"origin\":\"elastic_maps_service\",\"id\":\"road_map\",\"minZoom\":0,\"maxZoom\":18,\"attribution\":\"

© OpenStreetMap contributors|OpenMapTiles|Elastic Maps Service

\"}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"mapZoom\":2,\"mapCenter\":[0,0],\"precision\":2,\"customLabel\":\"logstash src/dest\"}}]}"},"coreMigrationVersion":"7.13.2","id":"f1bc75d0-6239-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,475],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTgsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"title":"logstash_inputcontrols","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_inputcontrols\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1611928563867\",\"fieldName\":\"machine.ram\",\"parent\":\"\",\"label\":\"Logstash RAM\",\"type\":\"range\",\"options\":{\"decimalPlaces\":0,\"step\":1024},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1611928586274\",\"fieldName\":\"machine.os.raw\",\"parent\":\"\",\"label\":\"Logstash OS\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_1_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}"},"coreMigrationVersion":"7.13.2","id":"d79fe3d0-6239-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"control_0_index_pattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"control_1_index_pattern","type":"index-pattern"}],"sort":[1623693556928,478],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NTksNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"title":"logstash_markdown","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":true,\"markdown\":\"Kibana is built with JS https://www.javascript.com/\"},\"aggs\":[]}"},"coreMigrationVersion":"7.13.2","id":"318375a0-6240-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1623693556928,479],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjAsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"title":"logstash_vegaviz","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_vegaviz\",\"type\":\"vega\",\"params\":{\"spec\":\"{\\n/*\\n\\nWelcome to Vega visualizations. Here you can design your own dataviz from scratch using a declarative language called Vega, or its simpler form Vega-Lite. In Vega, you have the full control of what data is loaded, even from multiple sources, how that data is transformed, and what visual elements are used to show it. Use help icon to view Vega examples, tutorials, and other docs. Use the wrench icon to reformat this text, or to remove comments.\\n\\nThis example graph shows the document count in all indexes in the current time range. You might need to adjust the time filter in the upper right corner.\\n*/\\n\\n $schema: https://vega.github.io/schema/vega-lite/v2.json\\n title: Event counts from all indexes\\n\\n // Define the data source\\n data: {\\n url: {\\n/*\\nAn object instead of a string for the \\\"url\\\" param is treated as an Elasticsearch query. Anything inside this object is not part of the Vega language, but only understood by Kibana and Elasticsearch server. This query counts the number of documents per time interval, assuming you have a @timestamp field in your data.\\n\\nKibana has a special handling for the fields surrounded by \\\"%\\\". They are processed before the the query is sent to Elasticsearch. This way the query becomes context aware, and can use the time range and the dashboard filters.\\n*/\\n\\n // Apply dashboard context filters when set\\n %context%: true\\n // Filter the time picker (upper right corner) with this field\\n %timefield%: @timestamp\\n\\n/*\\nSee .search() documentation for : https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-search\\n*/\\n\\n // Which index to search\\n index: logstash-*\\n // Aggregate data by the time field into time buckets, counting the number of documents in each bucket.\\n body: {\\n aggs: {\\n time_buckets: {\\n date_histogram: {\\n // Use date histogram aggregation on @timestamp field\\n field: @timestamp\\n // The interval value will depend on the daterange picker (true), or use an integer to set an approximate bucket count\\n interval: {%autointerval%: true}\\n // Make sure we get an entire range, even if it has no data\\n extended_bounds: {\\n // Use the current time range's start and end\\n min: {%timefilter%: \\\"min\\\"}\\n max: {%timefilter%: \\\"max\\\"}\\n }\\n // Use this for linear (e.g. line, area) graphs. Without it, empty buckets will not show up\\n min_doc_count: 13\\n }\\n }\\n }\\n // Speed up the response by only including aggregation results\\n size: 0\\n }\\n }\\n/*\\nElasticsearch will return results in this format:\\n\\naggregations: {\\n time_buckets: {\\n buckets: [\\n {\\n key_as_string: 2015-11-30T22:00:00.000Z\\n key: 1448920800000\\n doc_count: 0\\n },\\n {\\n key_as_string: 2015-11-30T23:00:00.000Z\\n key: 1448924400000\\n doc_count: 0\\n }\\n ...\\n ]\\n }\\n}\\n\\nFor our graph, we only need the list of bucket values. Use the format.property to discard everything else.\\n*/\\n format: {property: \\\"aggregations.time_buckets.buckets\\\"}\\n }\\n\\n // \\\"mark\\\" is the graphics element used to show our data. Other mark values are: area, bar, circle, line, point, rect, rule, square, text, and tick. See https://vega.github.io/vega-lite/docs/mark.html\\n mark: line\\n\\n // \\\"encoding\\\" tells the \\\"mark\\\" what data to use and in what way. See https://vega.github.io/vega-lite/docs/encoding.html\\n encoding: {\\n x: {\\n // The \\\"key\\\" value is the timestamp in milliseconds. Use it for X axis.\\n field: key\\n type: temporal\\n axis: {title: false} // Customize X axis format\\n }\\n y: {\\n // The \\\"doc_count\\\" is the count per bucket. Use it for Y axis.\\n field: doc_count\\n type: quantitative\\n axis: {title: \\\"Document count\\\"}\\n }\\n }\\n}\\n\"},\"aggs\":[]}"},"coreMigrationVersion":"7.13.2","id":"e461eb20-6245-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1623693556928,480],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjEsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_regionmap","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_regionmap\",\"type\":\"region_map\",\"params\":{\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"emsHotLink\":\"https://maps.elastic.co/v6.7?locale=en#file/world_countries\",\"isDisplayWarning\":true,\"legendPosition\":\"bottomright\",\"mapCenter\":[0,0],\"mapZoom\":2,\"outlineWeight\":1,\"selectedJoinField\":{\"type\":\"id\",\"name\":\"iso2\",\"description\":\"ISO 3166-1 alpha-2 code\"},\"showAllShapes\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"selectedTmsLayer\":{\"origin\":\"elastic_maps_service\",\"id\":\"road_map\",\"minZoom\":0,\"maxZoom\":18,\"attribution\":\"

© OpenStreetMap contributors|OpenMapTiles|Elastic Maps Service

\"}},\"selectedLayer\":{\"name\":\"World Countries\",\"origin\":\"elastic_maps_service\",\"id\":\"world_countries\",\"created_at\":\"2017-04-26T17:12:15.978370\",\"attribution\":\"Made with NaturalEarth | Elastic Maps Service\",\"fields\":[{\"type\":\"id\",\"name\":\"iso2\",\"description\":\"ISO 3166-1 alpha-2 code\"},{\"type\":\"id\",\"name\":\"iso3\",\"description\":\"ISO 3166-1 alpha-3 code\"},{\"type\":\"property\",\"name\":\"name\",\"description\":\"name\"}],\"format\":{\"type\":\"geojson\"},\"layerId\":\"elastic_maps_service.World Countries\",\"isEMS\":true}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.dest\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"25bdc750-6242-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,482],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjIsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_verticalbarchart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_verticalbarchart\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"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,\"filter\":true},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\",\"defaultYExtents\":true},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":true,\"row\":true,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-09-18T06:38:43.311Z\",\"to\":\"2015-09-26T04:02:51.104Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{},\"scaleMetricValues\":true}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"response.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Response code\"}}]}"},"coreMigrationVersion":"7.13.2","id":"71dd7bc0-6248-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,484],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjMsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_metricviz","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_metricviz\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"range\",\"schema\":\"group\",\"params\":{\"field\":\"bytes_scripted\",\"ranges\":[{\"from\":0,\"to\":10000},{\"from\":10001,\"to\":300000}]}}]}"},"coreMigrationVersion":"7.13.2","id":"6aea48a0-6240-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,486],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjQsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_piechart","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"machine.os.raw\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":true,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"right\",\"type\":\"pie\"},\"title\":\"logstash_piechart\",\"type\":\"pie\"}"},"coreMigrationVersion":"7.13.2","id":"32b681f0-6241-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,488],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjUsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_tagcloud","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_tagcloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"log\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.srcdest\",\"size\":23,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"ccca99e0-6244-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,490],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjYsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"title":"logstash_timelion","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(q='machine.os.raw:win xp' , index=logstash-*)\",\"interval\":\"auto\"},\"aggs\":[]}"},"coreMigrationVersion":"7.13.2","id":"a4d7be80-6245-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1623693556928,491],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjcsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"logstash_tsvb","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_tsvb\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"annotations\":[{\"fields\":\"machine.os.raw\",\"template\":\"{{machine.os.raw}}\",\"index_pattern\":\"logstash-*\",\"query_string\":{\"query\":\"machine.os.raw :\\\"win xp\\\" \",\"language\":\"lucene\"},\"id\":\"aa43ceb0-6248-11eb-9a82-ef1c6e6c0265\",\"color\":\"#F00\",\"time_field\":\"@timestamp\",\"icon\":\"fa-tag\",\"ignore_global_filters\":1,\"ignore_panel_filters\":1}],\"use_kibana_indexes\":false},\"aggs\":[]}"},"coreMigrationVersion":"7.13.2","id":"c94d8440-6248-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1623693556928,492],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjgsNF0="} -{"attributes":{"columns":["bytes_scripted"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"machine.os.raw :\\\"win xp\\\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"logstash_scripted_saved_search","version":1},"coreMigrationVersion":"7.13.2","id":"db6226f0-61c0-11eb-aebf-c306684b328d","migrationVersion":{"search":"7.9.3"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,494],"type":"search","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NjksNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"3\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"5\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"6\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"7\",\"w\":24,\"x\":0,\"y\":45},\"panelIndex\":\"7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"8\",\"w\":24,\"x\":24,\"y\":45},\"panelIndex\":\"8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"9\",\"w\":24,\"x\":0,\"y\":60},\"panelIndex\":\"9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"10\",\"w\":24,\"x\":24,\"y\":60},\"panelIndex\":\"10\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_10\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"11\",\"w\":24,\"x\":0,\"y\":75},\"panelIndex\":\"11\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_11\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"12\",\"w\":24,\"x\":24,\"y\":75},\"panelIndex\":\"12\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_12\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"13\",\"w\":24,\"x\":0,\"y\":90},\"panelIndex\":\"13\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"14\",\"w\":24,\"x\":24,\"y\":90},\"panelIndex\":\"14\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_14\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"15\",\"w\":24,\"x\":0,\"y\":105},\"panelIndex\":\"15\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"16\",\"w\":24,\"x\":24,\"y\":105},\"panelIndex\":\"16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_16\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"17\",\"w\":24,\"x\":0,\"y\":120},\"panelIndex\":\"17\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"18\",\"w\":24,\"x\":24,\"y\":120},\"panelIndex\":\"18\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"19\",\"w\":24,\"x\":0,\"y\":135},\"panelIndex\":\"19\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_19\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"20\",\"w\":24,\"x\":24,\"y\":135},\"panelIndex\":\"20\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_20\"}]","timeRestore":false,"title":"logstash_dashboardwithtime","version":1},"coreMigrationVersion":"7.13.2","id":"154944b0-6249-11eb-aebf-c306684b328d","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"36b91810-6239-11eb-aebf-c306684b328d","name":"1:panel_1","type":"visualization"},{"id":"0a274320-61cc-11eb-aebf-c306684b328d","name":"2:panel_2","type":"visualization"},{"id":"e4aef350-623d-11eb-aebf-c306684b328d","name":"3:panel_3","type":"visualization"},{"id":"f92e5630-623e-11eb-aebf-c306684b328d","name":"4:panel_4","type":"visualization"},{"id":"9853d4d0-623d-11eb-aebf-c306684b328d","name":"5:panel_5","type":"visualization"},{"id":"6ecb33b0-623d-11eb-aebf-c306684b328d","name":"6:panel_6","type":"visualization"},{"id":"b8e35c80-623c-11eb-aebf-c306684b328d","name":"7:panel_7","type":"visualization"},{"id":"f1bc75d0-6239-11eb-aebf-c306684b328d","name":"8:panel_8","type":"visualization"},{"id":"0d8a8860-623a-11eb-aebf-c306684b328d","name":"9:panel_9","type":"visualization"},{"id":"d79fe3d0-6239-11eb-aebf-c306684b328d","name":"10:panel_10","type":"visualization"},{"id":"318375a0-6240-11eb-aebf-c306684b328d","name":"11:panel_11","type":"visualization"},{"id":"e461eb20-6245-11eb-aebf-c306684b328d","name":"12:panel_12","type":"visualization"},{"id":"25bdc750-6242-11eb-aebf-c306684b328d","name":"13:panel_13","type":"visualization"},{"id":"71dd7bc0-6248-11eb-aebf-c306684b328d","name":"14:panel_14","type":"visualization"},{"id":"6aea48a0-6240-11eb-aebf-c306684b328d","name":"15:panel_15","type":"visualization"},{"id":"32b681f0-6241-11eb-aebf-c306684b328d","name":"16:panel_16","type":"visualization"},{"id":"ccca99e0-6244-11eb-aebf-c306684b328d","name":"17:panel_17","type":"visualization"},{"id":"a4d7be80-6245-11eb-aebf-c306684b328d","name":"18:panel_18","type":"visualization"},{"id":"c94d8440-6248-11eb-aebf-c306684b328d","name":"19:panel_19","type":"visualization"},{"id":"db6226f0-61c0-11eb-aebf-c306684b328d","name":"20:panel_20","type":"search"}],"sort":[1623693556928,515],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzAsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"26e2cf99-d931-4320-9e15-9dbc148f3534":{"columnOrder":["6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e","beb72af1-239c-46d8-823b-b00d1e2ace43"],"columns":{"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e":{"dataType":"string","isBucketed":true,"label":"Top values of url.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"beb72af1-239c-46d8-823b-b00d1e2ace43","type":"column"},"orderDirection":"desc","otherBucket":true,"size":20},"scale":"ordinal","sourceField":"url.raw"},"beb72af1-239c-46d8-823b-b00d1e2ace43":{"dataType":"number","isBucketed":false,"label":"Unique count of geo.srcdest","operationType":"unique_count","scale":"ratio","sourceField":"geo.srcdest"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e","6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e","6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e"],"layerId":"26e2cf99-d931-4320-9e15-9dbc148f3534","legendDisplay":"default","metric":"beb72af1-239c-46d8-823b-b00d1e2ace43","nestedLegend":false,"numberDisplay":"percent"}],"shape":"donut"}},"title":"lens_pie_chart","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.2","id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,519],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzEsNF0="} -{"attributes":{"description":null,"state":{"datasourceStates":{"indexpattern":{"layers":{"a3ac0e3d-63ec-49b2-882a-b34680a967ba":{"columnOrder":["352a2c02-aa6f-4a35-b776-45c3715a6c5e","8ef68cbb-e039-49d6-b15e-be81559f4b55","14fad6b1-6a7c-4ae8-ae4b-d9569e31e04a"],"columns":{"14fad6b1-6a7c-4ae8-ae4b-d9569e31e04a":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"352a2c02-aa6f-4a35-b776-45c3715a6c5e":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"14fad6b1-6a7c-4ae8-ae4b-d9569e31e04a","type":"column"},"orderDirection":"desc","otherBucket":true,"size":67},"scale":"ordinal","sourceField":"geo.srcdest"},"8ef68cbb-e039-49d6-b15e-be81559f4b55":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["14fad6b1-6a7c-4ae8-ae4b-d9569e31e04a"],"layerId":"a3ac0e3d-63ec-49b2-882a-b34680a967ba","position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"splitAccessor":"352a2c02-aa6f-4a35-b776-45c3715a6c5e","xAccessor":"8ef68cbb-e039-49d6-b15e-be81559f4b55"}],"legend":{"isVisible":true,"position":"top","showSingleSeries":true},"preferredSeriesType":"bar_percentage_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_bar_verticalpercentage","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"aa4b8da0-bd9f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-a3ac0e3d-63ec-49b2-882a-b34680a967ba","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,523],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzIsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"037b7937-790b-4d2d-94a5-7f5837a6ef05":{"columnOrder":["b3d46616-75e0-419e-97ea-91148961ef94","025a0fb3-dc44-4f5c-b517-2d71d3f26f14","c476db14-0cc1-40ec-863e-d2779256a407"],"columns":{"025a0fb3-dc44-4f5c-b517-2d71d3f26f14":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"b3d46616-75e0-419e-97ea-91148961ef94":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"c476db14-0cc1-40ec-863e-d2779256a407","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"geo.srcdest"},"c476db14-0cc1-40ec-863e-d2779256a407":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"lucene","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["c476db14-0cc1-40ec-863e-d2779256a407"],"layerId":"037b7937-790b-4d2d-94a5-7f5837a6ef05","position":"top","seriesType":"bar_stacked","showGridlines":false,"splitAccessor":"b3d46616-75e0-419e-97ea-91148961ef94","xAccessor":"025a0fb3-dc44-4f5c-b517-2d71d3f26f14"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_barchart_vertical","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"2d3f1250-bd9f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-037b7937-790b-4d2d-94a5-7f5837a6ef05","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,527],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzMsNF0="} -{"attributes":{"description":null,"state":{"datasourceStates":{"indexpattern":{"layers":{"212688dc-e7d7-4875-a221-09e6191bdcf7":{"columnOrder":["05410186-83c4-460a-82bf-dd7e9d998c9f","e8659feb-1db4-4706-9147-ac1fd513a1ba","c9a32fd0-a465-44fb-8adc-b957fb72cad5"],"columns":{"05410186-83c4-460a-82bf-dd7e9d998c9f":{"dataType":"string","isBucketed":true,"label":"Top values of extension.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"c9a32fd0-a465-44fb-8adc-b957fb72cad5","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"extension.raw"},"c9a32fd0-a465-44fb-8adc-b957fb72cad5":{"dataType":"number","isBucketed":false,"label":"Average of bytes","operationType":"average","scale":"ratio","sourceField":"bytes"},"e8659feb-1db4-4706-9147-ac1fd513a1ba":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["c9a32fd0-a465-44fb-8adc-b957fb72cad5"],"layerId":"212688dc-e7d7-4875-a221-09e6191bdcf7","position":"top","seriesType":"bar_horizontal_stacked","showGridlines":false,"splitAccessor":"05410186-83c4-460a-82bf-dd7e9d998c9f","xAccessor":"e8659feb-1db4-4706-9147-ac1fd513a1ba"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_horizontal_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_barhorizontal_stacked","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"edd5a560-bda4-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-212688dc-e7d7-4875-a221-09e6191bdcf7","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,531],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzQsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"7ab04fd4-04da-4023-8899-d94620193607":{"columnOrder":["0ab2d5f8-11f0-4b25-b8bb-3127a3b8d4c7","9eb851dd-31f6-481a-84d1-9ecce53a6ad2","f6b271a7-509b-4c37-b7b6-ac5be4bcb49a"],"columns":{"0ab2d5f8-11f0-4b25-b8bb-3127a3b8d4c7":{"dataType":"string","isBucketed":true,"label":"Top values of request.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"f6b271a7-509b-4c37-b7b6-ac5be4bcb49a","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"request.raw"},"9eb851dd-31f6-481a-84d1-9ecce53a6ad2":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"f6b271a7-509b-4c37-b7b6-ac5be4bcb49a":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["f6b271a7-509b-4c37-b7b6-ac5be4bcb49a"],"layerId":"7ab04fd4-04da-4023-8899-d94620193607","position":"top","seriesType":"bar_horizontal_percentage_stacked","showGridlines":false,"splitAccessor":"0ab2d5f8-11f0-4b25-b8bb-3127a3b8d4c7","xAccessor":"9eb851dd-31f6-481a-84d1-9ecce53a6ad2"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_horizontal_percentage_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_barhorizontalpercentage","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"2c25a450-bda5-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-7ab04fd4-04da-4023-8899-d94620193607","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,535],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzUsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"037b7937-790b-4d2d-94a5-7f5837a6ef05":{"columnOrder":["b3d46616-75e0-419e-97ea-91148961ef94","025a0fb3-dc44-4f5c-b517-2d71d3f26f14","c476db14-0cc1-40ec-863e-d2779256a407"],"columns":{"025a0fb3-dc44-4f5c-b517-2d71d3f26f14":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"b3d46616-75e0-419e-97ea-91148961ef94":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"c476db14-0cc1-40ec-863e-d2779256a407","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"geo.srcdest"},"c476db14-0cc1-40ec-863e-d2779256a407":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"lucene","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["c476db14-0cc1-40ec-863e-d2779256a407"],"layerId":"037b7937-790b-4d2d-94a5-7f5837a6ef05","position":"top","seriesType":"bar_stacked","showGridlines":false,"splitAccessor":"b3d46616-75e0-419e-97ea-91148961ef94","xAccessor":"025a0fb3-dc44-4f5c-b517-2d71d3f26f14"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_visualization","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"e79116e0-bd9e-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-037b7937-790b-4d2d-94a5-7f5837a6ef05","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693677171,767],"type":"lens","updated_at":"2021-06-14T18:01:17.171Z","version":"WzE3NDEsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"72783e5f-aa7b-4b8a-b26c-a3e4d051340e":{"columnOrder":["0f619652-9ff1-453b-ae1f-7371baa82f55"],"columns":{"0f619652-9ff1-453b-ae1f-7371baa82f55":{"dataType":"number","isBucketed":false,"label":"Average of phpmemory","operationType":"average","params":{"format":{"id":"percent","params":{"decimals":10}}},"scale":"ratio","sourceField":"phpmemory"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"accessor":"0f619652-9ff1-453b-ae1f-7371baa82f55","layerId":"72783e5f-aa7b-4b8a-b26c-a3e4d051340e"}},"title":"lens_metric","visualizationType":"lnsMetric"},"coreMigrationVersion":"7.13.2","id":"974fb950-bda5-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-72783e5f-aa7b-4b8a-b26c-a3e4d051340e","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,543],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzcsNF0="} -{"attributes":{"description":null,"state":{"datasourceStates":{"indexpattern":{"layers":{"bb478774-f9e8-4380-bf3a-f4a89a4d79b5":{"columnOrder":["4573ae8f-8f9d-4918-b496-c08f7102c6e1","cebdc6c5-3587-4f57-879c-dd63ea99cf03"],"columns":{"4573ae8f-8f9d-4918-b496-c08f7102c6e1":{"dataType":"string","isBucketed":true,"label":"Top values of machine.os.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"cebdc6c5-3587-4f57-879c-dd63ea99cf03","type":"column"},"orderDirection":"desc","otherBucket":true,"size":5},"scale":"ordinal","sourceField":"machine.os.raw"},"cebdc6c5-3587-4f57-879c-dd63ea99cf03":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["4573ae8f-8f9d-4918-b496-c08f7102c6e1"],"layerId":"bb478774-f9e8-4380-bf3a-f4a89a4d79b5","legendDisplay":"default","metric":"cebdc6c5-3587-4f57-879c-dd63ea99cf03","nestedLegend":false,"numberDisplay":"percent"}],"shape":"pie"}},"title":"lens_piechart","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.2","id":"51b63040-bda5-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-bb478774-f9e8-4380-bf3a-f4a89a4d79b5","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,547],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzgsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"a1b85651-db29-441f-8f08-cf1b9b6f7bf1":{"columnOrder":["2b3bdc32-0be0-49dc-993d-4630b0bd1185","b85cc0a7-0b18-4b08-b7f0-c617f80cf903","03203126-8286-444d-b5b3-4f399eaf2c26","44305317-61e8-4600-9f3c-ac4070e0c529"],"columns":{"03203126-8286-444d-b5b3-4f399eaf2c26":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"2b3bdc32-0be0-49dc-993d-4630b0bd1185":{"dataType":"string","isBucketed":true,"label":"Top values of extension.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"44305317-61e8-4600-9f3c-ac4070e0c529","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"extension.raw"},"44305317-61e8-4600-9f3c-ac4070e0c529":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"b85cc0a7-0b18-4b08-b7f0-c617f80cf903":{"dataType":"string","isBucketed":true,"label":"Top values of machine.os.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"44305317-61e8-4600-9f3c-ac4070e0c529","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"machine.os.raw"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"columns":[{"columnId":"2b3bdc32-0be0-49dc-993d-4630b0bd1185","isTransposed":false},{"columnId":"b85cc0a7-0b18-4b08-b7f0-c617f80cf903","isTransposed":false},{"columnId":"03203126-8286-444d-b5b3-4f399eaf2c26","isTransposed":false},{"columnId":"44305317-61e8-4600-9f3c-ac4070e0c529","isTransposed":false}],"layerId":"a1b85651-db29-441f-8f08-cf1b9b6f7bf1"}},"title":"lens_table","visualizationType":"lnsDatatable"},"coreMigrationVersion":"7.13.2","id":"b00679c0-bda5-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-a1b85651-db29-441f-8f08-cf1b9b6f7bf1","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,551],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2NzksNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"4fbb51e9-1f99-4b5e-b59d-60fcb547b1d9":{"columnOrder":["08a1af05-743d-480e-9056-3405b1bdda7d","bae35990-75c2-487f-94eb-d8e03d2eda33"],"columns":{"08a1af05-743d-480e-9056-3405b1bdda7d":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"bae35990-75c2-487f-94eb-d8e03d2eda33","type":"column"},"orderDirection":"desc","otherBucket":true,"size":25},"scale":"ordinal","sourceField":"geo.srcdest"},"bae35990-75c2-487f-94eb-d8e03d2eda33":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["08a1af05-743d-480e-9056-3405b1bdda7d","08a1af05-743d-480e-9056-3405b1bdda7d","08a1af05-743d-480e-9056-3405b1bdda7d"],"layerId":"4fbb51e9-1f99-4b5e-b59d-60fcb547b1d9","legendDisplay":"default","metric":"bae35990-75c2-487f-94eb-d8e03d2eda33","nestedLegend":false,"numberDisplay":"percent"}],"shape":"treemap"}},"title":"lens_treemap","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.2","id":"652ade10-bd9f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-4fbb51e9-1f99-4b5e-b59d-60fcb547b1d9","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,555],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODAsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"e84503c1-4dbd-4ac6-9ac9-ad938654680f":{"columnOrder":["38c73fd4-6330-4162-8a7b-1a059f005da8","e8d4dad2-ac30-4741-aca0-904eb1fc8455","70433aa7-3c2c-4e6c-b8cf-4218c995cff5"],"columns":{"38c73fd4-6330-4162-8a7b-1a059f005da8":{"dataType":"string","isBucketed":true,"label":"Top values of url.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"70433aa7-3c2c-4e6c-b8cf-4218c995cff5","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"url.raw"},"70433aa7-3c2c-4e6c-b8cf-4218c995cff5":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"e8d4dad2-ac30-4741-aca0-904eb1fc8455":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["70433aa7-3c2c-4e6c-b8cf-4218c995cff5"],"layerId":"e84503c1-4dbd-4ac6-9ac9-ad938654680f","position":"top","seriesType":"line","showGridlines":false,"splitAccessor":"38c73fd4-6330-4162-8a7b-1a059f005da8","xAccessor":"e8d4dad2-ac30-4741-aca0-904eb1fc8455"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"line","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_line_chart","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"7f3b5fb0-be2f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-e84503c1-4dbd-4ac6-9ac9-ad938654680f","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,559],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODEsNF0="} -{"attributes":{"fieldAttrs":"{\"speaker\":{\"count\":1},\"text_entry\":{\"count\":6},\"type\":{\"count\":3}}","fields":"[]","runtimeFieldMap":"{}","title":"shakespeare"},"coreMigrationVersion":"7.13.2","id":"4e937b20-619d-11eb-aebf-c306684b328d","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1623693556928,560],"type":"index-pattern","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODIsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"d35680ce-c285-4fae-89d6-1245671bbc78":{"columnOrder":["2bcbffbe-c24d-4e74-8a03-9a6da7db70c0","6b00fde6-bfaa-4da1-beeb-bfd85a4cb2ff","8319857d-a03b-4158-bdf1-2a788e510445"],"columns":{"2bcbffbe-c24d-4e74-8a03-9a6da7db70c0":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"6b00fde6-bfaa-4da1-beeb-bfd85a4cb2ff":{"dataType":"number","isBucketed":false,"label":"Average of bytes","operationType":"average","scale":"ratio","sourceField":"bytes"},"8319857d-a03b-4158-bdf1-2a788e510445":{"dataType":"number","isBucketed":false,"label":"Sum of bytes_scripted","operationType":"sum","params":{"format":{"id":"number","params":{"decimals":2}}},"scale":"ratio","sourceField":"bytes_scripted"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["6b00fde6-bfaa-4da1-beeb-bfd85a4cb2ff","8319857d-a03b-4158-bdf1-2a788e510445"],"layerId":"d35680ce-c285-4fae-89d6-1245671bbc78","position":"top","seriesType":"area","showGridlines":false,"xAccessor":"2bcbffbe-c24d-4e74-8a03-9a6da7db70c0","yConfig":[{"axisMode":"auto","forAccessor":"8319857d-a03b-4158-bdf1-2a788e510445"}]}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"area","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_area_chart","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-d35680ce-c285-4fae-89d6-1245671bbc78","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,564],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODMsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"70bd567e-8e67-4696-a406-313b06344fa9":{"columnOrder":["96ddedfb-043b-479e-a746-600e72ab546e","d325b7da-4266-4035-9b13-5f853615149a","2fc1391b-17d1-4c49-9ddc-06ff307e3520","1cc6f19c-cbcb-4abd-b56d-1a2f9deae5f3"],"columns":{"1cc6f19c-cbcb-4abd-b56d-1a2f9deae5f3":{"dataType":"number","isBucketed":false,"label":"Average of machine.ram","operationType":"average","scale":"ratio","sourceField":"machine.ram"},"2fc1391b-17d1-4c49-9ddc-06ff307e3520":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"96ddedfb-043b-479e-a746-600e72ab546e":{"dataType":"string","isBucketed":true,"label":"Top values of machine.os.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"2fc1391b-17d1-4c49-9ddc-06ff307e3520","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"machine.os.raw"},"d325b7da-4266-4035-9b13-5f853615149a":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["2fc1391b-17d1-4c49-9ddc-06ff307e3520","1cc6f19c-cbcb-4abd-b56d-1a2f9deae5f3"],"layerId":"70bd567e-8e67-4696-a406-313b06344fa9","position":"top","seriesType":"area_stacked","showGridlines":false,"splitAccessor":"96ddedfb-043b-479e-a746-600e72ab546e","xAccessor":"d325b7da-4266-4035-9b13-5f853615149a"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"area_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_area_stacked","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"dd315430-be2f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-70bd567e-8e67-4696-a406-313b06344fa9","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,568],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODQsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\"},\"panelIndex\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsPie\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"26e2cf99-d931-4320-9e15-9dbc148f3534\":{\"columns\":{\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\":{\"label\":\"Top values of url.raw\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url.raw\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"beb72af1-239c-46d8-823b-b00d1e2ace43\":{\"label\":\"Unique count of geo.srcdest\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"geo.srcdest\",\"isBucketed\":false}},\"columnOrder\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"beb72af1-239c-46d8-823b-b00d1e2ace43\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"26e2cf99-d931-4320-9e15-9dbc148f3534\",\"groups\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\"],\"metric\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534\"}]},\"enhancements\":{},\"type\":\"lens\"},\"panelRefName\":\"panel_2e80716f-c1b6-46f2-be2b-35db744b5031\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"da8843e0-6789-4aae-bcd0-81f270538719\"},\"panelIndex\":\"da8843e0-6789-4aae-bcd0-81f270538719\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_da8843e0-6789-4aae-bcd0-81f270538719\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},\"panelIndex\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"869754a7-edf0-478f-a7f1-80374f63108a\"},\"panelIndex\":\"869754a7-edf0-478f-a7f1-80374f63108a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_869754a7-edf0-478f-a7f1-80374f63108a\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"67111cf4-338e-453f-8621-e8dea64082d1\"},\"panelIndex\":\"67111cf4-338e-453f-8621-e8dea64082d1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_67111cf4-338e-453f-8621-e8dea64082d1\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},\"panelIndex\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\"},\"panelIndex\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_88847944-ae1b-45fd-b102-3b45f9bea04b\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\"},\"panelIndex\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5a7924c7-eac0-4573-9199-fecec5b82e9e\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\"},\"panelIndex\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f8f49591-f071-4a96-b1ed-cd65daff5648\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"9f357f47-c2a0-421f-a456-9583c40837ab\"},\"panelIndex\":\"9f357f47-c2a0-421f-a456-9583c40837ab\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9f357f47-c2a0-421f-a456-9583c40837ab\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\"},\"panelIndex\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6cb383e9-1e80-44f9-80d5-7b8c585668db\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\"},\"panelIndex\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_57f5f0bf-6610-4599-aad4-37484640b5e2\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},\"panelIndex\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"dd1718fd-74ee-4032-851b-db97e893825d\"},\"panelIndex\":\"dd1718fd-74ee-4032-851b-db97e893825d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dd1718fd-74ee-4032-851b-db97e893825d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"98a556ee-078b-4e03-93a8-29996133cdcb\"},\"panelIndex\":\"98a556ee-078b-4e03-93a8-29996133cdcb\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\":{\"columns\":{\"ce9117a2-773c-474c-8fb1-18940cf58b38\":{\"label\":\"Top values of type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"type\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false}},\"a3d10552-e352-40d0-a156-e86112c0501a\":{\"label\":\"Top values of _type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"_type\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"},\"9c5db2f3-9eb0-4667-9a74-3318301de251\":{\"label\":\"Sum of bytes\",\"dataType\":\"number\",\"operationType\":\"sum\",\"sourceField\":\"bytes\",\"isBucketed\":false,\"scale\":\"ratio\"}},\"columnOrder\":[\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"a3d10552-e352-40d0-a156-e86112c0501a\",\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\",\"accessors\":[\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"splitAccessor\":\"a3d10552-e352-40d0-a156-e86112c0501a\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd\"}]},\"enhancements\":{},\"type\":\"lens\"}},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},\"panelIndex\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},{\"version\":\"7.13.1\",\"type\":\"map\",\"gridData\":{\"x\":0,\"y\":120,\"w\":24,\"h\":15,\"i\":\"dcc0defa-3376-465c-9b5b-2ba69528848c\"},\"panelIndex\":\"dcc0defa-3376-465c-9b5b-2ba69528848c\",\"embeddableConfig\":{\"mapCenter\":{\"lat\":19.94277,\"lon\":0,\"zoom\":1.56},\"mapBuffer\":{\"minLon\":-210.32666,\"minLat\":-64.8435,\"maxLon\":210.32666,\"maxLat\":95.13806},\"isLayerTOCOpen\":true,\"openTOCDetails\":[],\"hiddenLayers\":[],\"enhancements\":{}},\"panelRefName\":\"panel_dcc0defa-3376-465c-9b5b-2ba69528848c\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"lens_maps_dashboard_logstash","version":1},"coreMigrationVersion":"7.13.2","id":"16d86080-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:panel_2e80716f-c1b6-46f2-be2b-35db744b5031","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534","type":"index-pattern"},{"id":"aa4b8da0-bd9f-11eb-9520-1b4c3ca6a781","name":"da8843e0-6789-4aae-bcd0-81f270538719:panel_da8843e0-6789-4aae-bcd0-81f270538719","type":"lens"},{"id":"2d3f1250-bd9f-11eb-9520-1b4c3ca6a781","name":"adcd4418-7299-4efa-b369-5f71a7b4ebe0:panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0","type":"lens"},{"id":"edd5a560-bda4-11eb-9520-1b4c3ca6a781","name":"869754a7-edf0-478f-a7f1-80374f63108a:panel_869754a7-edf0-478f-a7f1-80374f63108a","type":"lens"},{"id":"2c25a450-bda5-11eb-9520-1b4c3ca6a781","name":"67111cf4-338e-453f-8621-e8dea64082d1:panel_67111cf4-338e-453f-8621-e8dea64082d1","type":"lens"},{"id":"e79116e0-bd9e-11eb-9520-1b4c3ca6a781","name":"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d:panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d","type":"lens"},{"id":"974fb950-bda5-11eb-9520-1b4c3ca6a781","name":"88847944-ae1b-45fd-b102-3b45f9bea04b:panel_88847944-ae1b-45fd-b102-3b45f9bea04b","type":"lens"},{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"5a7924c7-eac0-4573-9199-fecec5b82e9e:panel_5a7924c7-eac0-4573-9199-fecec5b82e9e","type":"lens"},{"id":"51b63040-bda5-11eb-9520-1b4c3ca6a781","name":"f8f49591-f071-4a96-b1ed-cd65daff5648:panel_f8f49591-f071-4a96-b1ed-cd65daff5648","type":"lens"},{"id":"b00679c0-bda5-11eb-9520-1b4c3ca6a781","name":"9f357f47-c2a0-421f-a456-9583c40837ab:panel_9f357f47-c2a0-421f-a456-9583c40837ab","type":"lens"},{"id":"652ade10-bd9f-11eb-9520-1b4c3ca6a781","name":"6cb383e9-1e80-44f9-80d5-7b8c585668db:panel_6cb383e9-1e80-44f9-80d5-7b8c585668db","type":"lens"},{"id":"7f3b5fb0-be2f-11eb-9520-1b4c3ca6a781","name":"57f5f0bf-6610-4599-aad4-37484640b5e2:panel_57f5f0bf-6610-4599-aad4-37484640b5e2","type":"lens"},{"id":"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781","name":"32d3ab66-52e1-44e3-8c1f-1dccff3c5692:panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692","type":"lens"},{"id":"dd315430-be2f-11eb-9520-1b4c3ca6a781","name":"dd1718fd-74ee-4032-851b-db97e893825d:panel_dd1718fd-74ee-4032-851b-db97e893825d","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd","type":"index-pattern"},{"id":"0dbbf8b0-be3c-11eb-9520-1b4c3ca6a781","name":"62a0f0b0-3589-4cef-807b-b1b4258b7a9b:panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b","type":"lens"},{"id":"0c5974f0-be5c-11eb-9520-1b4c3ca6a781","name":"dcc0defa-3376-465c-9b5b-2ba69528848c:panel_dcc0defa-3376-465c-9b5b-2ba69528848c","type":"map"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,590],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODUsNF0="} -{"attributes":{"fieldAttrs":"{}","fields":"[]","runtimeFieldMap":"{}","title":".kibana"},"coreMigrationVersion":"7.13.2","id":"1773aa90-be66-11eb-9520-1b4c3ca6a781","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1623693556928,591],"type":"index-pattern","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODYsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"shakespeare_areachart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"shakespeare_areachart\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"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,\"filter\":true},\"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,\"mode\":\"stacked\",\"type\":\"histogram\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"data\":{\"id\":\"2\",\"label\":\"Count\"},\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"2\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"play_name\",\"size\":20,\"order\":\"desc\",\"orderBy\":\"2\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"play_name\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"2\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"185283c0-619e-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,593],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODcsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"by_reference_logstash","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"by_reference_logstash\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true}],\"radiusRatio\":0,\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2014-07-15T12:33:21.084Z\",\"to\":\"2019-01-28T03:18:12.440Z\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"response.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}]}"},"coreMigrationVersion":"7.13.2","id":"1885abb0-ca2b-11eb-bf5e-3de94e83d4f0","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623415891791,140],"type":"visualization","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0MzgsNF0="} -{"attributes":{"color":"#f44fcf","description":"","name":"shakespeare"},"coreMigrationVersion":"7.13.2","id":"42b4cec0-be32-11eb-9520-1b4c3ca6a781","references":[],"sort":[1623693556928,594],"type":"tag","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODgsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"3338dd55-4007-4be5-908d-25722b6174cb":{"columnOrder":["6c83b0c2-5834-4619-888c-9e8a08e47d42","b25e7497-c188-4c25-b002-1fd5bd69e76d"],"columns":{"6c83b0c2-5834-4619-888c-9e8a08e47d42":{"dataType":"string","isBucketed":true,"label":"Top values of speaker","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"b25e7497-c188-4c25-b002-1fd5bd69e76d","type":"column"},"orderDirection":"desc","otherBucket":false,"size":90},"scale":"ordinal","sourceField":"speaker"},"b25e7497-c188-4c25-b002-1fd5bd69e76d":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["6c83b0c2-5834-4619-888c-9e8a08e47d42","6c83b0c2-5834-4619-888c-9e8a08e47d42","6c83b0c2-5834-4619-888c-9e8a08e47d42"],"layerId":"3338dd55-4007-4be5-908d-25722b6174cb","legendDisplay":"default","metric":"b25e7497-c188-4c25-b002-1fd5bd69e76d","nestedLegend":false,"numberDisplay":"percent"}],"palette":{"name":"complimentary","type":"palette"},"shape":"treemap"}},"title":"lens_shakespeare_treemap","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.2","id":"31e9f2f0-be32-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-3338dd55-4007-4be5-908d-25722b6174cb","type":"index-pattern"},{"id":"42b4cec0-be32-11eb-9520-1b4c3ca6a781","name":"tag-ref-42b4cec0-be32-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,598],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2ODksNF0="} -{"attributes":{"accessCount":0,"accessDate":1622059178542,"createDate":1622059178542,"url":"/app/dashboards#/view/73398a90-619e-11eb-aebf-c306684b328d?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:%272015-09-20T01:56:56.132Z%27,to:%272015-09-21T11:18:20.471Z%27))&_a=(description:%27%27,filters:!(),fullScreenMode:!f,options:(darkTheme:!f,hidePanelTitles:!f,useMargins:!t),panels:!((embeddableConfig:(enhancements:()),gridData:(h:15,i:%271%27,w:24,x:0,y:0),id:%27185283c0-619e-11eb-aebf-c306684b328d%27,panelIndex:%271%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%272%27,w:24,x:24,y:0),id:%2733736660-619e-11eb-aebf-c306684b328d%27,panelIndex:%272%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%273%27,w:24,x:0,y:15),id:%27622ac7f0-619e-11eb-aebf-c306684b328d%27,panelIndex:%273%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%274%27,w:24,x:24,y:15),id:%27712ebbe0-619d-11eb-aebf-c306684b328d%27,panelIndex:%274%27,type:search,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%275%27,w:24,x:0,y:30),id:ddacc820-619d-11eb-aebf-c306684b328d,panelIndex:%275%27,type:search,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%276%27,w:24,x:24,y:30),id:f852d570-619d-11eb-aebf-c306684b328d,panelIndex:%276%27,type:search,version:%277.13.1%27)),query:(language:kuery,query:%27%27),tags:!(),timeRestore:!f,title:shakespeare_dashboard,viewMode:view)"},"coreMigrationVersion":"7.13.2","id":"32a03249ec3a048108d4b5a427a37fc8","references":[],"sort":[1623693556928,599],"type":"url","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTAsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"shakespeare_piechart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"shakespeare_piechart\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":true,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"play_name\",\"size\":15,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"33736660-619e-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,601],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTEsNF0="} -{"attributes":{"color":"#7b01cf","description":"","name":"By reference"},"coreMigrationVersion":"7.13.2","id":"39d2c190-ca2b-11eb-bf5e-3de94e83d4f0","references":[],"sort":[1623415891791,147],"type":"tag","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NDIsNF0="} -{"attributes":{"fieldAttrs":"{}","fields":"[]","runtimeFieldMap":"{}","title":"shakespeare"},"coreMigrationVersion":"7.13.2","id":"39d52f60-ca27-11eb-bf5e-3de94e83d4f0","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1623415891791,148],"type":"index-pattern","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NDMsNF0="} -{"attributes":{"columns":[],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"alias\":null,\"negate\":false,\"disabled\":false,\"type\":\"phrase\",\"key\":\"ip\",\"params\":{\"query\":\"57.237.11.219\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"ip\":\"57.237.11.219\"}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"drilldown_saved_search","version":1},"coreMigrationVersion":"7.13.2","id":"4acce030-ca2a-11eb-bf5e-3de94e83d4f0","migrationVersion":{"search":"7.9.3"},"references":[{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"sort":[1623415891791,151],"type":"search","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NDQsNF0="} -{"attributes":{"description":"","layerListJSON":"[{\"sourceDescriptor\":{\"type\":\"EMS_TMS\",\"isAutoSelect\":true},\"id\":\"e0d51731-2bb3-4fed-92af-65f93c3e7e58\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"style\":{\"type\":\"TILE\"},\"type\":\"VECTOR_TILE\"},{\"sourceDescriptor\":{\"geoField\":\"geo.coordinates\",\"filterByMapBounds\":true,\"scalingType\":\"CLUSTERS\",\"topHitsSplitField\":\"\",\"topHitsSize\":1,\"id\":\"142e0a6b-53c9-4f66-a65d-fced755318de\",\"type\":\"ES_SEARCH\",\"applyGlobalQuery\":true,\"applyGlobalTime\":true,\"tooltipProperties\":[],\"sortField\":\"\",\"sortOrder\":\"desc\",\"indexPatternRefName\":\"layer_1_source_index_pattern\"},\"id\":\"ca96ce4a-4e73-46a5-bcc8-99a39d227030\",\"label\":null,\"minZoom\":9,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"icon\":{\"type\":\"STATIC\",\"options\":{\"value\":\"marker\"}},\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#CA8EAE\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#934193\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":6}},\"iconOrientation\":{\"type\":\"STATIC\",\"options\":{\"orientation\":0}},\"labelText\":{\"type\":\"STATIC\",\"options\":{\"value\":\"\"}},\"labelColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#000000\"}},\"labelSize\":{\"type\":\"STATIC\",\"options\":{\"size\":14}},\"labelBorderColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"symbolizeAs\":{\"options\":{\"value\":\"circle\"}},\"labelBorderSize\":{\"options\":{\"size\":\"SMALL\"}}},\"isTimeAware\":true},\"type\":\"BLENDED_VECTOR\",\"joins\":[]}]","mapStateJSON":"{\"zoom\":1.38,\"center\":{\"lon\":0,\"lat\":19.94277},\"timeFilters\":{\"from\":\"2014-07-15T12:33:21.084Z\",\"to\":\"2019-01-28T03:18:12.440Z\"},\"refreshConfig\":{\"isPaused\":true,\"interval\":0},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"settings\":{\"autoFitToDataBounds\":false,\"backgroundColor\":\"#ffffff\",\"disableInteractive\":false,\"disableTooltipControl\":false,\"hideToolbarOverlay\":false,\"hideLayerControl\":false,\"hideViewControl\":false,\"initialLocation\":\"LAST_SAVED_LOCATION\",\"fixedLocation\":{\"lat\":0,\"lon\":0,\"zoom\":2},\"browserLocation\":{\"zoom\":2},\"maxZoom\":24,\"minZoom\":0,\"showScaleControl\":false,\"showSpatialFilters\":true,\"spatialFiltersAlpa\":0.3,\"spatialFiltersFillColor\":\"#DA8B45\",\"spatialFiltersLineColor\":\"#DA8B45\"}}","title":"Logstash_map_by_reference","uiStateJSON":"{\"isLayerTOCOpen\":true,\"openTOCDetails\":[]}"},"coreMigrationVersion":"7.13.2","id":"a53a2db0-ca2b-11eb-bf5e-3de94e83d4f0","migrationVersion":{"map":"7.12.0"},"references":[{"id":"39d2c190-ca2b-11eb-bf5e-3de94e83d4f0","name":"tag-ref-39d2c190-ca2b-11eb-bf5e-3de94e83d4f0","type":"tag"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"layer_1_source_index_pattern","type":"index-pattern"}],"sort":[1623415891791,154],"type":"map","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NDUsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.12.1\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"7c29a321-2a9a-412b-9ed1-1d0a1f66ea63\"},\"panelIndex\":\"7c29a321-2a9a-412b-9ed1-1d0a1f66ea63\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.12.1\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"f2d1feb1-d807-46b1-90ac-96d4a9edb6b1\"},\"panelIndex\":\"f2d1feb1-d807-46b1-90ac-96d4a9edb6b1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.12.1\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"a3530107-8b1c-4e94-8f99-e239fa40a09c\"},\"panelIndex\":\"a3530107-8b1c-4e94-8f99-e239fa40a09c\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"b14188e0-53d6-433e-874f-b1be7c97487c\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"by_reference_going_to_value\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}},{\"eventId\":\"60cba413-1793-4dd3-b072-9d53655d5522\",\"triggers\":[\"SELECT_RANGE_TRIGGER\"],\"action\":{\"name\":\"Goto_Discover\",\"config\":{\"url\":{\"template\":\"http://localhost:5601/app/discover#/view/b3288100-ca2c-11eb-bf5e-3de94e83d4f0?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(columns:!(),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',key:geo.dest,negate:!f,params:(query:US),type:phrase),query:(match_phrase:(geo.dest:US)))),index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}}]}}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.12.1\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"77245314-9495-4625-9f53-0946150e26d4\"},\"panelIndex\":\"77245314-9495-4625-9f53-0946150e26d4\",\"embeddableConfig\":{\"mapCenter\":{\"lat\":19.94277,\"lon\":0,\"zoom\":1.38},\"mapBuffer\":{\"minLon\":-214.7723,\"minLat\":-74.644155,\"maxLon\":214.7723,\"maxLat\":102.864625},\"isLayerTOCOpen\":true,\"openTOCDetails\":[],\"hiddenLayers\":[],\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"9b61b9d4-20a3-4bca-9697-1097c524a943\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"By_reference_to_value\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}}},\"panelRefName\":\"panel_3\"}]","timeRestore":false,"title":"by_reference_drilldown","version":1},"coreMigrationVersion":"7.13.2","id":"3b844220-ca2b-11eb-bf5e-3de94e83d4f0","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"08dec860-ca29-11eb-bf5e-3de94e83d4f0","name":"drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:b14188e0-53d6-433e-874f-b1be7c97487c:dashboardId","type":"dashboard"},{"id":"35ce3b30-ca29-11eb-bf5e-3de94e83d4f0","name":"drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:9b61b9d4-20a3-4bca-9697-1097c524a943:dashboardId","type":"dashboard"},{"id":"4acce030-ca2a-11eb-bf5e-3de94e83d4f0","name":"panel_0","type":"search"},{"id":"0abce1c0-ca2a-11eb-bf5e-3de94e83d4f0","name":"panel_1","type":"search"},{"id":"1885abb0-ca2b-11eb-bf5e-3de94e83d4f0","name":"panel_2","type":"visualization"},{"id":"a53a2db0-ca2b-11eb-bf5e-3de94e83d4f0","name":"panel_3","type":"map"},{"id":"39d2c190-ca2b-11eb-bf5e-3de94e83d4f0","name":"tag-39d2c190-ca2b-11eb-bf5e-3de94e83d4f0","type":"tag"}],"sort":[1623415891791,162],"type":"dashboard","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NDYsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"a7a8f2fb-066e-4023-9755-821e84560b4a":{"columnOrder":["ee46f645-0af0-4b5d-8ed3-2557c98c9c12","91859a54-9b88-4478-8c80-0779fe165fba","62a4dea1-fab9-45ff-93e0-b99cfff719d5"],"columns":{"62a4dea1-fab9-45ff-93e0-b99cfff719d5":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"91859a54-9b88-4478-8c80-0779fe165fba":{"dataType":"string","isBucketed":true,"label":"Top values of play_name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"62a4dea1-fab9-45ff-93e0-b99cfff719d5","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"play_name"},"ee46f645-0af0-4b5d-8ed3-2557c98c9c12":{"dataType":"string","isBucketed":true,"label":"Top values of speaker","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"62a4dea1-fab9-45ff-93e0-b99cfff719d5","type":"column"},"orderDirection":"desc","otherBucket":true,"size":25},"scale":"ordinal","sourceField":"speaker"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["ee46f645-0af0-4b5d-8ed3-2557c98c9c12","ee46f645-0af0-4b5d-8ed3-2557c98c9c12","ee46f645-0af0-4b5d-8ed3-2557c98c9c12","ee46f645-0af0-4b5d-8ed3-2557c98c9c12","91859a54-9b88-4478-8c80-0779fe165fba"],"layerId":"a7a8f2fb-066e-4023-9755-821e84560b4a","legendDisplay":"default","metric":"62a4dea1-fab9-45ff-93e0-b99cfff719d5","nestedLegend":false,"numberDisplay":"percent"}],"palette":{"name":"kibana_palette","type":"palette"},"shape":"pie"}},"title":"lens_shakespeare_piechart","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.2","id":"b5bd5050-be31-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-a7a8f2fb-066e-4023-9755-821e84560b4a","type":"index-pattern"},{"id":"42b4cec0-be32-11eb-9520-1b4c3ca6a781","name":"tag-ref-42b4cec0-be32-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,605],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTIsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"c4b1daae-a3af-4136-969e-8485d4ba53f9\"},\"panelIndex\":\"c4b1daae-a3af-4136-969e-8485d4ba53f9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_c4b1daae-a3af-4136-969e-8485d4ba53f9\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"f092b002-182e-49b8-bcc4-58f5233e041b\"},\"panelIndex\":\"f092b002-182e-49b8-bcc4-58f5233e041b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f092b002-182e-49b8-bcc4-58f5233e041b\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"lens_shakespeare_dashboard","version":1},"coreMigrationVersion":"7.13.2","id":"43fae350-be32-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"b5bd5050-be31-11eb-9520-1b4c3ca6a781","name":"c4b1daae-a3af-4136-969e-8485d4ba53f9:panel_c4b1daae-a3af-4136-969e-8485d4ba53f9","type":"lens"},{"id":"31e9f2f0-be32-11eb-9520-1b4c3ca6a781","name":"f092b002-182e-49b8-bcc4-58f5233e041b:panel_f092b002-182e-49b8-bcc4-58f5233e041b","type":"lens"},{"id":"42b4cec0-be32-11eb-9520-1b4c3ca6a781","name":"tag-42b4cec0-be32-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,609],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTMsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"3\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"5\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"6\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"7\",\"w\":24,\"x\":0,\"y\":45},\"panelIndex\":\"7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"8\",\"w\":24,\"x\":24,\"y\":45},\"panelIndex\":\"8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"9\",\"w\":24,\"x\":0,\"y\":60},\"panelIndex\":\"9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"10\",\"w\":24,\"x\":24,\"y\":60},\"panelIndex\":\"10\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_10\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"11\",\"w\":24,\"x\":0,\"y\":75},\"panelIndex\":\"11\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_11\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"12\",\"w\":24,\"x\":24,\"y\":75},\"panelIndex\":\"12\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_12\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"13\",\"w\":24,\"x\":0,\"y\":90},\"panelIndex\":\"13\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"14\",\"w\":24,\"x\":24,\"y\":90},\"panelIndex\":\"14\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_14\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"15\",\"w\":24,\"x\":0,\"y\":105},\"panelIndex\":\"15\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"16\",\"w\":24,\"x\":24,\"y\":105},\"panelIndex\":\"16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_16\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"17\",\"w\":24,\"x\":0,\"y\":120},\"panelIndex\":\"17\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"18\",\"w\":24,\"x\":24,\"y\":120},\"panelIndex\":\"18\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"19\",\"w\":24,\"x\":0,\"y\":135},\"panelIndex\":\"19\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_19\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"20\",\"w\":24,\"x\":24,\"y\":135},\"panelIndex\":\"20\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_20\"}]","timeRestore":false,"title":"logstash_dashboard_withouttime","version":1},"coreMigrationVersion":"7.13.2","id":"5d3410c0-6249-11eb-aebf-c306684b328d","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"36b91810-6239-11eb-aebf-c306684b328d","name":"1:panel_1","type":"visualization"},{"id":"0a274320-61cc-11eb-aebf-c306684b328d","name":"2:panel_2","type":"visualization"},{"id":"e4aef350-623d-11eb-aebf-c306684b328d","name":"3:panel_3","type":"visualization"},{"id":"f92e5630-623e-11eb-aebf-c306684b328d","name":"4:panel_4","type":"visualization"},{"id":"9853d4d0-623d-11eb-aebf-c306684b328d","name":"5:panel_5","type":"visualization"},{"id":"6ecb33b0-623d-11eb-aebf-c306684b328d","name":"6:panel_6","type":"visualization"},{"id":"b8e35c80-623c-11eb-aebf-c306684b328d","name":"7:panel_7","type":"visualization"},{"id":"f1bc75d0-6239-11eb-aebf-c306684b328d","name":"8:panel_8","type":"visualization"},{"id":"0d8a8860-623a-11eb-aebf-c306684b328d","name":"9:panel_9","type":"visualization"},{"id":"d79fe3d0-6239-11eb-aebf-c306684b328d","name":"10:panel_10","type":"visualization"},{"id":"318375a0-6240-11eb-aebf-c306684b328d","name":"11:panel_11","type":"visualization"},{"id":"e461eb20-6245-11eb-aebf-c306684b328d","name":"12:panel_12","type":"visualization"},{"id":"25bdc750-6242-11eb-aebf-c306684b328d","name":"13:panel_13","type":"visualization"},{"id":"71dd7bc0-6248-11eb-aebf-c306684b328d","name":"14:panel_14","type":"visualization"},{"id":"6aea48a0-6240-11eb-aebf-c306684b328d","name":"15:panel_15","type":"visualization"},{"id":"32b681f0-6241-11eb-aebf-c306684b328d","name":"16:panel_16","type":"visualization"},{"id":"ccca99e0-6244-11eb-aebf-c306684b328d","name":"17:panel_17","type":"visualization"},{"id":"a4d7be80-6245-11eb-aebf-c306684b328d","name":"18:panel_18","type":"visualization"},{"id":"c94d8440-6248-11eb-aebf-c306684b328d","name":"19:panel_19","type":"visualization"},{"id":"db6226f0-61c0-11eb-aebf-c306684b328d","name":"20:panel_20","type":"search"}],"sort":[1623693556928,630],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTQsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"shakespeare_tag_cloud","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"shakespeare_tag_cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"multiple\",\"minFontSize\":59,\"maxFontSize\":100,\"showLabel\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"type.keyword\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.2","id":"622ac7f0-619e-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,632],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTUsNF0="} -{"attributes":{"numLinks":4,"numVertices":5,"title":"logstash_graph","version":1,"wsState":"\"{\\\"selectedFields\\\":[{\\\"name\\\":\\\"machine.os.raw\\\",\\\"hopSize\\\":5,\\\"lastValidHopSize\\\":5,\\\"color\\\":\\\"#B9A888\\\",\\\"selected\\\":true,\\\"iconClass\\\":\\\"fa-folder-open-o\\\"},{\\\"name\\\":\\\"response.raw\\\",\\\"hopSize\\\":5,\\\"lastValidHopSize\\\":5,\\\"color\\\":\\\"#D6BF57\\\",\\\"selected\\\":true,\\\"iconClass\\\":\\\"fa-folder-open-o\\\"}],\\\"blocklist\\\":[],\\\"vertices\\\":[{\\\"x\\\":461.96184642905024,\\\"y\\\":284.02313214227325,\\\"label\\\":\\\"osx\\\",\\\"color\\\":\\\"#B9A888\\\",\\\"field\\\":\\\"machine.os.raw\\\",\\\"term\\\":\\\"osx\\\",\\\"parent\\\":null,\\\"size\\\":15},{\\\"x\\\":383.946159835112,\\\"y\\\":375.6063135315976,\\\"label\\\":\\\"503\\\",\\\"color\\\":\\\"#D6BF57\\\",\\\"field\\\":\\\"response.raw\\\",\\\"term\\\":\\\"503\\\",\\\"parent\\\":null,\\\"size\\\":15},{\\\"x\\\":287.104700756828,\\\"y\\\":324.1245253249895,\\\"label\\\":\\\"win 7\\\",\\\"color\\\":\\\"#B9A888\\\",\\\"field\\\":\\\"machine.os.raw\\\",\\\"term\\\":\\\"win 7\\\",\\\"parent\\\":null,\\\"size\\\":15},{\\\"x\\\":487.9986107998273,\\\"y\\\":407.07546535764254,\\\"label\\\":\\\"ios\\\",\\\"color\\\":\\\"#B9A888\\\",\\\"field\\\":\\\"machine.os.raw\\\",\\\"term\\\":\\\"ios\\\",\\\"parent\\\":null,\\\"size\\\":15},{\\\"x\\\":302.35059551806023,\\\"y\\\":211.66825720913607,\\\"label\\\":\\\"200\\\",\\\"color\\\":\\\"#D6BF57\\\",\\\"field\\\":\\\"response.raw\\\",\\\"term\\\":\\\"200\\\",\\\"parent\\\":null,\\\"size\\\":15}],\\\"links\\\":[{\\\"weight\\\":0.000881324009872165,\\\"width\\\":7.983523640193488,\\\"source\\\":4,\\\"target\\\":2},{\\\"weight\\\":0.000023386835221992895,\\\"width\\\":2,\\\"source\\\":1,\\\"target\\\":0},{\\\"weight\\\":0.0011039286029480653,\\\"width\\\":2,\\\"source\\\":1,\\\"target\\\":2},{\\\"weight\\\":0.000045596928960694605,\\\"width\\\":2,\\\"source\\\":1,\\\"target\\\":3}],\\\"urlTemplates\\\":[{\\\"url\\\":\\\"/app/discover#/?_a=(columns%3A!(_source)%2Cindex%3A%2756b34100-619d-11eb-aebf-c306684b328d%27%2Cinterval%3Aauto%2Cquery%3A(language%3Akuery%2Cquery%3A{{gquery}})%2Csort%3A!(_score%2Cdesc))\\\",\\\"description\\\":\\\"Machine OS win 7\\\",\\\"isDefault\\\":false,\\\"encoderID\\\":\\\"kql\\\",\\\"iconClass\\\":\\\"fa-share-alt\\\"}],\\\"exploreControls\\\":{\\\"useSignificance\\\":true,\\\"sampleSize\\\":2000,\\\"timeoutMillis\\\":5000,\\\"maxValuesPerDoc\\\":1,\\\"minDocCount\\\":3},\\\"indexPatternRefName\\\":\\\"indexPattern_0\\\"}\""},"coreMigrationVersion":"7.13.2","id":"6afc4b40-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"graph-workspace":"7.11.0"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexPattern_0","type":"index-pattern"}],"sort":[1623693556928,634],"type":"graph-workspace","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTYsNF0="} -{"attributes":{"buildNum":39457,"defaultIndex":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0"},"coreMigrationVersion":"7.13.2","id":"7.12.1","migrationVersion":{"config":"7.13.0"},"references":[],"sort":[1623415891791,170],"type":"config","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NTAsNF0="} -{"attributes":{"accessibility:disableAnimations":true,"buildNum":null,"dateFormat:tz":"UTC","defaultIndex":"56b34100-619d-11eb-aebf-c306684b328d","visualization:visualize:legacyChartsLibrary":true},"coreMigrationVersion":"7.13.2","id":"7.13.1","migrationVersion":{"config":"7.13.0"},"references":[],"sort":[1623693556928,635],"type":"config","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTcsNF0="} -{"attributes":{"buildNum":40943,"defaultIndex":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0"},"coreMigrationVersion":"7.13.2","id":"7.13.2","migrationVersion":{"config":"7.13.0"},"references":[],"sort":[1623693652730,748],"type":"config","updated_at":"2021-06-14T18:00:52.730Z","version":"WzE3MjQsNF0="} -{"attributes":{"columns":["_source"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[{\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"text_entry\",\"value\":\"Christendom.\",\"params\":{\"query\":\"Christendom.\",\"type\":\"phrase\"},\"disabled\":false,\"alias\":null,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"text_entry\":{\"query\":\"Christendom.\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["_score","desc"]],"title":"shakespeare_saved_search","version":1},"coreMigrationVersion":"7.13.2","id":"712ebbe0-619d-11eb-aebf-c306684b328d","migrationVersion":{"search":"7.9.3"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"sort":[1623693556928,638],"type":"search","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTgsNF0="} -{"attributes":{"columns":["play_name","speaker"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"speaker:\\\"GLOUCESTER\\\"\",\"language\":\"lucene\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["_score","desc"]],"title":"shakespeare_saved_lucene_search","version":1},"coreMigrationVersion":"7.13.2","id":"ddacc820-619d-11eb-aebf-c306684b328d","migrationVersion":{"search":"7.9.3"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,640],"type":"search","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE2OTksNF0="} -{"attributes":{"columns":["_source"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"text_entry :\\\"MORDAKE THE EARL OF FIFE, AND ELDEST SON\\\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["_score","desc"]],"title":"shakespeare_saved_kql_search","version":1},"coreMigrationVersion":"7.13.2","id":"f852d570-619d-11eb-aebf-c306684b328d","migrationVersion":{"search":"7.9.3"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623693556928,642],"type":"search","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDAsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"3\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"5\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"6\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"}]","timeRestore":false,"title":"shakespeare_dashboard","version":1},"coreMigrationVersion":"7.13.2","id":"73398a90-619e-11eb-aebf-c306684b328d","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"185283c0-619e-11eb-aebf-c306684b328d","name":"1:panel_1","type":"visualization"},{"id":"33736660-619e-11eb-aebf-c306684b328d","name":"2:panel_2","type":"visualization"},{"id":"622ac7f0-619e-11eb-aebf-c306684b328d","name":"3:panel_3","type":"visualization"},{"id":"712ebbe0-619d-11eb-aebf-c306684b328d","name":"4:panel_4","type":"search"},{"id":"ddacc820-619d-11eb-aebf-c306684b328d","name":"5:panel_5","type":"search"},{"id":"f852d570-619d-11eb-aebf-c306684b328d","name":"6:panel_6","type":"search"}],"sort":[1623693556928,649],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDEsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.srcdest\",\"value\":\"IN:US\",\"params\":{\"query\":\"IN:US\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.srcdest\":{\"query\":\"IN:US\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}]}"},"optionsJSON":"{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"3\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"5\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"6\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"7\",\"w\":24,\"x\":0,\"y\":45},\"panelIndex\":\"7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"8\",\"w\":24,\"x\":24,\"y\":45},\"panelIndex\":\"8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"9\",\"w\":24,\"x\":0,\"y\":60},\"panelIndex\":\"9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"10\",\"w\":24,\"x\":24,\"y\":60},\"panelIndex\":\"10\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_10\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"11\",\"w\":24,\"x\":0,\"y\":75},\"panelIndex\":\"11\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_11\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"12\",\"w\":24,\"x\":24,\"y\":75},\"panelIndex\":\"12\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_12\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"13\",\"w\":24,\"x\":0,\"y\":90},\"panelIndex\":\"13\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"14\",\"w\":24,\"x\":24,\"y\":90},\"panelIndex\":\"14\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_14\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"15\",\"w\":24,\"x\":0,\"y\":105},\"panelIndex\":\"15\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"16\",\"w\":24,\"x\":24,\"y\":105},\"panelIndex\":\"16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_16\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"17\",\"w\":24,\"x\":0,\"y\":120},\"panelIndex\":\"17\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"18\",\"w\":24,\"x\":24,\"y\":120},\"panelIndex\":\"18\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"19\",\"w\":24,\"x\":0,\"y\":135},\"panelIndex\":\"19\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_19\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"20\",\"w\":24,\"x\":24,\"y\":135},\"panelIndex\":\"20\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_20\"}]","timeRestore":false,"title":"logstash_dashboardwithfilters","version":1},"coreMigrationVersion":"7.13.2","id":"79794f20-6249-11eb-aebf-c306684b328d","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"36b91810-6239-11eb-aebf-c306684b328d","name":"1:panel_1","type":"visualization"},{"id":"0a274320-61cc-11eb-aebf-c306684b328d","name":"2:panel_2","type":"visualization"},{"id":"e4aef350-623d-11eb-aebf-c306684b328d","name":"3:panel_3","type":"visualization"},{"id":"f92e5630-623e-11eb-aebf-c306684b328d","name":"4:panel_4","type":"visualization"},{"id":"9853d4d0-623d-11eb-aebf-c306684b328d","name":"5:panel_5","type":"visualization"},{"id":"6ecb33b0-623d-11eb-aebf-c306684b328d","name":"6:panel_6","type":"visualization"},{"id":"b8e35c80-623c-11eb-aebf-c306684b328d","name":"7:panel_7","type":"visualization"},{"id":"f1bc75d0-6239-11eb-aebf-c306684b328d","name":"8:panel_8","type":"visualization"},{"id":"0d8a8860-623a-11eb-aebf-c306684b328d","name":"9:panel_9","type":"visualization"},{"id":"d79fe3d0-6239-11eb-aebf-c306684b328d","name":"10:panel_10","type":"visualization"},{"id":"318375a0-6240-11eb-aebf-c306684b328d","name":"11:panel_11","type":"visualization"},{"id":"e461eb20-6245-11eb-aebf-c306684b328d","name":"12:panel_12","type":"visualization"},{"id":"25bdc750-6242-11eb-aebf-c306684b328d","name":"13:panel_13","type":"visualization"},{"id":"71dd7bc0-6248-11eb-aebf-c306684b328d","name":"14:panel_14","type":"visualization"},{"id":"6aea48a0-6240-11eb-aebf-c306684b328d","name":"15:panel_15","type":"visualization"},{"id":"32b681f0-6241-11eb-aebf-c306684b328d","name":"16:panel_16","type":"visualization"},{"id":"ccca99e0-6244-11eb-aebf-c306684b328d","name":"17:panel_17","type":"visualization"},{"id":"a4d7be80-6245-11eb-aebf-c306684b328d","name":"18:panel_18","type":"visualization"},{"id":"c94d8440-6248-11eb-aebf-c306684b328d","name":"19:panel_19","type":"visualization"},{"id":"db6226f0-61c0-11eb-aebf-c306684b328d","name":"20:panel_20","type":"search"}],"sort":[1623693556928,671],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDIsNF0="} -{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"037b7937-790b-4d2d-94a5-7f5837a6ef05":{"columnOrder":["b3d46616-75e0-419e-97ea-91148961ef94","025a0fb3-dc44-4f5c-b517-2d71d3f26f14","c476db14-0cc1-40ec-863e-d2779256a407"],"columns":{"025a0fb3-dc44-4f5c-b517-2d71d3f26f14":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"b3d46616-75e0-419e-97ea-91148961ef94":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"c476db14-0cc1-40ec-863e-d2779256a407","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"geo.srcdest"},"c476db14-0cc1-40ec-863e-d2779256a407":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"lucene","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["c476db14-0cc1-40ec-863e-d2779256a407"],"layerId":"037b7937-790b-4d2d-94a5-7f5837a6ef05","position":"top","seriesType":"bar_stacked","showGridlines":false,"splitAccessor":"b3d46616-75e0-419e-97ea-91148961ef94","xAccessor":"025a0fb3-dc44-4f5c-b517-2d71d3f26f14"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_verticalstacked","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.2","id":"8dc19b50-be32-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-037b7937-790b-4d2d-94a5-7f5837a6ef05","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,675],"type":"lens","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDMsNF0="} -{"attributes":{"columns":[],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"alias\":null,\"negate\":false,\"disabled\":false,\"type\":\"phrase\",\"key\":\"geo.dest\",\"params\":{\"query\":\"US\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"geo.dest\":\"US\"}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"drilldown_logstash","version":1},"coreMigrationVersion":"7.13.2","id":"b3288100-ca2c-11eb-bf5e-3de94e83d4f0","migrationVersion":{"search":"7.9.3"},"references":[{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"sort":[1623415891791,216],"type":"search","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NjMsNF0="} -{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"logstash_timelion_panel","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_timelion_panel\",\"type\":\"timelion\",\"aggs\":[],\"params\":{\"expression\":\".es(index=logstash-*, \\\"sum:bytes\\\")\",\"interval\":\"auto\"}}"},"coreMigrationVersion":"7.13.2","id":"b3a44cd0-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1623693556928,677],"type":"visualization","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDUsNF0="} -{"attributes":{"color":"#9170B8","description":"","name":"alltogether"},"coreMigrationVersion":"7.13.2","id":"be808cb0-be32-11eb-9520-1b4c3ca6a781","references":[],"sort":[1623693556928,678],"type":"tag","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDYsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"4d9e9a01-cdb8-4aef-afcb-50db52247bb1\"},\"panelIndex\":\"4d9e9a01-cdb8-4aef-afcb-50db52247bb1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4d9e9a01-cdb8-4aef-afcb-50db52247bb1\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"d9cab9c8-667e-4d34-821b-cbb070891956\"},\"panelIndex\":\"d9cab9c8-667e-4d34-821b-cbb070891956\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d9cab9c8-667e-4d34-821b-cbb070891956\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"lens_combined_dashboard","version":1},"coreMigrationVersion":"7.13.2","id":"bfb3dc90-be32-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"8dc19b50-be32-11eb-9520-1b4c3ca6a781","name":"4d9e9a01-cdb8-4aef-afcb-50db52247bb1:panel_4d9e9a01-cdb8-4aef-afcb-50db52247bb1","type":"lens"},{"id":"b5bd5050-be31-11eb-9520-1b4c3ca6a781","name":"d9cab9c8-667e-4d34-821b-cbb070891956:panel_d9cab9c8-667e-4d34-821b-cbb070891956","type":"lens"},{"id":"be808cb0-be32-11eb-9520-1b4c3ca6a781","name":"tag-be808cb0-be32-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,682],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDcsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\"},\"panelIndex\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsPie\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"26e2cf99-d931-4320-9e15-9dbc148f3534\":{\"columns\":{\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\":{\"label\":\"Top values of url.raw\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url.raw\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"beb72af1-239c-46d8-823b-b00d1e2ace43\":{\"label\":\"Unique count of geo.srcdest\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"geo.srcdest\",\"isBucketed\":false}},\"columnOrder\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"beb72af1-239c-46d8-823b-b00d1e2ace43\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"26e2cf99-d931-4320-9e15-9dbc148f3534\",\"groups\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\"],\"metric\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534\"}]},\"enhancements\":{},\"type\":\"lens\"},\"panelRefName\":\"panel_2e80716f-c1b6-46f2-be2b-35db744b5031\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"da8843e0-6789-4aae-bcd0-81f270538719\"},\"panelIndex\":\"da8843e0-6789-4aae-bcd0-81f270538719\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_da8843e0-6789-4aae-bcd0-81f270538719\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},\"panelIndex\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"869754a7-edf0-478f-a7f1-80374f63108a\"},\"panelIndex\":\"869754a7-edf0-478f-a7f1-80374f63108a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_869754a7-edf0-478f-a7f1-80374f63108a\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"67111cf4-338e-453f-8621-e8dea64082d1\"},\"panelIndex\":\"67111cf4-338e-453f-8621-e8dea64082d1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_67111cf4-338e-453f-8621-e8dea64082d1\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},\"panelIndex\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\"},\"panelIndex\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_88847944-ae1b-45fd-b102-3b45f9bea04b\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\"},\"panelIndex\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5a7924c7-eac0-4573-9199-fecec5b82e9e\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\"},\"panelIndex\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f8f49591-f071-4a96-b1ed-cd65daff5648\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"9f357f47-c2a0-421f-a456-9583c40837ab\"},\"panelIndex\":\"9f357f47-c2a0-421f-a456-9583c40837ab\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9f357f47-c2a0-421f-a456-9583c40837ab\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\"},\"panelIndex\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6cb383e9-1e80-44f9-80d5-7b8c585668db\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\"},\"panelIndex\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_57f5f0bf-6610-4599-aad4-37484640b5e2\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},\"panelIndex\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"dd1718fd-74ee-4032-851b-db97e893825d\"},\"panelIndex\":\"dd1718fd-74ee-4032-851b-db97e893825d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dd1718fd-74ee-4032-851b-db97e893825d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"98a556ee-078b-4e03-93a8-29996133cdcb\"},\"panelIndex\":\"98a556ee-078b-4e03-93a8-29996133cdcb\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\":{\"columns\":{\"ce9117a2-773c-474c-8fb1-18940cf58b38\":{\"label\":\"Top values of type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"type\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false}},\"a3d10552-e352-40d0-a156-e86112c0501a\":{\"label\":\"Top values of _type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"_type\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"},\"9c5db2f3-9eb0-4667-9a74-3318301de251\":{\"label\":\"Sum of bytes\",\"dataType\":\"number\",\"operationType\":\"sum\",\"sourceField\":\"bytes\",\"isBucketed\":false,\"scale\":\"ratio\"}},\"columnOrder\":[\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"a3d10552-e352-40d0-a156-e86112c0501a\",\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\",\"accessors\":[\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"splitAccessor\":\"a3d10552-e352-40d0-a156-e86112c0501a\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd\"}]},\"enhancements\":{},\"type\":\"lens\"}},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},\"panelIndex\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},{\"version\":\"7.13.1\",\"type\":\"map\",\"gridData\":{\"x\":0,\"y\":120,\"w\":24,\"h\":15,\"i\":\"dcc0defa-3376-465c-9b5b-2ba69528848c\"},\"panelIndex\":\"dcc0defa-3376-465c-9b5b-2ba69528848c\",\"embeddableConfig\":{\"mapCenter\":{\"lat\":19.94277,\"lon\":0,\"zoom\":1.56},\"mapBuffer\":{\"minLon\":-210.32666,\"minLat\":-64.8435,\"maxLon\":210.32666,\"maxLat\":95.13806},\"isLayerTOCOpen\":true,\"openTOCDetails\":[],\"hiddenLayers\":[],\"enhancements\":{}},\"panelRefName\":\"panel_dcc0defa-3376-465c-9b5b-2ba69528848c\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":120,\"w\":24,\"h\":15,\"i\":\"dd21a674-ae3a-40f6-9d68-4e01361ea5e2\"},\"panelIndex\":\"dd21a674-ae3a-40f6-9d68-4e01361ea5e2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dd21a674-ae3a-40f6-9d68-4e01361ea5e2\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"timelion_lens_maps_dashboard_logstash","version":1},"coreMigrationVersion":"7.13.2","id":"c4ab2030-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:panel_2e80716f-c1b6-46f2-be2b-35db744b5031","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534","type":"index-pattern"},{"id":"aa4b8da0-bd9f-11eb-9520-1b4c3ca6a781","name":"da8843e0-6789-4aae-bcd0-81f270538719:panel_da8843e0-6789-4aae-bcd0-81f270538719","type":"lens"},{"id":"2d3f1250-bd9f-11eb-9520-1b4c3ca6a781","name":"adcd4418-7299-4efa-b369-5f71a7b4ebe0:panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0","type":"lens"},{"id":"edd5a560-bda4-11eb-9520-1b4c3ca6a781","name":"869754a7-edf0-478f-a7f1-80374f63108a:panel_869754a7-edf0-478f-a7f1-80374f63108a","type":"lens"},{"id":"2c25a450-bda5-11eb-9520-1b4c3ca6a781","name":"67111cf4-338e-453f-8621-e8dea64082d1:panel_67111cf4-338e-453f-8621-e8dea64082d1","type":"lens"},{"id":"e79116e0-bd9e-11eb-9520-1b4c3ca6a781","name":"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d:panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d","type":"lens"},{"id":"974fb950-bda5-11eb-9520-1b4c3ca6a781","name":"88847944-ae1b-45fd-b102-3b45f9bea04b:panel_88847944-ae1b-45fd-b102-3b45f9bea04b","type":"lens"},{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"5a7924c7-eac0-4573-9199-fecec5b82e9e:panel_5a7924c7-eac0-4573-9199-fecec5b82e9e","type":"lens"},{"id":"51b63040-bda5-11eb-9520-1b4c3ca6a781","name":"f8f49591-f071-4a96-b1ed-cd65daff5648:panel_f8f49591-f071-4a96-b1ed-cd65daff5648","type":"lens"},{"id":"b00679c0-bda5-11eb-9520-1b4c3ca6a781","name":"9f357f47-c2a0-421f-a456-9583c40837ab:panel_9f357f47-c2a0-421f-a456-9583c40837ab","type":"lens"},{"id":"652ade10-bd9f-11eb-9520-1b4c3ca6a781","name":"6cb383e9-1e80-44f9-80d5-7b8c585668db:panel_6cb383e9-1e80-44f9-80d5-7b8c585668db","type":"lens"},{"id":"7f3b5fb0-be2f-11eb-9520-1b4c3ca6a781","name":"57f5f0bf-6610-4599-aad4-37484640b5e2:panel_57f5f0bf-6610-4599-aad4-37484640b5e2","type":"lens"},{"id":"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781","name":"32d3ab66-52e1-44e3-8c1f-1dccff3c5692:panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692","type":"lens"},{"id":"dd315430-be2f-11eb-9520-1b4c3ca6a781","name":"dd1718fd-74ee-4032-851b-db97e893825d:panel_dd1718fd-74ee-4032-851b-db97e893825d","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd","type":"index-pattern"},{"id":"0dbbf8b0-be3c-11eb-9520-1b4c3ca6a781","name":"62a0f0b0-3589-4cef-807b-b1b4258b7a9b:panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b","type":"lens"},{"id":"0c5974f0-be5c-11eb-9520-1b4c3ca6a781","name":"dcc0defa-3376-465c-9b5b-2ba69528848c:panel_dcc0defa-3376-465c-9b5b-2ba69528848c","type":"map"},{"id":"a4d7be80-6245-11eb-aebf-c306684b328d","name":"dd21a674-ae3a-40f6-9d68-4e01361ea5e2:panel_dd21a674-ae3a-40f6-9d68-4e01361ea5e2","type":"visualization"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,705],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDgsNF0="} -{"attributes":{"columns":[],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"speaker :\\\"DUKE VINCENTIO\\\" \",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[],"title":"drilldown_shakes","version":1},"coreMigrationVersion":"7.13.2","id":"c4b9cc00-ca2a-11eb-bf5e-3de94e83d4f0","migrationVersion":{"search":"7.9.3"},"references":[{"id":"39d52f60-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1623415891791,218],"type":"search","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NjQsNF0="} -{"attributes":{"@created":"2021-05-27T19:45:29.712Z","@timestamp":"2021-05-27T19:45:29.712Z","content":"{\"selectedNodes\":[{\"id\":\"element-56d2ba72-f227-4d04-9478-a1d6f0c7e601\",\"position\":{\"left\":20,\"top\":20,\"width\":500,\"height\":300,\"angle\":0,\"parent\":\"group-499b5982-25f4-4894-9540-1874a27d78e7\",\"type\":\"element\"},\"expression\":\"savedLens id=\\\"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781\\\" timerange={timerange from=\\\"now-15y\\\" to=\\\"now\\\"}\\n| render\",\"filter\":null,\"ast\":{\"type\":\"expression\",\"chain\":[{\"type\":\"function\",\"function\":\"savedLens\",\"arguments\":{\"id\":[\"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781\"],\"timerange\":[{\"type\":\"expression\",\"chain\":[{\"type\":\"function\",\"function\":\"timerange\",\"arguments\":{\"from\":[\"now-15y\"],\"to\":[\"now\"]}}]}]}},{\"type\":\"function\",\"function\":\"render\",\"arguments\":{}}]}},{\"id\":\"element-afbaa26e-10e7-47d4-bb41-b061dfdced2b\",\"position\":{\"left\":527,\"top\":20,\"width\":500,\"height\":300,\"angle\":0,\"parent\":\"group-499b5982-25f4-4894-9540-1874a27d78e7\",\"type\":\"element\"},\"expression\":\"savedVisualization id=\\\"0d8a8860-623a-11eb-aebf-c306684b328d\\\" timerange={timerange from=\\\"now-15y\\\" to=\\\"now\\\"}\\n| render\",\"filter\":null,\"ast\":{\"type\":\"expression\",\"chain\":[{\"type\":\"function\",\"function\":\"savedVisualization\",\"arguments\":{\"id\":[\"0d8a8860-623a-11eb-aebf-c306684b328d\"],\"timerange\":[{\"type\":\"expression\",\"chain\":[{\"type\":\"function\",\"function\":\"timerange\",\"arguments\":{\"from\":[\"now-15y\"],\"to\":[\"now\"]}}]}]}},{\"type\":\"function\",\"function\":\"render\",\"arguments\":{}}]}}]}","displayName":"element_canvas","help":"","image":"","name":"elementCanvas"},"coreMigrationVersion":"7.13.2","id":"custom-element-3bc52277-ee01-4cdc-8d2d-f2db6ade1512","references":[],"sort":[1623693556928,706],"type":"canvas-element","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MDksNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"ced0a5ea-3ec2-4274-8431-6e76d85637f6\"},\"panelIndex\":\"ced0a5ea-3ec2-4274-8431-6e76d85637f6\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"6a3b206a-4ac3-4d67-b2b9-c6b543a11ea3\":{\"columns\":{\"f70668f8-ae97-4b64-867f-b0c9b77914ef\":{\"label\":\"Top values of speaker\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"speaker\",\"isBucketed\":true,\"params\":{\"size\":39,\"orderBy\":{\"type\":\"column\",\"columnId\":\"fbf256d9-cae7-4244-8504-b73a5666e917\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"fbf256d9-cae7-4244-8504-b73a5666e917\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"}},\"columnOrder\":[\"f70668f8-ae97-4b64-867f-b0c9b77914ef\",\"fbf256d9-cae7-4244-8504-b73a5666e917\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_horizontal_percentage_stacked\",\"layers\":[{\"layerId\":\"6a3b206a-4ac3-4d67-b2b9-c6b543a11ea3\",\"accessors\":[\"fbf256d9-cae7-4244-8504-b73a5666e917\"],\"position\":\"top\",\"seriesType\":\"bar_horizontal_percentage_stacked\",\"showGridlines\":false,\"splitAccessor\":\"f70668f8-ae97-4b64-867f-b0c9b77914ef\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"39d52f60-ca27-11eb-bf5e-3de94e83d4f0\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"39d52f60-ca27-11eb-bf5e-3de94e83d4f0\",\"name\":\"indexpattern-datasource-layer-6a3b206a-4ac3-4d67-b2b9-c6b543a11ea3\"}]},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"2b9a2bad-d6aa-4d3b-a692-fd96c3fb0ac1\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"We_like_lens\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}},\"type\":\"lens\"}},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"5e4cf03a-13bb-4aa7-8326-b47a19e88968\"},\"panelIndex\":\"5e4cf03a-13bb-4aa7-8326-b47a19e88968\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"play_name\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":788,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"39d52f60-ca27-11eb-bf5e-3de94e83d4f0\",\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"c5e2a416-2985-4f44-a6b6-70bb95d3bcdd\",\"triggers\":[\"CONTEXT_MENU_TRIGGER\"],\"action\":{\"name\":\"shakespeare_discover\",\"config\":{\"url\":{\"template\":\"http://localhost:5601/app/discover#/view/c4b9cc00-ca2a-11eb-bf5e-3de94e83d4f0?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(columns:!(),filters:!(),index:'39d52f60-ca27-11eb-bf5e-3de94e83d4f0',interval:auto,query:(language:kuery,query:'speaker%20:%22DUKE%20VINCENTIO%22%20'),sort:!())\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}},{\"eventId\":\"de71a757-6401-4b05-9d8d-475fedc0cd47\",\"triggers\":[\"VALUE_CLICK_TRIGGER\"],\"action\":{\"name\":\"drilldown_timebased\",\"config\":{\"url\":{\"template\":\"http://localhost:5601/app/discover#/view/b3288100-ca2c-11eb-bf5e-3de94e83d4f0?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(columns:!(),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',key:geo.dest,negate:!f,params:(query:US),type:phrase),query:(match_phrase:(geo.dest:US)))),index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}}]}},\"type\":\"visualization\"}}]","timeRestore":false,"title":"nontimebased_shakespeare_drilldown","version":1},"coreMigrationVersion":"7.13.2","id":"e9eb20f0-ca2a-11eb-bf5e-3de94e83d4f0","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"39d52f60-ca27-11eb-bf5e-3de94e83d4f0","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"39d52f60-ca27-11eb-bf5e-3de94e83d4f0","name":"indexpattern-datasource-layer-6a3b206a-4ac3-4d67-b2b9-c6b543a11ea3","type":"index-pattern"},{"id":"08dec860-ca29-11eb-bf5e-3de94e83d4f0","name":"drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:2b9a2bad-d6aa-4d3b-a692-fd96c3fb0ac1:dashboardId","type":"dashboard"},{"id":"39d52f60-ca27-11eb-bf5e-3de94e83d4f0","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"07f48f70-ca29-11eb-bf5e-3de94e83d4f0","name":"tag-07f48f70-ca29-11eb-bf5e-3de94e83d4f0","type":"tag"}],"sort":[1623415891791,224],"type":"dashboard","updated_at":"2021-06-11T12:51:31.791Z","version":"WzE0NjUsNF0="} -{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\"},\"panelIndex\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsPie\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"26e2cf99-d931-4320-9e15-9dbc148f3534\":{\"columns\":{\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\":{\"label\":\"Top values of url.raw\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url.raw\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"beb72af1-239c-46d8-823b-b00d1e2ace43\":{\"label\":\"Unique count of geo.srcdest\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"geo.srcdest\",\"isBucketed\":false}},\"columnOrder\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"beb72af1-239c-46d8-823b-b00d1e2ace43\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"26e2cf99-d931-4320-9e15-9dbc148f3534\",\"groups\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\"],\"metric\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534\"}]},\"enhancements\":{},\"type\":\"lens\"},\"panelRefName\":\"panel_2e80716f-c1b6-46f2-be2b-35db744b5031\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"da8843e0-6789-4aae-bcd0-81f270538719\"},\"panelIndex\":\"da8843e0-6789-4aae-bcd0-81f270538719\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_da8843e0-6789-4aae-bcd0-81f270538719\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},\"panelIndex\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"869754a7-edf0-478f-a7f1-80374f63108a\"},\"panelIndex\":\"869754a7-edf0-478f-a7f1-80374f63108a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_869754a7-edf0-478f-a7f1-80374f63108a\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"67111cf4-338e-453f-8621-e8dea64082d1\"},\"panelIndex\":\"67111cf4-338e-453f-8621-e8dea64082d1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_67111cf4-338e-453f-8621-e8dea64082d1\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},\"panelIndex\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\"},\"panelIndex\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_88847944-ae1b-45fd-b102-3b45f9bea04b\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\"},\"panelIndex\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5a7924c7-eac0-4573-9199-fecec5b82e9e\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\"},\"panelIndex\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f8f49591-f071-4a96-b1ed-cd65daff5648\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"9f357f47-c2a0-421f-a456-9583c40837ab\"},\"panelIndex\":\"9f357f47-c2a0-421f-a456-9583c40837ab\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9f357f47-c2a0-421f-a456-9583c40837ab\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\"},\"panelIndex\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6cb383e9-1e80-44f9-80d5-7b8c585668db\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\"},\"panelIndex\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_57f5f0bf-6610-4599-aad4-37484640b5e2\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},\"panelIndex\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"dd1718fd-74ee-4032-851b-db97e893825d\"},\"panelIndex\":\"dd1718fd-74ee-4032-851b-db97e893825d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dd1718fd-74ee-4032-851b-db97e893825d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"98a556ee-078b-4e03-93a8-29996133cdcb\"},\"panelIndex\":\"98a556ee-078b-4e03-93a8-29996133cdcb\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\":{\"columns\":{\"ce9117a2-773c-474c-8fb1-18940cf58b38\":{\"label\":\"Top values of type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"type\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false}},\"a3d10552-e352-40d0-a156-e86112c0501a\":{\"label\":\"Top values of _type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"_type\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"},\"9c5db2f3-9eb0-4667-9a74-3318301de251\":{\"label\":\"Sum of bytes\",\"dataType\":\"number\",\"operationType\":\"sum\",\"sourceField\":\"bytes\",\"isBucketed\":false,\"scale\":\"ratio\"}},\"columnOrder\":[\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"a3d10552-e352-40d0-a156-e86112c0501a\",\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\",\"accessors\":[\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"splitAccessor\":\"a3d10552-e352-40d0-a156-e86112c0501a\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd\"}]},\"enhancements\":{},\"type\":\"lens\"}},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},\"panelIndex\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"lens_dashboard_logstash","version":1},"coreMigrationVersion":"7.13.2","id":"f458b9f0-bd9e-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:panel_2e80716f-c1b6-46f2-be2b-35db744b5031","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534","type":"index-pattern"},{"id":"aa4b8da0-bd9f-11eb-9520-1b4c3ca6a781","name":"da8843e0-6789-4aae-bcd0-81f270538719:panel_da8843e0-6789-4aae-bcd0-81f270538719","type":"lens"},{"id":"2d3f1250-bd9f-11eb-9520-1b4c3ca6a781","name":"adcd4418-7299-4efa-b369-5f71a7b4ebe0:panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0","type":"lens"},{"id":"edd5a560-bda4-11eb-9520-1b4c3ca6a781","name":"869754a7-edf0-478f-a7f1-80374f63108a:panel_869754a7-edf0-478f-a7f1-80374f63108a","type":"lens"},{"id":"2c25a450-bda5-11eb-9520-1b4c3ca6a781","name":"67111cf4-338e-453f-8621-e8dea64082d1:panel_67111cf4-338e-453f-8621-e8dea64082d1","type":"lens"},{"id":"e79116e0-bd9e-11eb-9520-1b4c3ca6a781","name":"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d:panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d","type":"lens"},{"id":"974fb950-bda5-11eb-9520-1b4c3ca6a781","name":"88847944-ae1b-45fd-b102-3b45f9bea04b:panel_88847944-ae1b-45fd-b102-3b45f9bea04b","type":"lens"},{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"5a7924c7-eac0-4573-9199-fecec5b82e9e:panel_5a7924c7-eac0-4573-9199-fecec5b82e9e","type":"lens"},{"id":"51b63040-bda5-11eb-9520-1b4c3ca6a781","name":"f8f49591-f071-4a96-b1ed-cd65daff5648:panel_f8f49591-f071-4a96-b1ed-cd65daff5648","type":"lens"},{"id":"b00679c0-bda5-11eb-9520-1b4c3ca6a781","name":"9f357f47-c2a0-421f-a456-9583c40837ab:panel_9f357f47-c2a0-421f-a456-9583c40837ab","type":"lens"},{"id":"652ade10-bd9f-11eb-9520-1b4c3ca6a781","name":"6cb383e9-1e80-44f9-80d5-7b8c585668db:panel_6cb383e9-1e80-44f9-80d5-7b8c585668db","type":"lens"},{"id":"7f3b5fb0-be2f-11eb-9520-1b4c3ca6a781","name":"57f5f0bf-6610-4599-aad4-37484640b5e2:panel_57f5f0bf-6610-4599-aad4-37484640b5e2","type":"lens"},{"id":"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781","name":"32d3ab66-52e1-44e3-8c1f-1dccff3c5692:panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692","type":"lens"},{"id":"dd315430-be2f-11eb-9520-1b4c3ca6a781","name":"dd1718fd-74ee-4032-851b-db97e893825d:panel_dd1718fd-74ee-4032-851b-db97e893825d","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd","type":"index-pattern"},{"id":"0dbbf8b0-be3c-11eb-9520-1b4c3ca6a781","name":"62a0f0b0-3589-4cef-807b-b1b4258b7a9b:panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b","type":"lens"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1623693556928,727],"type":"dashboard","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MTAsNF0="} -{"attributes":{"allowNoIndex":true,"fieldFormatMap":"{\"Target.process.parent.pgid\":{\"id\":\"string\"},\"Target.process.parent.pid\":{\"id\":\"string\"},\"Target.process.parent.ppid\":{\"id\":\"string\"},\"Target.process.parent.thread.id\":{\"id\":\"string\"},\"Target.process.pgid\":{\"id\":\"string\"},\"Target.process.pid\":{\"id\":\"string\"},\"Target.process.ppid\":{\"id\":\"string\"},\"Target.process.thread.id\":{\"id\":\"string\"},\"event.sequence\":{\"id\":\"string\"},\"event.severity\":{\"id\":\"string\"},\"process.parent.pgid\":{\"id\":\"string\"},\"process.parent.pid\":{\"id\":\"string\"},\"process.parent.ppid\":{\"id\":\"string\"},\"process.parent.thread.id\":{\"id\":\"string\"},\"process.pgid\":{\"id\":\"string\"},\"process.pid\":{\"id\":\"string\"},\"process.ppid\":{\"id\":\"string\"},\"process.thread.id\":{\"id\":\"string\"},\"destination.bytes\":{\"id\":\"bytes\"},\"destination.port\":{\"id\":\"string\"},\"http.request.body.bytes\":{\"id\":\"bytes\"},\"http.request.bytes\":{\"id\":\"bytes\"},\"http.response.body.bytes\":{\"id\":\"bytes\"},\"http.response.bytes\":{\"id\":\"bytes\"},\"http.response.status_code\":{\"id\":\"string\"},\"network.bytes\":{\"id\":\"bytes\"},\"source.bytes\":{\"id\":\"bytes\"},\"source.port\":{\"id\":\"string\"}}","fields":"[{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Endpoint.policy.applied.artifacts.global\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.global.identifiers\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.global.identifiers.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.global.identifiers.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.global.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user.identifiers\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user.identifiers.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user.identifiers.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Memory_protection.cross_session\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Memory_protection.feature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Memory_protection.parent_to_child\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Memory_protection.self_injection\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Memory_protection.thread_count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Memory_protection.unique_key_v1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.child_pids\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.feature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files.data\",\"type\":\"binary\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Ransomware.files.entropy\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files.extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files.metrics\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files.operation\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files.original.extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files.original.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.files.score\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.score\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Ransomware.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.compile_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.malware_classification.features\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Target.dll.Ext.malware_classification.features.data.buffer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.malware_classification.features.data.decompressed_size\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.malware_classification.features.data.encoding\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.malware_classification.identifier\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.malware_classification.score\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.malware_classification.threshold\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.malware_classification.upx_packed\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.malware_classification.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.mapped_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.Ext.mapped_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.dll.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.ancestry\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.architecture\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.authentication_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.compile_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.mapped_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.Ext.mapped_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.dll.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.malware_classification.features\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Target.process.Ext.malware_classification.features.data.buffer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.malware_classification.features.data.decompressed_size\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.malware_classification.features.data.encoding\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.malware_classification.identifier\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.malware_classification.score\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.malware_classification.threshold\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.malware_classification.upx_packed\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.malware_classification.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.services\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.session\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.elevation\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.elevation_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.impersonation_level\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.integrity_level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.integrity_level_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.is_appcontainer\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.privileges\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.privileges.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.privileges.enabled\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.privileges.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.sid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.token.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.Ext.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.args\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.args_count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.command_line\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.command_line.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.command_line.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.entity_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.executable\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.executable.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.executable.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.exit_code\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.name.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.architecture\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.compile_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.mapped_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.Ext.mapped_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.dll.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.real\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.real.pid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.elevation\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.elevation_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.impersonation_level\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.integrity_level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.integrity_level_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.is_appcontainer\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.privileges\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.privileges.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.privileges.enabled\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.privileges.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.sid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.token.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.Ext.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.args\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.args_count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.command_line\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.command_line.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.command_line.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.entity_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.executable\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.executable.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.executable.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.exit_code\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.name.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.pgid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.pid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.ppid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.thread.id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.thread.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.title.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.uptime\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.working_directory\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.working_directory.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.parent.working_directory.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.pgid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.pid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.ppid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.call_stack.instruction_pointer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.call_stack.memory_section.address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.call_stack.memory_section.protection\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.call_stack.memory_section.size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.call_stack.module_path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.call_stack.rva\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.call_stack.symbol_info\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.parameter\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.parameter_bytes_compressed\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.parameter_bytes_compressed_present\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.service\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_allocation_offset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_bytes\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_bytes_disasm\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_bytes_disasm_hash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.allocation_base\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.allocation_protection\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.allocation_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.allocation_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.bytes_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.bytes_allocation_offset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.bytes_compressed\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.bytes_compressed_present\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.mapped_pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.mapped_pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.mapped_pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.mapped_pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.mapped_pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.mapped_pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.mapped_pe_detected\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.memory_pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.memory_pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.memory_pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.memory_pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.memory_pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.memory_pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.memory_pe_detected\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.region_base\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.region_protection\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.region_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.region_state\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_details.strings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.start_address_module\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.elevation\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.elevation_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.impersonation_level\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.integrity_level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.integrity_level_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.is_appcontainer\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.privileges\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.privileges.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.privileges.enabled\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.privileges.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.sid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.token.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.Ext.uptime\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.thread.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.title.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Target.process.uptime\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.working_directory\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.working_directory.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Target.process.working_directory.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"agent.ephemeral_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"data_stream.dataset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"data_stream.namespace\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"data_stream.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.compile_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.malware_classification.features\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"dll.Ext.malware_classification.features.data.buffer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.malware_classification.features.data.decompressed_size\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.malware_classification.features.data.encoding\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.malware_classification.identifier\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.malware_classification.score\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.malware_classification.threshold\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.malware_classification.upx_packed\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.malware_classification.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.mapped_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.mapped_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ecs.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"elastic.agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"elastic.agent.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.action\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.category\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.created\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.dataset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.hash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.ingested\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.kind\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.module\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.outcome\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.provider\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.sequence\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.severity\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.entry_modified\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.code_page\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.collection\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.collection.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.collection.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.collection.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.collection.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.errors\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.errors.count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.errors.error_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.file_extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.project_file\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.project_file.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.project_file.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.project_file.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.project_file.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.stream\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.stream.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.stream.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.stream.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.stream.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.stream.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.stream.raw_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.macro.stream.raw_code_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.malware_classification.features\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"file.Ext.malware_classification.features.data.buffer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.malware_classification.features.data.decompressed_size\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.malware_classification.features.data.encoding\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.malware_classification.identifier\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.malware_classification.score\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.malware_classification.threshold\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.malware_classification.upx_packed\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.malware_classification.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.original\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.original.gid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.original.group\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.original.mode\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.original.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.original.owner\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.original.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.original.uid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.quarantine_path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.quarantine_result\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.temp_file_path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.windows\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.windows.zone_identifier\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.accessed\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.attributes\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.created\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.ctime\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.device\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.directory\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.drive_letter\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.gid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.group\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.inode\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.mime_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.mode\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.mtime\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.owner\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.path.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.path.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"file.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.size\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.target_path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.target_path.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.target_path.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"file.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.uid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.Ext.real\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.Ext.real.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.Ext.real.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.architecture\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.hostname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.mac\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.Ext.variant\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.family\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.full\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.full.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.full.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"host.os.kernel\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.name.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"host.os.platform\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.uptime\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.Ext.real\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.Ext.real.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.Ext.real.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.email\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.full_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.full_name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"host.user.group.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.group.Ext.real\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.group.Ext.real.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.group.Ext.real.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.group.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.group.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.group.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.hash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.user.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.ancestry\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.architecture\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.authentication_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.compile_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.mapped_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.Ext.mapped_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.dll.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.malware_classification.features\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"process.Ext.malware_classification.features.data.buffer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.malware_classification.features.data.decompressed_size\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.malware_classification.features.data.encoding\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.malware_classification.identifier\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.malware_classification.score\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.malware_classification.threshold\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.malware_classification.upx_packed\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.malware_classification.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.services\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.session\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.elevation\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.elevation_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.impersonation_level\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.integrity_level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.integrity_level_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.is_appcontainer\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.privileges\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.privileges.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.privileges.enabled\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.privileges.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.sid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.token.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.args\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.args_count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.command_line\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.command_line.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.command_line.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.entity_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.executable\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.executable.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.executable.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.exit_code\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.name.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.architecture\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.code_signature\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.compile_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.mapped_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.Ext.mapped_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.dll.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.real\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.real.pid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.elevation\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.elevation_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.impersonation_level\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.integrity_level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.integrity_level_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.is_appcontainer\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.privileges\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.privileges.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.privileges.enabled\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.privileges.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.sid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.token.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.Ext.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.args\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.args_count\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.command_line\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.command_line.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.command_line.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.parent.entity_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.executable\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.executable.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.executable.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.parent.exit_code\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.hash.md5\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.hash.sha1\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.hash.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.hash.sha512\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.name.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.parent.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.pgid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.pid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.ppid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.thread.id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.thread.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.title.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.parent.uptime\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.working_directory\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.working_directory.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.working_directory.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.pgid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.pid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.ppid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.call_stack.instruction_pointer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.call_stack.memory_section.address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.call_stack.memory_section.protection\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.call_stack.memory_section.size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.call_stack.module_path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.call_stack.rva\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.call_stack.symbol_info\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.parameter\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.parameter_bytes_compressed\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.parameter_bytes_compressed_present\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.service\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_allocation_offset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_bytes\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_bytes_disasm\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_bytes_disasm_hash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.allocation_base\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.allocation_protection\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.allocation_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.allocation_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.bytes_address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.bytes_allocation_offset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.bytes_compressed\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.bytes_compressed_present\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.mapped_pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.mapped_pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.mapped_pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.mapped_pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.mapped_pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.mapped_pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.mapped_pe_detected\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.memory_pe.company\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.memory_pe.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.memory_pe.file_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.memory_pe.imphash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.memory_pe.original_file_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.memory_pe.product\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.memory_pe_detected\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.region_base\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.region_protection\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.region_size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.region_state\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_details.strings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.start_address_module\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.elevation\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.elevation_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.impersonation_level\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.integrity_level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.integrity_level_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.is_appcontainer\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.privileges\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.privileges.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.privileges.enabled\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.privileges.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.sid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.token.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.Ext.uptime\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.title.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"process.uptime\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.working_directory\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.working_directory.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.working_directory.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"rule.author\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.category\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.license\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.reference\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.ruleset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.uuid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rule.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threat.framework\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threat.tactic.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threat.tactic.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threat.tactic.reference\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threat.technique.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threat.technique.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threat.technique.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"threat.technique.reference\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.Ext.real\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.Ext.real.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.Ext.real.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.email\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.full_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.full_name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"user.group.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.group.Ext.real\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.group.Ext.real.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.group.Ext.real.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.group.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.group.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.group.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.hash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"event.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.Ext.correlation\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.Ext.correlation.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.entropy\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.Ext.header_data\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"file.Ext.monotonic_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.Ext.load_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dll.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.packets\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.registered_domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.top_level_domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.Ext.options\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.Ext.status\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.question.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.question.registered_domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.question.subdomain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.question.top_level_domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.question.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"dns.resolved_ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.request.body.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.request.body.content\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.request.body.content.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"http.request.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.Ext.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.body.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.body.content\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.body.content.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"http.response.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.status_code\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.community_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.direction\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.iana_number\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.packets\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.protocol\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.transport\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.packets\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.registered_domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.top_level_domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"package.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.Ext.defense_evasions\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.code_signature.exists\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.code_signature.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.code_signature.subject_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.code_signature.trusted\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.parent.code_signature.valid\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"registry.data.bytes\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"registry.data.strings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"registry.hive\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"registry.key\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"registry.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"registry.value\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"@timestamp","title":"logs-*"},"coreMigrationVersion":"7.13.2","id":"logs-*","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1623693556928,728],"type":"index-pattern","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MTEsNF0="} -{"attributes":{"description":"this is a logstash saved query","filters":[],"query":{"language":"kuery","query":"extension.raw :\"gif\" and machine.os.raw :\"ios\" "},"timefilter":{"from":"2015-09-20T01:56:56.132Z","refreshInterval":{"pause":true,"value":0},"to":"2015-09-21T11:18:20.471Z"},"title":"logstash_saved_query"},"coreMigrationVersion":"7.13.2","id":"logstash_saved_query","references":[],"sort":[1623693556928,729],"type":"query","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MTIsNF0="} -{"attributes":{"allowNoIndex":true,"fieldFormatMap":"{\"event.sequence\":{\"id\":\"string\"},\"event.severity\":{\"id\":\"string\"}}","fields":"[{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"data_stream.dataset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"data_stream.namespace\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"data_stream.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ecs.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"elastic.agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"elastic.agent.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.action\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.category\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.created\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.dataset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.hash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.ingested\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.kind\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.module\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.outcome\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.provider\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.sequence\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.severity\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.architecture\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.hostname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.mac\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.Ext\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.Ext.variant\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.family\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.full\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.full.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.full.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"host.os.kernel\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.name.caseless\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.name.text\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"host.os.platform\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.uptime\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.cpu\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.cpu.endpoint\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.cpu.endpoint.histogram\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.cpu.endpoint.latest\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.cpu.endpoint.mean\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.disks\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Endpoint.metrics.disks.device\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.disks.endpoint_drive\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.disks.free\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.disks.fstype\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.disks.mount\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.disks.total\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.memory\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.memory.endpoint\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.memory.endpoint.private\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.memory.endpoint.private.latest\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.memory.endpoint.private.mean\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.threads\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Endpoint.metrics.uptime\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.uptime.endpoint\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.metrics.uptime.system\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.end\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.actions\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.actions.message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.actions.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.actions.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Endpoint.policy.applied.artifacts.global\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.global.identifiers\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.global.identifiers.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.global.identifiers.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.global.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user.identifiers\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user.identifiers.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user.identifiers.sha256\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.artifacts.user.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Endpoint.policy.applied.configurations.antivirus_registration\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Endpoint.policy.applied.configurations.antivirus_registration.concerned_actions\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.antivirus_registration.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.events\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.events.concerned_actions\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.events.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.logging\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.logging.concerned_actions\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.logging.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.malware\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.malware.concerned_actions\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.malware.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.streaming\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.streaming.concerned_actions\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.configurations.streaming.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Endpoint.policy.applied.response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Endpoint.policy.applied.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"@timestamp","title":"metrics-*"},"coreMigrationVersion":"7.13.2","id":"metrics-*","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1623693556928,730],"type":"index-pattern","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MTMsNF0="} -{"attributes":{"description":"Shakespeare query","filters":[],"query":{"language":"kuery","query":"speaker : \"OTHELLO\" and play_name :\"Othello\" "},"title":"shakespeare_current_query"},"coreMigrationVersion":"7.13.2","id":"shakespeare_current_query","references":[],"sort":[1623693556928,731],"type":"query","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MTQsNF0="} -{"attributes":{"@created":"2021-05-27T18:53:18.432Z","@timestamp":"2021-05-27T19:46:12.539Z","assets":{},"colors":["#37988d","#c19628","#b83c6f","#3f9939","#1785b0","#ca5f35","#45bdb0","#f2bc33","#e74b8b","#4fbf48","#1ea6dc","#fd7643","#72cec3","#f5cc5d","#ec77a8","#7acf74","#4cbce4","#fd986f","#a1ded7","#f8dd91","#f2a4c5","#a6dfa2","#86d2ed","#fdba9f","#000000","#444444","#777777","#BBBBBB","#FFFFFF","rgba(255,255,255,0)"],"css":".canvasPage {\n\n}","height":720,"isWriteable":true,"name":"logstash-canvas-workpad","page":1,"pages":[{"elements":[{"expression":"savedLens id=\"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781\" timerange={timerange from=\"now-15y\" to=\"now\"}\n| render","filter":null,"id":"element-56d2ba72-f227-4d04-9478-a1d6f0c7e601","position":{"angle":0,"height":300,"left":20,"parent":null,"top":20,"width":500}},{"expression":"savedVisualization id=\"0d8a8860-623a-11eb-aebf-c306684b328d\" timerange={timerange from=\"now-15y\" to=\"now\"}\n| render","filter":null,"id":"element-afbaa26e-10e7-47d4-bb41-b061dfdced2b","position":{"angle":0,"height":300,"left":527,"parent":null,"top":20,"width":500}}],"groups":[],"id":"page-0f9ef2da-2868-4c0b-9223-fd3c9e53d6c9","style":{"background":"#FFF"},"transition":{}},{"elements":[{"expression":"image dataurl=null mode=\"contain\"\n| render","id":"element-c5534ef7-68c4-46bc-b35a-9e43a7f118c3","position":{"angle":0,"height":107,"left":20,"parent":null,"top":20,"width":132}},{"expression":"filters\n| essql query=\"SELECT machine.os.raw FROM \\\"logstash-*\\\"\"\n| pointseries x=\"machine.os.raw\" y=\"size(machine.os.raw)\" color=\"machine.os.raw\" size=\"sum(machine.os.raw)\"\n| plot defaultStyle={seriesStyle points=5 fill=1}\n| render","id":"element-5f7a3312-0e77-471c-9b8f-f98cb38075fb","position":{"angle":0,"height":192,"left":221,"parent":null,"top":56,"width":451}},{"expression":"timefilterControl compact=true column=@timestamp\n| render","filter":"timefilter from=\"now-29y\" to=now column=@timestamp","id":"element-6e00dcf4-06fe-4bd9-9315-d32d9d3fac5f","position":{"angle":0,"height":50,"left":221,"parent":null,"top":-1,"width":500}},{"expression":"filters\n| esdocs index=\"logstash-*\" fields=\"@timestamp, response.raw\"\n| pointseries x=\"size(response.raw)\" y=\"@timestamp\" color=\"response.raw\"\n| plot\n| render","id":"element-20281fac-1c3a-4ee3-9132-44379fb60b74","position":{"angle":0,"height":262,"left":51,"parent":null,"top":304,"width":590}},{"expression":"filters\n| timelion query=\".es(index=logstash-*, metric=sum:bytes)\"\n| pointseries x=\"@timestamp\" y=\"sum(value)\"\n| plot defaultStyle={seriesStyle lines=3}\n| render","id":"element-337b0548-5d6d-44cd-a324-eb50d63c7bd0","position":{"angle":0,"height":309,"left":648,"parent":null,"top":290,"width":369}},{"expression":"savedLens id=\"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781\" timerange={timerange from=\"now-15y\" to=\"now\"}\n| render","filter":null,"id":"element-353e5583-0dbb-4a6b-bac7-3b2a6b305397","position":{"angle":0,"height":181.99999999999997,"left":855,"parent":"group-d2618a19-3982-414e-93df-b2cb165b7c7e","top":15.000000000000014,"width":76.961271102284}},{"expression":"savedVisualization id=\"0d8a8860-623a-11eb-aebf-c306684b328d\" timerange={timerange from=\"now-15y\" to=\"now\"}\n| render","filter":null,"id":"element-0e5501a6-9e87-42bc-b539-1e697e62051b","position":{"angle":0,"height":181.99999999999997,"left":933.038728897716,"parent":"group-d2618a19-3982-414e-93df-b2cb165b7c7e","top":15.000000000000014,"width":76.961271102284}}],"groups":[],"id":"page-59c3cf09-1811-4324-995b-7336c1c11ab8","style":{"background":"#FFF"},"transition":{}}],"variables":[],"width":1080},"coreMigrationVersion":"7.13.2","id":"workpad-f2024ca3-e366-447a-b3af-7db4400646ef","migrationVersion":{"canvas-workpad":"7.0.0"},"references":[],"sort":[1623693556928,732],"type":"canvas-workpad","updated_at":"2021-06-14T17:59:16.928Z","version":"WzE3MTUsNF0="} -{"exportedCount":87,"missingRefCount":0,"missingReferences":[]} \ No newline at end of file +{"attributes":{"accessCount":0,"accessDate":1621977234367,"createDate":1621977234367,"url":"/app/dashboards#/view/154944b0-6249-11eb-aebf-c306684b328d?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(description:%27%27,filters:!(),fullScreenMode:!f,options:(darkTheme:!f,hidePanelTitles:!f,useMargins:!t),panels:!((embeddableConfig:(enhancements:()),gridData:(h:15,i:%271%27,w:24,x:0,y:0),id:%2736b91810-6239-11eb-aebf-c306684b328d%27,panelIndex:%271%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:(),vis:!n),gridData:(h:15,i:%272%27,w:24,x:24,y:0),id:%270a274320-61cc-11eb-aebf-c306684b328d%27,panelIndex:%272%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%273%27,w:24,x:0,y:15),id:e4aef350-623d-11eb-aebf-c306684b328d,panelIndex:%273%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%274%27,w:24,x:24,y:15),id:f92e5630-623e-11eb-aebf-c306684b328d,panelIndex:%274%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:(),vis:!n),gridData:(h:15,i:%275%27,w:24,x:0,y:30),id:%279853d4d0-623d-11eb-aebf-c306684b328d%27,panelIndex:%275%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:(),vis:!n),gridData:(h:15,i:%276%27,w:24,x:24,y:30),id:%276ecb33b0-623d-11eb-aebf-c306684b328d%27,panelIndex:%276%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:(),vis:!n),gridData:(h:15,i:%277%27,w:24,x:0,y:45),id:b8e35c80-623c-11eb-aebf-c306684b328d,panelIndex:%277%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%278%27,w:24,x:24,y:45),id:f1bc75d0-6239-11eb-aebf-c306684b328d,panelIndex:%278%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%279%27,w:24,x:0,y:60),id:%270d8a8860-623a-11eb-aebf-c306684b328d%27,panelIndex:%279%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2710%27,w:24,x:24,y:60),id:d79fe3d0-6239-11eb-aebf-c306684b328d,panelIndex:%2710%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2711%27,w:24,x:0,y:75),id:%27318375a0-6240-11eb-aebf-c306684b328d%27,panelIndex:%2711%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2712%27,w:24,x:24,y:75),id:e461eb20-6245-11eb-aebf-c306684b328d,panelIndex:%2712%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2713%27,w:24,x:0,y:90),id:%2725bdc750-6242-11eb-aebf-c306684b328d%27,panelIndex:%2713%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2714%27,w:24,x:24,y:90),id:%2771dd7bc0-6248-11eb-aebf-c306684b328d%27,panelIndex:%2714%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2715%27,w:24,x:0,y:105),id:%276aea48a0-6240-11eb-aebf-c306684b328d%27,panelIndex:%2715%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2716%27,w:24,x:24,y:105),id:%2732b681f0-6241-11eb-aebf-c306684b328d%27,panelIndex:%2716%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2717%27,w:24,x:0,y:120),id:ccca99e0-6244-11eb-aebf-c306684b328d,panelIndex:%2717%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2718%27,w:24,x:24,y:120),id:a4d7be80-6245-11eb-aebf-c306684b328d,panelIndex:%2718%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2719%27,w:24,x:0,y:135),id:c94d8440-6248-11eb-aebf-c306684b328d,panelIndex:%2719%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%2720%27,w:24,x:24,y:135),id:db6226f0-61c0-11eb-aebf-c306684b328d,panelIndex:%2720%27,type:search,version:%277.13.1%27)),query:(language:lucene,query:%27%27),tags:!(),timeRestore:!f,title:logstash_dashboardwithtime,viewMode:view)"},"coreMigrationVersion":"7.13.5","id":"058bc10f0578013fc41ddedc9a1dcd1e","references":[],"sort":[1651599812857,5],"type":"url","updated_at":"2022-05-03T17:43:32.857Z","version":"WzE3LDFd"} +{"attributes":{"color":"#ba898f","description":"","name":"By value tag"},"coreMigrationVersion":"7.13.5","id":"07f48f70-ca29-11eb-bf5e-3de94e83d4f0","references":[],"sort":[1651599812857,6],"type":"tag","updated_at":"2022-05-03T17:43:32.857Z","version":"WzE4LDFd"} +{"attributes":{"fieldAttrs":"{\"machine.os\":{\"count\":1},\"spaces\":{\"count\":1},\"type\":{\"count\":1},\"bytes_scripted\":{\"count\":1}}","fields":"[{\"count\":1,\"script\":\"doc['bytes'].value*1024\",\"lang\":\"painless\",\"name\":\"bytes_scripted\",\"type\":\"number\",\"scripted\":true,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]","runtimeFieldMap":"{}","timeFieldName":"@timestamp","title":"logstash-*"},"coreMigrationVersion":"7.13.5","id":"56b34100-619d-11eb-aebf-c306684b328d","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1651599812857,7],"type":"index-pattern","updated_at":"2022-05-03T17:43:32.857Z","version":"WzIyLDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.5\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"60aaea59-d871-4e90-9ff3-78946d6bef90\"},\"panelIndex\":\"60aaea59-d871-4e90-9ff3-78946d6bef90\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsPie\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"2174c5fe-75d2-43ae-9c79-1a7cc7bbbaea\":{\"columns\":{\"65625f0d-e7f1-4370-b939-7db27af74de7\":{\"label\":\"Top values of geo.srcdest\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"geo.srcdest\",\"isBucketed\":true,\"params\":{\"size\":18,\"orderBy\":{\"type\":\"column\",\"columnId\":\"553a353f-dac5-4a52-a25d-52c6e1462597\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"553a353f-dac5-4a52-a25d-52c6e1462597\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"}},\"columnOrder\":[\"65625f0d-e7f1-4370-b939-7db27af74de7\",\"553a353f-dac5-4a52-a25d-52c6e1462597\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"2174c5fe-75d2-43ae-9c79-1a7cc7bbbaea\",\"groups\":[\"65625f0d-e7f1-4370-b939-7db27af74de7\",\"65625f0d-e7f1-4370-b939-7db27af74de7\",\"65625f0d-e7f1-4370-b939-7db27af74de7\"],\"metric\":\"553a353f-dac5-4a52-a25d-52c6e1462597\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-2174c5fe-75d2-43ae-9c79-1a7cc7bbbaea\"}]},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"9ed45b8b-534b-4fac-9fee-436896b90039\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"circular drilldown\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}}}}]","timeRestore":false,"title":"lens_panel_drilldown","version":1},"coreMigrationVersion":"7.13.5","id":"35ce3b30-ca29-11eb-bf5e-3de94e83d4f0","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"60aaea59-d871-4e90-9ff3-78946d6bef90:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"60aaea59-d871-4e90-9ff3-78946d6bef90:indexpattern-datasource-layer-2174c5fe-75d2-43ae-9c79-1a7cc7bbbaea","type":"index-pattern"},{"id":"08dec860-ca29-11eb-bf5e-3de94e83d4f0","name":"60aaea59-d871-4e90-9ff3-78946d6bef90:drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:9ed45b8b-534b-4fac-9fee-436896b90039:dashboardId","type":"dashboard"},{"id":"07f48f70-ca29-11eb-bf5e-3de94e83d4f0","name":"tag-07f48f70-ca29-11eb-bf5e-3de94e83d4f0","type":"tag"}],"sort":[1651613174194,1151],"type":"dashboard","updated_at":"2022-05-03T21:26:14.194Z","version":"WzcxMywxXQ=="} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[{\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"geo.srcdest\",\"negate\":true,\"params\":[\"CN:CN\",\"IN:CN\",\"CN:IN\",\"IN:IN\",\"CN:US\",\"IN:US\",\"US:IN\",\"US:CN\",\"ID:CN\",\"US:US\",\"CN:ID\",\"PK:CN\",\"BR:CN\",\"CN:PK\",\"BD:CN\",\"CN:BR\",\"IN:PK\",\"NG:CN\"],\"type\":\"phrases\",\"value\":\"CN:CN, IN:CN, CN:IN, IN:IN, CN:US, IN:US, US:IN, US:CN, ID:CN, US:US, CN:ID, PK:CN, BR:CN, CN:PK, BD:CN, CN:BR, IN:PK, NG:CN\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"bool\":{\"minimum_should_match\":1,\"should\":[{\"match_phrase\":{\"geo.srcdest\":\"CN:CN\"}},{\"match_phrase\":{\"geo.srcdest\":\"IN:CN\"}},{\"match_phrase\":{\"geo.srcdest\":\"CN:IN\"}},{\"match_phrase\":{\"geo.srcdest\":\"IN:IN\"}},{\"match_phrase\":{\"geo.srcdest\":\"CN:US\"}},{\"match_phrase\":{\"geo.srcdest\":\"IN:US\"}},{\"match_phrase\":{\"geo.srcdest\":\"US:IN\"}},{\"match_phrase\":{\"geo.srcdest\":\"US:CN\"}},{\"match_phrase\":{\"geo.srcdest\":\"ID:CN\"}},{\"match_phrase\":{\"geo.srcdest\":\"US:US\"}},{\"match_phrase\":{\"geo.srcdest\":\"CN:ID\"}},{\"match_phrase\":{\"geo.srcdest\":\"PK:CN\"}},{\"match_phrase\":{\"geo.srcdest\":\"BR:CN\"}},{\"match_phrase\":{\"geo.srcdest\":\"CN:PK\"}},{\"match_phrase\":{\"geo.srcdest\":\"BD:CN\"}},{\"match_phrase\":{\"geo.srcdest\":\"CN:BR\"}},{\"match_phrase\":{\"geo.srcdest\":\"IN:PK\"}},{\"match_phrase\":{\"geo.srcdest\":\"NG:CN\"}}]}},\"$state\":{\"store\":\"appState\"}}]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.5\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"095e13b2-d0ac-47db-a62b-0aca28931402\"},\"panelIndex\":\"095e13b2-d0ac-47db-a62b-0aca28931402\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"f61694eb-94ed-495d-9ce8-63592f040b0b\":{\"columns\":{\"75ddcdb4-3050-4545-b401-509384b0d532\":{\"label\":\"Top values of machine.os.raw\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"machine.os.raw\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"2f97b0f5-f0ff-40f2-abb0-bb7d1081a126\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"273e31ef-7c2d-4d0e-9063-5528f4011a51\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\"}},\"2f97b0f5-f0ff-40f2-abb0-bb7d1081a126\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"},\"2eb30654-0ead-40ac-92ab-d8d113e25ac5\":{\"label\":\"Average of bytes\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"bytes\",\"isBucketed\":false,\"scale\":\"ratio\"}},\"columnOrder\":[\"75ddcdb4-3050-4545-b401-509384b0d532\",\"273e31ef-7c2d-4d0e-9063-5528f4011a51\",\"2f97b0f5-f0ff-40f2-abb0-bb7d1081a126\",\"2eb30654-0ead-40ac-92ab-d8d113e25ac5\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"f61694eb-94ed-495d-9ce8-63592f040b0b\",\"accessors\":[\"2f97b0f5-f0ff-40f2-abb0-bb7d1081a126\",\"2eb30654-0ead-40ac-92ab-d8d113e25ac5\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"273e31ef-7c2d-4d0e-9063-5528f4011a51\",\"splitAccessor\":\"75ddcdb4-3050-4545-b401-509384b0d532\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-f61694eb-94ed-495d-9ce8-63592f040b0b\"}]},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"da7ad2b6-1e4a-40b5-9123-d0ec2bde858d\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"lens_panel_drilldown\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}}}},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"a254a623-a9af-4372-851b-572fa95b0902\"},\"panelIndex\":\"a254a623-a9af-4372-851b-572fa95b0902\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"vega\",\"params\":{\"spec\":\"{\\n/*\\n\\nWelcome to Vega visualizations. Here you can design your own dataviz from scratch using a declarative language called Vega, or its simpler form Vega-Lite. In Vega, you have the full control of what data is loaded, even from multiple sources, how that data is transformed, and what visual elements are used to show it. Use help icon to view Vega examples, tutorials, and other docs. Use the wrench icon to reformat this text, or to remove comments.\\n\\nThis example graph shows the document count in all indexes in the current time range. You might need to adjust the time filter in the upper right corner.\\n*/\\n\\n $schema: https://vega.github.io/schema/vega-lite/v4.json\\n title: Event counts from all indexes\\n\\n // Define the data source\\n data: {\\n url: {\\n/*\\nAn object instead of a string for the \\\"url\\\" param is treated as an Elasticsearch query. Anything inside this object is not part of the Vega language, but only understood by Kibana and Elasticsearch server. This query counts the number of documents per time interval, assuming you have a @timestamp field in your data.\\n\\nKibana has a special handling for the fields surrounded by \\\"%\\\". They are processed before the the query is sent to Elasticsearch. This way the query becomes context aware, and can use the time range and the dashboard filters.\\n*/\\n\\n // Apply dashboard context filters when set\\n %context%: true\\n // Filter the time picker (upper right corner) with this field\\n %timefield%: @timestamp\\n\\n/*\\nSee .search() documentation for : https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-search\\n*/\\n\\n // Which index to search\\n index: _all\\n // Aggregate data by the time field into time buckets, counting the number of documents in each bucket.\\n body: {\\n aggs: {\\n time_buckets: {\\n date_histogram: {\\n // Use date histogram aggregation on @timestamp field\\n field: @timestamp\\n // The interval value will depend on the daterange picker (true), or use an integer to set an approximate bucket count\\n interval: {%autointerval%: true}\\n // Make sure we get an entire range, even if it has no data\\n extended_bounds: {\\n // Use the current time range's start and end\\n min: {%timefilter%: \\\"min\\\"}\\n max: {%timefilter%: \\\"max\\\"}\\n }\\n // Use this for linear (e.g. line, area) graphs. Without it, empty buckets will not show up\\n min_doc_count: 0\\n }\\n }\\n }\\n // Speed up the response by only including aggregation results\\n size: 0\\n }\\n }\\n/*\\nElasticsearch will return results in this format:\\n\\naggregations: {\\n time_buckets: {\\n buckets: [\\n {\\n key_as_string: 2015-11-30T22:00:00.000Z\\n key: 1448920800000\\n doc_count: 0\\n },\\n {\\n key_as_string: 2015-11-30T23:00:00.000Z\\n key: 1448924400000\\n doc_count: 0\\n }\\n ...\\n ]\\n }\\n}\\n\\nFor our graph, we only need the list of bucket values. Use the format.property to discard everything else.\\n*/\\n format: {property: \\\"aggregations.time_buckets.buckets\\\"}\\n }\\n\\n // \\\"mark\\\" is the graphics element used to show our data. Other mark values are: area, bar, circle, line, point, rect, rule, square, text, and tick. See https://vega.github.io/vega-lite/docs/mark.html\\n mark: line\\n\\n // \\\"encoding\\\" tells the \\\"mark\\\" what data to use and in what way. See https://vega.github.io/vega-lite/docs/encoding.html\\n encoding: {\\n x: {\\n // The \\\"key\\\" value is the timestamp in milliseconds. Use it for X axis.\\n field: key\\n type: temporal\\n axis: {title: false} // Customize X axis format\\n }\\n y: {\\n // The \\\"doc_count\\\" is the count per bucket. Use it for Y axis.\\n field: doc_count\\n type: quantitative\\n axis: {title: \\\"Document count\\\"}\\n }\\n }\\n}\\n\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"index\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"key\":\"geo.srcdest\",\"negate\":false,\"params\":{\"query\":\"CN:CN\"},\"type\":\"phrase\"},\"query\":{\"match_phrase\":{\"geo.srcdest\":\"CN:CN\"}}}]}}},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"cfd2521d-15a0-4c64-b0ab-d2dc18f396e3\",\"triggers\":[\"CONTEXT_MENU_TRIGGER\"],\"action\":{\"name\":\"URL\",\"config\":{\"url\":{\"template\":\"http://localhost:5601/app/discover#/view/4acce030-ca2a-11eb-bf5e-3de94e83d4f0?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(columns:!(),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',key:ip,negate:!f,params:(query:'57.237.11.219'),type:phrase),query:(match_phrase:(ip:'57.237.11.219')))),index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}}]}}}},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"5de83d82-bbd1-4d30-be61-dd6724f32c07\"},\"panelIndex\":\"5de83d82-bbd1-4d30-be61-dd6724f32c07\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"metrics\",\"params\":{\"annotations\":[{\"fields\":\"response.raw\",\"template\":\"{{response.raw}}\",\"index_pattern\":\"logstash-*\",\"query_string\":{\"query\":\"response.raw :\\\"404\\\" \",\"language\":\"kuery\"},\"color\":\"#F00\",\"icon\":\"fa-bomb\",\"id\":\"37395960-ca28-11eb-9eac-2f3ccefcbeef\",\"ignore_global_filters\":1,\"ignore_panel_filters\":1,\"time_field\":\"@timestamp\"}],\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"index_pattern\":\"logstash-*\",\"interval\":\"\",\"isModelInvalid\":false,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"number\",\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"line_width\":1,\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"count\"}],\"point_size\":1,\"separate_axis\":0,\"split_color_mode\":\"kibana\",\"split_mode\":\"everything\",\"stacked\":\"none\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"@timestamp\",\"tooltip_mode\":\"show_all\",\"type\":\"timeseries\",\"use_kibana_indexes\":false},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"23d04651-266f-4f0a-8eef-6f190f0a84af\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"dashboard\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}}}},{\"version\":\"7.13.5\",\"type\":\"map\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"ac0b1e52-de90-4c93-864b-32ce338fef51\"},\"panelIndex\":\"ac0b1e52-de90-4c93-864b-32ce338fef51\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"layerListJSON\":\"[{\\\"sourceDescriptor\\\":{\\\"type\\\":\\\"EMS_TMS\\\",\\\"isAutoSelect\\\":true},\\\"id\\\":\\\"0965c5ce-6347-43f2-917e-b938ea3862f8\\\",\\\"label\\\":null,\\\"minZoom\\\":0,\\\"maxZoom\\\":24,\\\"alpha\\\":1,\\\"visible\\\":true,\\\"style\\\":{\\\"type\\\":\\\"TILE\\\"},\\\"type\\\":\\\"VECTOR_TILE\\\"},{\\\"sourceDescriptor\\\":{\\\"indexPatternId\\\":\\\"56b34100-619d-11eb-aebf-c306684b328d\\\",\\\"geoField\\\":\\\"geo.coordinates\\\",\\\"filterByMapBounds\\\":true,\\\"scalingType\\\":\\\"CLUSTERS\\\",\\\"id\\\":\\\"8fcc6cc4-919b-418c-9815-5a002cfca117\\\",\\\"type\\\":\\\"ES_SEARCH\\\",\\\"applyGlobalQuery\\\":true,\\\"applyGlobalTime\\\":true,\\\"tooltipProperties\\\":[],\\\"sortField\\\":\\\"\\\",\\\"sortOrder\\\":\\\"desc\\\",\\\"topHitsSplitField\\\":\\\"\\\",\\\"topHitsSize\\\":1},\\\"id\\\":\\\"0b28253c-ed9e-401f-9306-feb0e58d1c0e\\\",\\\"label\\\":\\\"Clustered logstash-*\\\",\\\"minZoom\\\":0,\\\"maxZoom\\\":24,\\\"alpha\\\":0.75,\\\"visible\\\":true,\\\"style\\\":{\\\"type\\\":\\\"VECTOR\\\",\\\"properties\\\":{\\\"icon\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"value\\\":\\\"marker\\\"}},\\\"fillColor\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"color\\\":\\\"#54B399\\\"}},\\\"lineColor\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"color\\\":\\\"#41937c\\\"}},\\\"lineWidth\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"size\\\":1}},\\\"iconSize\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"size\\\":6}},\\\"iconOrientation\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"orientation\\\":0}},\\\"labelText\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"value\\\":\\\"\\\"}},\\\"labelColor\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"color\\\":\\\"#000000\\\"}},\\\"labelSize\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"size\\\":14}},\\\"labelBorderColor\\\":{\\\"type\\\":\\\"STATIC\\\",\\\"options\\\":{\\\"color\\\":\\\"#FFFFFF\\\"}},\\\"symbolizeAs\\\":{\\\"options\\\":{\\\"value\\\":\\\"circle\\\"}},\\\"labelBorderSize\\\":{\\\"options\\\":{\\\"size\\\":\\\"SMALL\\\"}}},\\\"isTimeAware\\\":true},\\\"type\\\":\\\"BLENDED_VECTOR\\\",\\\"joins\\\":[]}]\",\"mapStateJSON\":\"{\\\"zoom\\\":1.45,\\\"center\\\":{\\\"lon\\\":0,\\\"lat\\\":19.94277},\\\"timeFilters\\\":{\\\"from\\\":\\\"2015-09-20T01:56:56.132Z\\\",\\\"to\\\":\\\"2015-09-21T11:18:20.471Z\\\"},\\\"refreshConfig\\\":{\\\"isPaused\\\":true,\\\"interval\\\":0},\\\"query\\\":{\\\"query\\\":\\\"\\\",\\\"language\\\":\\\"kuery\\\"},\\\"filters\\\":[],\\\"settings\\\":{\\\"autoFitToDataBounds\\\":false,\\\"backgroundColor\\\":\\\"#ffffff\\\",\\\"disableInteractive\\\":false,\\\"disableTooltipControl\\\":false,\\\"hideToolbarOverlay\\\":false,\\\"hideLayerControl\\\":false,\\\"hideViewControl\\\":false,\\\"initialLocation\\\":\\\"LAST_SAVED_LOCATION\\\",\\\"fixedLocation\\\":{\\\"lat\\\":0,\\\"lon\\\":0,\\\"zoom\\\":2},\\\"browserLocation\\\":{\\\"zoom\\\":2},\\\"maxZoom\\\":24,\\\"minZoom\\\":0,\\\"showScaleControl\\\":false,\\\"showSpatialFilters\\\":true,\\\"spatialFiltersAlpa\\\":0.3,\\\"spatialFiltersFillColor\\\":\\\"#DA8B45\\\",\\\"spatialFiltersLineColor\\\":\\\"#DA8B45\\\"}}\",\"uiStateJSON\":\"{\\\"isLayerTOCOpen\\\":true,\\\"openTOCDetails\\\":[]}\"},\"mapCenter\":{\"lat\":-24.21784,\"lon\":4.3751,\"zoom\":1.45},\"mapBuffer\":{\"minLon\":-222.61538000000002,\"minLat\":-101.36965000000001,\"maxLon\":231.36558,\"maxLat\":65.74483000000001},\"isLayerTOCOpen\":true,\"openTOCDetails\":[],\"hiddenLayers\":[],\"enhancements\":{}}},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"147049a3-5826-48e6-9514-17078f94b6bd\"},\"panelIndex\":\"147049a3-5826-48e6-9514-17078f94b6bd\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"significant_terms\",\"params\":{\"field\":\"geo.srcdest\",\"size\":77},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}}}]","timeRestore":false,"title":"logstash_by_value_dashboard","version":1},"coreMigrationVersion":"7.13.5","id":"08dec860-ca29-11eb-bf5e-3de94e83d4f0","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"095e13b2-d0ac-47db-a62b-0aca28931402:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"095e13b2-d0ac-47db-a62b-0aca28931402:indexpattern-datasource-layer-f61694eb-94ed-495d-9ce8-63592f040b0b","type":"index-pattern"},{"id":"35ce3b30-ca29-11eb-bf5e-3de94e83d4f0","name":"095e13b2-d0ac-47db-a62b-0aca28931402:drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:da7ad2b6-1e4a-40b5-9123-d0ec2bde858d:dashboardId","type":"dashboard"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"a254a623-a9af-4372-851b-572fa95b0902:kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"35ce3b30-ca29-11eb-bf5e-3de94e83d4f0","name":"5de83d82-bbd1-4d30-be61-dd6724f32c07:drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:23d04651-266f-4f0a-8eef-6f190f0a84af:dashboardId","type":"dashboard"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"ac0b1e52-de90-4c93-864b-32ce338fef51:layer_1_source_index_pattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"147049a3-5826-48e6-9514-17078f94b6bd:kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"07f48f70-ca29-11eb-bf5e-3de94e83d4f0","name":"tag-07f48f70-ca29-11eb-bf5e-3de94e83d4f0","type":"tag"}],"sort":[1651613469669,1400],"type":"dashboard","updated_at":"2022-05-03T21:31:09.669Z","version":"Wzk2NiwxXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_scriptedfieldviz","uiStateJSON":"{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}}","version":1,"visState":"{\"title\":\"logstash_scriptedfieldviz\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"range\",\"schema\":\"group\",\"params\":{\"field\":\"bytes_scripted\",\"ranges\":[{\"from\":0,\"to\":40000},{\"from\":40001,\"to\":20000000}]}}]}"},"coreMigrationVersion":"7.13.5","id":"0a274320-61cc-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,9],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzIzLDFd"} +{"attributes":{"columns":[],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"type\":\"phrases\",\"key\":\"geo.srcdest\",\"value\":\"IN:CN\",\"params\":[\"IN:CN\"],\"alias\":null,\"negate\":false,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"bool\":{\"should\":[{\"match_phrase\":{\"geo.srcdest\":\"IN:CN\"}}],\"minimum_should_match\":1}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"search_saved","version":1},"coreMigrationVersion":"7.13.5","id":"0abce1c0-ca2a-11eb-bf5e-3de94e83d4f0","migrationVersion":{"search":"7.9.3"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"sort":[1651612922671,997],"type":"search","updated_at":"2022-05-03T21:22:02.671Z","version":"WzU4MCwxXQ=="} +{"attributes":{"color":"#81a93f","description":"","name":"logstash_tag"},"coreMigrationVersion":"7.13.5","id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","references":[],"sort":[1651599812857,262],"type":"tag","updated_at":"2022-05-03T17:43:32.857Z","version":"WzI1LDFd"} +{"attributes":{"description":"","layerListJSON":"[{\"sourceDescriptor\":{\"type\":\"EMS_TMS\",\"isAutoSelect\":true},\"id\":\"4c2394ca-a6a2-4f8d-9631-259eb3a9627f\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"style\":{\"type\":\"TILE\"},\"type\":\"VECTOR_TILE\"},{\"sourceDescriptor\":{\"geoField\":\"geo.coordinates\",\"filterByMapBounds\":true,\"scalingType\":\"CLUSTERS\",\"id\":\"7555324e-e793-4b7d-a9d2-cd63e6b7fe3d\",\"type\":\"ES_SEARCH\",\"applyGlobalQuery\":true,\"applyGlobalTime\":true,\"tooltipProperties\":[\"geo.srcdest\",\"machine.os\",\"type\"],\"sortField\":\"bytes_scripted\",\"sortOrder\":\"desc\",\"topHitsSplitField\":\"\",\"topHitsSize\":1,\"indexPatternRefName\":\"layer_1_source_index_pattern\"},\"id\":\"6a493d8b-a220-46bc-8906-a1a7569799e0\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"icon\":{\"type\":\"STATIC\",\"options\":{\"value\":\"marker\"}},\"fillColor\":{\"type\":\"DYNAMIC\",\"options\":{\"color\":\"Blues\",\"colorCategory\":\"palette_0\",\"field\":{\"name\":\"extension.raw\",\"origin\":\"source\"},\"fieldMetaOptions\":{\"isEnabled\":true,\"sigma\":3},\"type\":\"CATEGORICAL\"}},\"lineColor\":{\"type\":\"DYNAMIC\",\"options\":{\"color\":\"Blues\",\"colorCategory\":\"palette_0\",\"field\":{\"name\":\"machine.os.raw\",\"origin\":\"source\"},\"fieldMetaOptions\":{\"isEnabled\":true,\"sigma\":3},\"type\":\"CATEGORICAL\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":6}},\"iconOrientation\":{\"type\":\"STATIC\",\"options\":{\"orientation\":0}},\"labelText\":{\"type\":\"STATIC\",\"options\":{\"value\":\"\"}},\"labelColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#000000\"}},\"labelSize\":{\"type\":\"STATIC\",\"options\":{\"size\":14}},\"labelBorderColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"symbolizeAs\":{\"options\":{\"value\":\"circle\"}},\"labelBorderSize\":{\"options\":{\"size\":\"SMALL\"}}},\"isTimeAware\":true},\"type\":\"BLENDED_VECTOR\",\"joins\":[]}]","mapStateJSON":"{\"zoom\":1.56,\"center\":{\"lon\":0,\"lat\":19.94277},\"timeFilters\":{\"from\":\"now-15y\",\"to\":\"now\"},\"refreshConfig\":{\"isPaused\":true,\"interval\":0},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"settings\":{\"autoFitToDataBounds\":false,\"backgroundColor\":\"#ffffff\",\"disableInteractive\":false,\"disableTooltipControl\":false,\"hideToolbarOverlay\":false,\"hideLayerControl\":false,\"hideViewControl\":false,\"initialLocation\":\"LAST_SAVED_LOCATION\",\"fixedLocation\":{\"lat\":0,\"lon\":0,\"zoom\":2},\"browserLocation\":{\"zoom\":2},\"maxZoom\":24,\"minZoom\":0,\"showScaleControl\":false,\"showSpatialFilters\":true,\"spatialFiltersAlpa\":0.3,\"spatialFiltersFillColor\":\"#DA8B45\",\"spatialFiltersLineColor\":\"#DA8B45\"}}","title":"logstash_maps","uiStateJSON":"{\"isLayerTOCOpen\":true,\"openTOCDetails\":[]}"},"coreMigrationVersion":"7.13.5","id":"0c5974f0-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"map":"7.12.0"},"references":[{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"layer_1_source_index_pattern","type":"index-pattern"}],"sort":[1651599812857,265],"type":"map","updated_at":"2022-05-03T17:43:32.857Z","version":"WzI2LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_datatable","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"logstash_datatable\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":true,\"totalFunc\":\"sum\",\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-07-24T08:58:14.175Z\",\"to\":\"2015-11-11T13:28:17.223Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"response.raw\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"0d8a8860-623a-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,267],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzI3LDFd"} +{"attributes":{"description":null,"state":{"datasourceStates":{"indexpattern":{"layers":{"35fd070e-5bbc-4906-bf69-8548a213d7a0":{"columnOrder":["2bf7969f-0371-4df2-a398-0a191e428ce5","aab812d6-609b-444d-9990-1e67f85fd85d","e9829e8a-c484-4c9d-b489-f1eb3fb138d2","4fc9fb3b-29a5-4679-ab3c-90d5daaf0661"],"columns":{"2bf7969f-0371-4df2-a398-0a191e428ce5":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"4fc9fb3b-29a5-4679-ab3c-90d5daaf0661":{"dataType":"number","isBucketed":false,"label":"Moving average of Median of bytes","operationType":"moving_average","params":{"window":5},"references":["e9829e8a-c484-4c9d-b489-f1eb3fb138d2"],"scale":"ratio"},"aab812d6-609b-444d-9990-1e67f85fd85d":{"dataType":"number","isBucketed":false,"label":"Average of bytes","operationType":"average","scale":"ratio","sourceField":"bytes"},"e9829e8a-c484-4c9d-b489-f1eb3fb138d2":{"dataType":"number","isBucketed":false,"label":"Median of bytes","operationType":"median","scale":"ratio","sourceField":"bytes"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["aab812d6-609b-444d-9990-1e67f85fd85d","4fc9fb3b-29a5-4679-ab3c-90d5daaf0661"],"layerId":"35fd070e-5bbc-4906-bf69-8548a213d7a0","position":"top","seriesType":"bar_stacked","showGridlines":false,"xAccessor":"2bf7969f-0371-4df2-a398-0a191e428ce5"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_barvertical_stacked_average","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"0dbbf8b0-be3c-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-35fd070e-5bbc-4906-bf69-8548a213d7a0","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,16],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzI4LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_area_chart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_area_chart\",\"type\":\"area\",\"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,\"filter\":true},\"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,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2010-01-28T19:25:55.242Z\",\"to\":\"2021-01-28T19:40:55.242Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"machine.os.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"machine OS\"}}]}"},"coreMigrationVersion":"7.13.5","id":"36b91810-6239-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,18],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzI5LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_horizontal","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_horizontal\",\"type\":\"horizontal_bar\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":200},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":75,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"no of documents\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"no of documents\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":true,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"no of documents\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-07-24T08:58:14.175Z\",\"to\":\"2015-11-11T13:28:17.223Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"agent.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"extension.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"e4aef350-623d-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,20],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzMwLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_linechart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_linechart\",\"type\":\"line\",\"params\":{\"type\":\"line\",\"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,\"filter\":true},\"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\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"radiusRatio\":51,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-09-18T06:38:43.311Z\",\"to\":\"2015-09-26T04:02:51.104Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"radius\",\"params\":{\"field\":\"bytes\",\"customLabel\":\"bubbles\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"machine.os.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"f92e5630-623e-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,22],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzMxLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_heatmap","uiStateJSON":"{\"vis\":{\"defaultColors\":{\"0% - 25%\":\"rgb(255,255,204)\",\"25% - 50%\":\"rgb(254,217,118)\",\"50% - 75%\":\"rgb(253,141,60)\",\"75% - 100%\":\"rgb(227,27,28)\"}}}","version":1,"visState":"{\"title\":\"logstash_heatmap\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Yellow to Red\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":true,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"#555\"}}],\"row\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-07-24T08:58:14.175Z\",\"to\":\"2015-11-11T13:28:17.223Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"machine.os.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"response.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"9853d4d0-623d-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,24],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzMyLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_goalchart","uiStateJSON":"{\"vis\":{\"defaultColors\":{\"0 - 33\":\"rgb(0,104,55)\",\"33 - 67\":\"rgb(255,255,190)\",\"67 - 100\":\"rgb(165,0,38)\"}}}","version":1,"visState":"{\"title\":\"logstash_goalchart\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Circle\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000},{\"from\":10001,\"to\":20000},{\"from\":20001,\"to\":30000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60},\"minAngle\":0,\"maxAngle\":6.283185307179586}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"group\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-07-24T08:58:14.175Z\",\"to\":\"2015-11-11T13:28:17.223Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"coreMigrationVersion":"7.13.5","id":"6ecb33b0-623d-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,26],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzMzLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_gauge","uiStateJSON":"{\"vis\":{\"defaultColors\":{\"0 - 50\":\"rgb(0,104,55)\",\"50 - 75\":\"rgb(255,255,190)\",\"75 - 100\":\"rgb(165,0,38)\"}}}","version":1,"visState":"{\"title\":\"logstash_gauge\",\"type\":\"gauge\",\"params\":{\"type\":\"gauge\",\"addTooltip\":true,\"addLegend\":true,\"isDisplayWarning\":false,\"gauge\":{\"extendRange\":true,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"Labels\",\"colorsRange\":[{\"from\":0,\"to\":50},{\"from\":50,\"to\":75},{\"from\":75,\"to\":100}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":true,\"labels\":false,\"color\":\"#333\"},\"type\":\"meter\",\"style\":{\"bgWidth\":0.9,\"width\":0.9,\"mask\":false,\"bgMask\":false,\"maskBars\":50,\"bgFill\":\"#eee\",\"bgColor\":false,\"subText\":\"\",\"fontSize\":60,\"labelColor\":true},\"alignment\":\"horizontal\"}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"range\",\"schema\":\"group\",\"params\":{\"field\":\"bytes\",\"ranges\":[{\"from\":0,\"to\":10001},{\"from\":10002,\"to\":1000000}],\"json\":\"\"}}]}"},"coreMigrationVersion":"7.13.5","id":"b8e35c80-623c-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,28],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzM0LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_coordinatemaps","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_coordinatemaps\",\"type\":\"tile_map\",\"params\":{\"colorSchema\":\"Yellow to Red\",\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":false,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"selectedTmsLayer\":{\"origin\":\"elastic_maps_service\",\"id\":\"road_map\",\"minZoom\":0,\"maxZoom\":18,\"attribution\":\"

© OpenStreetMap contributors|OpenMapTiles|Elastic Maps Service

\"}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"mapZoom\":2,\"mapCenter\":[0,0],\"precision\":2,\"customLabel\":\"logstash src/dest\"}}]}"},"coreMigrationVersion":"7.13.5","id":"f1bc75d0-6239-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,30],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzM1LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"title":"logstash_inputcontrols","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_inputcontrols\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1611928563867\",\"fieldName\":\"machine.ram\",\"parent\":\"\",\"label\":\"Logstash RAM\",\"type\":\"range\",\"options\":{\"decimalPlaces\":0,\"step\":1024},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1611928586274\",\"fieldName\":\"machine.os.raw\",\"parent\":\"\",\"label\":\"Logstash OS\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_1_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}"},"coreMigrationVersion":"7.13.5","id":"d79fe3d0-6239-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"control_0_index_pattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"control_1_index_pattern","type":"index-pattern"}],"sort":[1651599812857,33],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzM2LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"title":"logstash_markdown","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":true,\"markdown\":\"Kibana is built with JS https://www.javascript.com/\"},\"aggs\":[]}"},"coreMigrationVersion":"7.13.5","id":"318375a0-6240-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1651599812857,34],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzM3LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"title":"logstash_vegaviz","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_vegaviz\",\"type\":\"vega\",\"params\":{\"spec\":\"{\\n/*\\n\\nWelcome to Vega visualizations. Here you can design your own dataviz from scratch using a declarative language called Vega, or its simpler form Vega-Lite. In Vega, you have the full control of what data is loaded, even from multiple sources, how that data is transformed, and what visual elements are used to show it. Use help icon to view Vega examples, tutorials, and other docs. Use the wrench icon to reformat this text, or to remove comments.\\n\\nThis example graph shows the document count in all indexes in the current time range. You might need to adjust the time filter in the upper right corner.\\n*/\\n\\n $schema: https://vega.github.io/schema/vega-lite/v2.json\\n title: Event counts from all indexes\\n\\n // Define the data source\\n data: {\\n url: {\\n/*\\nAn object instead of a string for the \\\"url\\\" param is treated as an Elasticsearch query. Anything inside this object is not part of the Vega language, but only understood by Kibana and Elasticsearch server. This query counts the number of documents per time interval, assuming you have a @timestamp field in your data.\\n\\nKibana has a special handling for the fields surrounded by \\\"%\\\". They are processed before the the query is sent to Elasticsearch. This way the query becomes context aware, and can use the time range and the dashboard filters.\\n*/\\n\\n // Apply dashboard context filters when set\\n %context%: true\\n // Filter the time picker (upper right corner) with this field\\n %timefield%: @timestamp\\n\\n/*\\nSee .search() documentation for : https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-search\\n*/\\n\\n // Which index to search\\n index: logstash-*\\n // Aggregate data by the time field into time buckets, counting the number of documents in each bucket.\\n body: {\\n aggs: {\\n time_buckets: {\\n date_histogram: {\\n // Use date histogram aggregation on @timestamp field\\n field: @timestamp\\n // The interval value will depend on the daterange picker (true), or use an integer to set an approximate bucket count\\n interval: {%autointerval%: true}\\n // Make sure we get an entire range, even if it has no data\\n extended_bounds: {\\n // Use the current time range's start and end\\n min: {%timefilter%: \\\"min\\\"}\\n max: {%timefilter%: \\\"max\\\"}\\n }\\n // Use this for linear (e.g. line, area) graphs. Without it, empty buckets will not show up\\n min_doc_count: 13\\n }\\n }\\n }\\n // Speed up the response by only including aggregation results\\n size: 0\\n }\\n }\\n/*\\nElasticsearch will return results in this format:\\n\\naggregations: {\\n time_buckets: {\\n buckets: [\\n {\\n key_as_string: 2015-11-30T22:00:00.000Z\\n key: 1448920800000\\n doc_count: 0\\n },\\n {\\n key_as_string: 2015-11-30T23:00:00.000Z\\n key: 1448924400000\\n doc_count: 0\\n }\\n ...\\n ]\\n }\\n}\\n\\nFor our graph, we only need the list of bucket values. Use the format.property to discard everything else.\\n*/\\n format: {property: \\\"aggregations.time_buckets.buckets\\\"}\\n }\\n\\n // \\\"mark\\\" is the graphics element used to show our data. Other mark values are: area, bar, circle, line, point, rect, rule, square, text, and tick. See https://vega.github.io/vega-lite/docs/mark.html\\n mark: line\\n\\n // \\\"encoding\\\" tells the \\\"mark\\\" what data to use and in what way. See https://vega.github.io/vega-lite/docs/encoding.html\\n encoding: {\\n x: {\\n // The \\\"key\\\" value is the timestamp in milliseconds. Use it for X axis.\\n field: key\\n type: temporal\\n axis: {title: false} // Customize X axis format\\n }\\n y: {\\n // The \\\"doc_count\\\" is the count per bucket. Use it for Y axis.\\n field: doc_count\\n type: quantitative\\n axis: {title: \\\"Document count\\\"}\\n }\\n }\\n}\\n\"},\"aggs\":[]}"},"coreMigrationVersion":"7.13.5","id":"e461eb20-6245-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1651599812857,35],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzM4LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_regionmap","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_regionmap\",\"type\":\"region_map\",\"params\":{\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"emsHotLink\":\"https://maps.elastic.co/v6.7?locale=en#file/world_countries\",\"isDisplayWarning\":true,\"legendPosition\":\"bottomright\",\"mapCenter\":[0,0],\"mapZoom\":2,\"outlineWeight\":1,\"selectedJoinField\":{\"type\":\"id\",\"name\":\"iso2\",\"description\":\"ISO 3166-1 alpha-2 code\"},\"showAllShapes\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"selectedTmsLayer\":{\"origin\":\"elastic_maps_service\",\"id\":\"road_map\",\"minZoom\":0,\"maxZoom\":18,\"attribution\":\"

© OpenStreetMap contributors|OpenMapTiles|Elastic Maps Service

\"}},\"selectedLayer\":{\"name\":\"World Countries\",\"origin\":\"elastic_maps_service\",\"id\":\"world_countries\",\"created_at\":\"2017-04-26T17:12:15.978370\",\"attribution\":\"Made with NaturalEarth | Elastic Maps Service\",\"fields\":[{\"type\":\"id\",\"name\":\"iso2\",\"description\":\"ISO 3166-1 alpha-2 code\"},{\"type\":\"id\",\"name\":\"iso3\",\"description\":\"ISO 3166-1 alpha-3 code\"},{\"type\":\"property\",\"name\":\"name\",\"description\":\"name\"}],\"format\":{\"type\":\"geojson\"},\"layerId\":\"elastic_maps_service.World Countries\",\"isEMS\":true}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.dest\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"25bdc750-6242-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,37],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzM5LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_verticalbarchart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_verticalbarchart\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"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,\"filter\":true},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\",\"defaultYExtents\":true},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":true,\"row\":true,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2015-09-18T06:38:43.311Z\",\"to\":\"2015-09-26T04:02:51.104Z\",\"mode\":\"absolute\"},\"useNormalizedEsInterval\":true,\"interval\":\"h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{},\"scaleMetricValues\":true}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"response.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Response code\"}}]}"},"coreMigrationVersion":"7.13.5","id":"71dd7bc0-6248-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,39],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQwLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_metricviz","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_metricviz\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"range\",\"schema\":\"group\",\"params\":{\"field\":\"bytes_scripted\",\"ranges\":[{\"from\":0,\"to\":10000},{\"from\":10001,\"to\":300000}]}}]}"},"coreMigrationVersion":"7.13.5","id":"6aea48a0-6240-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,41],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQxLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_piechart","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"machine.os.raw\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":true,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"right\",\"type\":\"pie\"},\"title\":\"logstash_piechart\",\"type\":\"pie\"}"},"coreMigrationVersion":"7.13.5","id":"32b681f0-6241-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,43],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQyLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"logstash_tagcloud","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_tagcloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"log\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.srcdest\",\"size\":23,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"ccca99e0-6244-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,45],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQzLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"title":"logstash_timelion","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(q='machine.os.raw:win xp' , index=logstash-*)\",\"interval\":\"auto\"},\"aggs\":[]}"},"coreMigrationVersion":"7.13.5","id":"a4d7be80-6245-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1651599812857,46],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQ0LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"logstash_tsvb","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_tsvb\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"annotations\":[{\"fields\":\"machine.os.raw\",\"template\":\"{{machine.os.raw}}\",\"index_pattern\":\"logstash-*\",\"query_string\":{\"query\":\"machine.os.raw :\\\"win xp\\\" \",\"language\":\"lucene\"},\"id\":\"aa43ceb0-6248-11eb-9a82-ef1c6e6c0265\",\"color\":\"#F00\",\"time_field\":\"@timestamp\",\"icon\":\"fa-tag\",\"ignore_global_filters\":1,\"ignore_panel_filters\":1}],\"use_kibana_indexes\":false},\"aggs\":[]}"},"coreMigrationVersion":"7.13.5","id":"c94d8440-6248-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1651599812857,47],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQ1LDFd"} +{"attributes":{"columns":["bytes_scripted"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"machine.os.raw :\\\"win xp\\\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"logstash_scripted_saved_search","version":1},"coreMigrationVersion":"7.13.5","id":"db6226f0-61c0-11eb-aebf-c306684b328d","migrationVersion":{"search":"7.9.3"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,49],"type":"search","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQ2LDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_2\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"3\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"5\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_5\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"6\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_6\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"7\",\"w\":24,\"x\":0,\"y\":45},\"panelIndex\":\"7\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_7\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"8\",\"w\":24,\"x\":24,\"y\":45},\"panelIndex\":\"8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"9\",\"w\":24,\"x\":0,\"y\":60},\"panelIndex\":\"9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"10\",\"w\":24,\"x\":24,\"y\":60},\"panelIndex\":\"10\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_10\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"11\",\"w\":24,\"x\":0,\"y\":75},\"panelIndex\":\"11\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_11\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"12\",\"w\":24,\"x\":24,\"y\":75},\"panelIndex\":\"12\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_12\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"13\",\"w\":24,\"x\":0,\"y\":90},\"panelIndex\":\"13\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"14\",\"w\":24,\"x\":24,\"y\":90},\"panelIndex\":\"14\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_14\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"15\",\"w\":24,\"x\":0,\"y\":105},\"panelIndex\":\"15\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"16\",\"w\":24,\"x\":24,\"y\":105},\"panelIndex\":\"16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_16\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"17\",\"w\":24,\"x\":0,\"y\":120},\"panelIndex\":\"17\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"18\",\"w\":24,\"x\":24,\"y\":120},\"panelIndex\":\"18\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"19\",\"w\":24,\"x\":0,\"y\":135},\"panelIndex\":\"19\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_19\"},{\"version\":\"7.13.5\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"20\",\"w\":24,\"x\":24,\"y\":135},\"panelIndex\":\"20\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_20\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"logstash_dashboardwithtime","version":1},"coreMigrationVersion":"7.13.5","id":"154944b0-6249-11eb-aebf-c306684b328d","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"36b91810-6239-11eb-aebf-c306684b328d","name":"1:panel_1","type":"visualization"},{"id":"0a274320-61cc-11eb-aebf-c306684b328d","name":"2:panel_2","type":"visualization"},{"id":"e4aef350-623d-11eb-aebf-c306684b328d","name":"3:panel_3","type":"visualization"},{"id":"f92e5630-623e-11eb-aebf-c306684b328d","name":"4:panel_4","type":"visualization"},{"id":"9853d4d0-623d-11eb-aebf-c306684b328d","name":"5:panel_5","type":"visualization"},{"id":"6ecb33b0-623d-11eb-aebf-c306684b328d","name":"6:panel_6","type":"visualization"},{"id":"b8e35c80-623c-11eb-aebf-c306684b328d","name":"7:panel_7","type":"visualization"},{"id":"f1bc75d0-6239-11eb-aebf-c306684b328d","name":"8:panel_8","type":"visualization"},{"id":"0d8a8860-623a-11eb-aebf-c306684b328d","name":"9:panel_9","type":"visualization"},{"id":"d79fe3d0-6239-11eb-aebf-c306684b328d","name":"10:panel_10","type":"visualization"},{"id":"318375a0-6240-11eb-aebf-c306684b328d","name":"11:panel_11","type":"visualization"},{"id":"e461eb20-6245-11eb-aebf-c306684b328d","name":"12:panel_12","type":"visualization"},{"id":"25bdc750-6242-11eb-aebf-c306684b328d","name":"13:panel_13","type":"visualization"},{"id":"71dd7bc0-6248-11eb-aebf-c306684b328d","name":"14:panel_14","type":"visualization"},{"id":"6aea48a0-6240-11eb-aebf-c306684b328d","name":"15:panel_15","type":"visualization"},{"id":"32b681f0-6241-11eb-aebf-c306684b328d","name":"16:panel_16","type":"visualization"},{"id":"ccca99e0-6244-11eb-aebf-c306684b328d","name":"17:panel_17","type":"visualization"},{"id":"a4d7be80-6245-11eb-aebf-c306684b328d","name":"18:panel_18","type":"visualization"},{"id":"c94d8440-6248-11eb-aebf-c306684b328d","name":"19:panel_19","type":"visualization"},{"id":"db6226f0-61c0-11eb-aebf-c306684b328d","name":"20:panel_20","type":"search"}],"sort":[1651613667249,1638],"type":"dashboard","updated_at":"2022-05-03T21:34:27.249Z","version":"WzExNDMsMV0="} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"26e2cf99-d931-4320-9e15-9dbc148f3534":{"columnOrder":["6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e","beb72af1-239c-46d8-823b-b00d1e2ace43"],"columns":{"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e":{"dataType":"string","isBucketed":true,"label":"Top values of url.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"beb72af1-239c-46d8-823b-b00d1e2ace43","type":"column"},"orderDirection":"desc","otherBucket":true,"size":20},"scale":"ordinal","sourceField":"url.raw"},"beb72af1-239c-46d8-823b-b00d1e2ace43":{"dataType":"number","isBucketed":false,"label":"Unique count of geo.srcdest","operationType":"unique_count","scale":"ratio","sourceField":"geo.srcdest"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e","6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e","6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e"],"layerId":"26e2cf99-d931-4320-9e15-9dbc148f3534","legendDisplay":"default","metric":"beb72af1-239c-46d8-823b-b00d1e2ace43","nestedLegend":false,"numberDisplay":"percent"}],"shape":"donut"}},"title":"lens_pie_chart","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.5","id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,53],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQ4LDFd"} +{"attributes":{"description":null,"state":{"datasourceStates":{"indexpattern":{"layers":{"a3ac0e3d-63ec-49b2-882a-b34680a967ba":{"columnOrder":["352a2c02-aa6f-4a35-b776-45c3715a6c5e","8ef68cbb-e039-49d6-b15e-be81559f4b55","14fad6b1-6a7c-4ae8-ae4b-d9569e31e04a"],"columns":{"14fad6b1-6a7c-4ae8-ae4b-d9569e31e04a":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"352a2c02-aa6f-4a35-b776-45c3715a6c5e":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"14fad6b1-6a7c-4ae8-ae4b-d9569e31e04a","type":"column"},"orderDirection":"desc","otherBucket":true,"size":67},"scale":"ordinal","sourceField":"geo.srcdest"},"8ef68cbb-e039-49d6-b15e-be81559f4b55":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["14fad6b1-6a7c-4ae8-ae4b-d9569e31e04a"],"layerId":"a3ac0e3d-63ec-49b2-882a-b34680a967ba","position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"splitAccessor":"352a2c02-aa6f-4a35-b776-45c3715a6c5e","xAccessor":"8ef68cbb-e039-49d6-b15e-be81559f4b55"}],"legend":{"isVisible":true,"position":"top","showSingleSeries":true},"preferredSeriesType":"bar_percentage_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_bar_verticalpercentage","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"aa4b8da0-bd9f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-a3ac0e3d-63ec-49b2-882a-b34680a967ba","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,57],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzQ5LDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"037b7937-790b-4d2d-94a5-7f5837a6ef05":{"columnOrder":["b3d46616-75e0-419e-97ea-91148961ef94","025a0fb3-dc44-4f5c-b517-2d71d3f26f14","c476db14-0cc1-40ec-863e-d2779256a407"],"columns":{"025a0fb3-dc44-4f5c-b517-2d71d3f26f14":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"b3d46616-75e0-419e-97ea-91148961ef94":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"c476db14-0cc1-40ec-863e-d2779256a407","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"geo.srcdest"},"c476db14-0cc1-40ec-863e-d2779256a407":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"lucene","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["c476db14-0cc1-40ec-863e-d2779256a407"],"layerId":"037b7937-790b-4d2d-94a5-7f5837a6ef05","position":"top","seriesType":"bar_stacked","showGridlines":false,"splitAccessor":"b3d46616-75e0-419e-97ea-91148961ef94","xAccessor":"025a0fb3-dc44-4f5c-b517-2d71d3f26f14"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_barchart_vertical","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"2d3f1250-bd9f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-037b7937-790b-4d2d-94a5-7f5837a6ef05","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,61],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzUwLDFd"} +{"attributes":{"description":null,"state":{"datasourceStates":{"indexpattern":{"layers":{"212688dc-e7d7-4875-a221-09e6191bdcf7":{"columnOrder":["05410186-83c4-460a-82bf-dd7e9d998c9f","e8659feb-1db4-4706-9147-ac1fd513a1ba","c9a32fd0-a465-44fb-8adc-b957fb72cad5"],"columns":{"05410186-83c4-460a-82bf-dd7e9d998c9f":{"dataType":"string","isBucketed":true,"label":"Top values of extension.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"c9a32fd0-a465-44fb-8adc-b957fb72cad5","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"extension.raw"},"c9a32fd0-a465-44fb-8adc-b957fb72cad5":{"dataType":"number","isBucketed":false,"label":"Average of bytes","operationType":"average","scale":"ratio","sourceField":"bytes"},"e8659feb-1db4-4706-9147-ac1fd513a1ba":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["c9a32fd0-a465-44fb-8adc-b957fb72cad5"],"layerId":"212688dc-e7d7-4875-a221-09e6191bdcf7","position":"top","seriesType":"bar_horizontal_stacked","showGridlines":false,"splitAccessor":"05410186-83c4-460a-82bf-dd7e9d998c9f","xAccessor":"e8659feb-1db4-4706-9147-ac1fd513a1ba"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_horizontal_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_barhorizontal_stacked","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"edd5a560-bda4-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-212688dc-e7d7-4875-a221-09e6191bdcf7","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,65],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzUxLDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"7ab04fd4-04da-4023-8899-d94620193607":{"columnOrder":["0ab2d5f8-11f0-4b25-b8bb-3127a3b8d4c7","9eb851dd-31f6-481a-84d1-9ecce53a6ad2","f6b271a7-509b-4c37-b7b6-ac5be4bcb49a"],"columns":{"0ab2d5f8-11f0-4b25-b8bb-3127a3b8d4c7":{"dataType":"string","isBucketed":true,"label":"Top values of request.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"f6b271a7-509b-4c37-b7b6-ac5be4bcb49a","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"request.raw"},"9eb851dd-31f6-481a-84d1-9ecce53a6ad2":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"f6b271a7-509b-4c37-b7b6-ac5be4bcb49a":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["f6b271a7-509b-4c37-b7b6-ac5be4bcb49a"],"layerId":"7ab04fd4-04da-4023-8899-d94620193607","position":"top","seriesType":"bar_horizontal_percentage_stacked","showGridlines":false,"splitAccessor":"0ab2d5f8-11f0-4b25-b8bb-3127a3b8d4c7","xAccessor":"9eb851dd-31f6-481a-84d1-9ecce53a6ad2"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_horizontal_percentage_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_barhorizontalpercentage","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"2c25a450-bda5-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-7ab04fd4-04da-4023-8899-d94620193607","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,69],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzUyLDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"037b7937-790b-4d2d-94a5-7f5837a6ef05":{"columnOrder":["b3d46616-75e0-419e-97ea-91148961ef94","025a0fb3-dc44-4f5c-b517-2d71d3f26f14","c476db14-0cc1-40ec-863e-d2779256a407"],"columns":{"025a0fb3-dc44-4f5c-b517-2d71d3f26f14":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"b3d46616-75e0-419e-97ea-91148961ef94":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"c476db14-0cc1-40ec-863e-d2779256a407","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"geo.srcdest"},"c476db14-0cc1-40ec-863e-d2779256a407":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"lucene","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["c476db14-0cc1-40ec-863e-d2779256a407"],"layerId":"037b7937-790b-4d2d-94a5-7f5837a6ef05","position":"top","seriesType":"bar_stacked","showGridlines":false,"splitAccessor":"b3d46616-75e0-419e-97ea-91148961ef94","xAccessor":"025a0fb3-dc44-4f5c-b517-2d71d3f26f14"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_visualization","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"e79116e0-bd9e-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-037b7937-790b-4d2d-94a5-7f5837a6ef05","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651612765795,977],"type":"lens","updated_at":"2022-05-03T21:19:25.795Z","version":"WzU1NSwxXQ=="} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"72783e5f-aa7b-4b8a-b26c-a3e4d051340e":{"columnOrder":["0f619652-9ff1-453b-ae1f-7371baa82f55"],"columns":{"0f619652-9ff1-453b-ae1f-7371baa82f55":{"dataType":"number","isBucketed":false,"label":"Average of phpmemory","operationType":"average","params":{"format":{"id":"percent","params":{"decimals":10}}},"scale":"ratio","sourceField":"phpmemory"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"accessor":"0f619652-9ff1-453b-ae1f-7371baa82f55","layerId":"72783e5f-aa7b-4b8a-b26c-a3e4d051340e"}},"title":"lens_metric","visualizationType":"lnsMetric"},"coreMigrationVersion":"7.13.5","id":"974fb950-bda5-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-72783e5f-aa7b-4b8a-b26c-a3e4d051340e","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,73],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzU0LDFd"} +{"attributes":{"description":null,"state":{"datasourceStates":{"indexpattern":{"layers":{"bb478774-f9e8-4380-bf3a-f4a89a4d79b5":{"columnOrder":["4573ae8f-8f9d-4918-b496-c08f7102c6e1","cebdc6c5-3587-4f57-879c-dd63ea99cf03"],"columns":{"4573ae8f-8f9d-4918-b496-c08f7102c6e1":{"dataType":"string","isBucketed":true,"label":"Top values of machine.os.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"cebdc6c5-3587-4f57-879c-dd63ea99cf03","type":"column"},"orderDirection":"desc","otherBucket":true,"size":5},"scale":"ordinal","sourceField":"machine.os.raw"},"cebdc6c5-3587-4f57-879c-dd63ea99cf03":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["4573ae8f-8f9d-4918-b496-c08f7102c6e1"],"layerId":"bb478774-f9e8-4380-bf3a-f4a89a4d79b5","legendDisplay":"default","metric":"cebdc6c5-3587-4f57-879c-dd63ea99cf03","nestedLegend":false,"numberDisplay":"percent"}],"shape":"pie"}},"title":"lens_piechart","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.5","id":"51b63040-bda5-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-bb478774-f9e8-4380-bf3a-f4a89a4d79b5","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,77],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzU1LDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"a1b85651-db29-441f-8f08-cf1b9b6f7bf1":{"columnOrder":["2b3bdc32-0be0-49dc-993d-4630b0bd1185","b85cc0a7-0b18-4b08-b7f0-c617f80cf903","03203126-8286-444d-b5b3-4f399eaf2c26","44305317-61e8-4600-9f3c-ac4070e0c529"],"columns":{"03203126-8286-444d-b5b3-4f399eaf2c26":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"2b3bdc32-0be0-49dc-993d-4630b0bd1185":{"dataType":"string","isBucketed":true,"label":"Top values of extension.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"44305317-61e8-4600-9f3c-ac4070e0c529","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"extension.raw"},"44305317-61e8-4600-9f3c-ac4070e0c529":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"b85cc0a7-0b18-4b08-b7f0-c617f80cf903":{"dataType":"string","isBucketed":true,"label":"Top values of machine.os.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"44305317-61e8-4600-9f3c-ac4070e0c529","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"machine.os.raw"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"columns":[{"columnId":"2b3bdc32-0be0-49dc-993d-4630b0bd1185","isTransposed":false},{"columnId":"b85cc0a7-0b18-4b08-b7f0-c617f80cf903","isTransposed":false},{"columnId":"03203126-8286-444d-b5b3-4f399eaf2c26","isTransposed":false},{"columnId":"44305317-61e8-4600-9f3c-ac4070e0c529","isTransposed":false}],"layerId":"a1b85651-db29-441f-8f08-cf1b9b6f7bf1"}},"title":"lens_table","visualizationType":"lnsDatatable"},"coreMigrationVersion":"7.13.5","id":"b00679c0-bda5-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-a1b85651-db29-441f-8f08-cf1b9b6f7bf1","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,81],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzU2LDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"4fbb51e9-1f99-4b5e-b59d-60fcb547b1d9":{"columnOrder":["08a1af05-743d-480e-9056-3405b1bdda7d","bae35990-75c2-487f-94eb-d8e03d2eda33"],"columns":{"08a1af05-743d-480e-9056-3405b1bdda7d":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"bae35990-75c2-487f-94eb-d8e03d2eda33","type":"column"},"orderDirection":"desc","otherBucket":true,"size":25},"scale":"ordinal","sourceField":"geo.srcdest"},"bae35990-75c2-487f-94eb-d8e03d2eda33":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["08a1af05-743d-480e-9056-3405b1bdda7d","08a1af05-743d-480e-9056-3405b1bdda7d","08a1af05-743d-480e-9056-3405b1bdda7d"],"layerId":"4fbb51e9-1f99-4b5e-b59d-60fcb547b1d9","legendDisplay":"default","metric":"bae35990-75c2-487f-94eb-d8e03d2eda33","nestedLegend":false,"numberDisplay":"percent"}],"shape":"treemap"}},"title":"lens_treemap","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.5","id":"652ade10-bd9f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-4fbb51e9-1f99-4b5e-b59d-60fcb547b1d9","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,85],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzU3LDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"e84503c1-4dbd-4ac6-9ac9-ad938654680f":{"columnOrder":["38c73fd4-6330-4162-8a7b-1a059f005da8","e8d4dad2-ac30-4741-aca0-904eb1fc8455","70433aa7-3c2c-4e6c-b8cf-4218c995cff5"],"columns":{"38c73fd4-6330-4162-8a7b-1a059f005da8":{"dataType":"string","isBucketed":true,"label":"Top values of url.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"70433aa7-3c2c-4e6c-b8cf-4218c995cff5","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"url.raw"},"70433aa7-3c2c-4e6c-b8cf-4218c995cff5":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"e8d4dad2-ac30-4741-aca0-904eb1fc8455":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["70433aa7-3c2c-4e6c-b8cf-4218c995cff5"],"layerId":"e84503c1-4dbd-4ac6-9ac9-ad938654680f","position":"top","seriesType":"line","showGridlines":false,"splitAccessor":"38c73fd4-6330-4162-8a7b-1a059f005da8","xAccessor":"e8d4dad2-ac30-4741-aca0-904eb1fc8455"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"line","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_line_chart","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"7f3b5fb0-be2f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-e84503c1-4dbd-4ac6-9ac9-ad938654680f","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,89],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzU4LDFd"} +{"attributes":{"fieldAttrs":"{\"speaker\":{\"count\":1},\"text_entry\":{\"count\":6},\"type\":{\"count\":3}}","fields":"[]","runtimeFieldMap":"{}","title":"shakespeare"},"coreMigrationVersion":"7.13.5","id":"4e937b20-619d-11eb-aebf-c306684b328d","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"sort":[1651599812857,90],"type":"index-pattern","updated_at":"2022-05-03T17:43:32.857Z","version":"WzU5LDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"d35680ce-c285-4fae-89d6-1245671bbc78":{"columnOrder":["2bcbffbe-c24d-4e74-8a03-9a6da7db70c0","6b00fde6-bfaa-4da1-beeb-bfd85a4cb2ff","8319857d-a03b-4158-bdf1-2a788e510445"],"columns":{"2bcbffbe-c24d-4e74-8a03-9a6da7db70c0":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"6b00fde6-bfaa-4da1-beeb-bfd85a4cb2ff":{"dataType":"number","isBucketed":false,"label":"Average of bytes","operationType":"average","scale":"ratio","sourceField":"bytes"},"8319857d-a03b-4158-bdf1-2a788e510445":{"dataType":"number","isBucketed":false,"label":"Sum of bytes_scripted","operationType":"sum","params":{"format":{"id":"number","params":{"decimals":2}}},"scale":"ratio","sourceField":"bytes_scripted"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["6b00fde6-bfaa-4da1-beeb-bfd85a4cb2ff","8319857d-a03b-4158-bdf1-2a788e510445"],"layerId":"d35680ce-c285-4fae-89d6-1245671bbc78","position":"top","seriesType":"area","showGridlines":false,"xAccessor":"2bcbffbe-c24d-4e74-8a03-9a6da7db70c0","yConfig":[{"axisMode":"auto","forAccessor":"8319857d-a03b-4158-bdf1-2a788e510445"}]}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"area","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_area_chart","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-d35680ce-c285-4fae-89d6-1245671bbc78","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,94],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzYwLDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"70bd567e-8e67-4696-a406-313b06344fa9":{"columnOrder":["96ddedfb-043b-479e-a746-600e72ab546e","d325b7da-4266-4035-9b13-5f853615149a","2fc1391b-17d1-4c49-9ddc-06ff307e3520","1cc6f19c-cbcb-4abd-b56d-1a2f9deae5f3"],"columns":{"1cc6f19c-cbcb-4abd-b56d-1a2f9deae5f3":{"dataType":"number","isBucketed":false,"label":"Average of machine.ram","operationType":"average","scale":"ratio","sourceField":"machine.ram"},"2fc1391b-17d1-4c49-9ddc-06ff307e3520":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"96ddedfb-043b-479e-a746-600e72ab546e":{"dataType":"string","isBucketed":true,"label":"Top values of machine.os.raw","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"2fc1391b-17d1-4c49-9ddc-06ff307e3520","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"machine.os.raw"},"d325b7da-4266-4035-9b13-5f853615149a":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["2fc1391b-17d1-4c49-9ddc-06ff307e3520","1cc6f19c-cbcb-4abd-b56d-1a2f9deae5f3"],"layerId":"70bd567e-8e67-4696-a406-313b06344fa9","position":"top","seriesType":"area_stacked","showGridlines":false,"splitAccessor":"96ddedfb-043b-479e-a746-600e72ab546e","xAccessor":"d325b7da-4266-4035-9b13-5f853615149a"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"area_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_area_stacked","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"dd315430-be2f-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-70bd567e-8e67-4696-a406-313b06344fa9","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,98],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzYxLDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\"},\"panelIndex\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsPie\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"26e2cf99-d931-4320-9e15-9dbc148f3534\":{\"columns\":{\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\":{\"label\":\"Top values of url.raw\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url.raw\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"beb72af1-239c-46d8-823b-b00d1e2ace43\":{\"label\":\"Unique count of geo.srcdest\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"geo.srcdest\",\"isBucketed\":false}},\"columnOrder\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"beb72af1-239c-46d8-823b-b00d1e2ace43\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"26e2cf99-d931-4320-9e15-9dbc148f3534\",\"groups\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\"],\"metric\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534\"}]},\"enhancements\":{},\"type\":\"lens\"},\"panelRefName\":\"panel_2e80716f-c1b6-46f2-be2b-35db744b5031\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"da8843e0-6789-4aae-bcd0-81f270538719\"},\"panelIndex\":\"da8843e0-6789-4aae-bcd0-81f270538719\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_da8843e0-6789-4aae-bcd0-81f270538719\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},\"panelIndex\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"869754a7-edf0-478f-a7f1-80374f63108a\"},\"panelIndex\":\"869754a7-edf0-478f-a7f1-80374f63108a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_869754a7-edf0-478f-a7f1-80374f63108a\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"67111cf4-338e-453f-8621-e8dea64082d1\"},\"panelIndex\":\"67111cf4-338e-453f-8621-e8dea64082d1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_67111cf4-338e-453f-8621-e8dea64082d1\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},\"panelIndex\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\"},\"panelIndex\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_88847944-ae1b-45fd-b102-3b45f9bea04b\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\"},\"panelIndex\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5a7924c7-eac0-4573-9199-fecec5b82e9e\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\"},\"panelIndex\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f8f49591-f071-4a96-b1ed-cd65daff5648\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"9f357f47-c2a0-421f-a456-9583c40837ab\"},\"panelIndex\":\"9f357f47-c2a0-421f-a456-9583c40837ab\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9f357f47-c2a0-421f-a456-9583c40837ab\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\"},\"panelIndex\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6cb383e9-1e80-44f9-80d5-7b8c585668db\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\"},\"panelIndex\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_57f5f0bf-6610-4599-aad4-37484640b5e2\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},\"panelIndex\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"dd1718fd-74ee-4032-851b-db97e893825d\"},\"panelIndex\":\"dd1718fd-74ee-4032-851b-db97e893825d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dd1718fd-74ee-4032-851b-db97e893825d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"98a556ee-078b-4e03-93a8-29996133cdcb\"},\"panelIndex\":\"98a556ee-078b-4e03-93a8-29996133cdcb\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\":{\"columns\":{\"ce9117a2-773c-474c-8fb1-18940cf58b38\":{\"label\":\"Top values of type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"type\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false}},\"a3d10552-e352-40d0-a156-e86112c0501a\":{\"label\":\"Top values of _type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"_type\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"},\"9c5db2f3-9eb0-4667-9a74-3318301de251\":{\"label\":\"Sum of bytes\",\"dataType\":\"number\",\"operationType\":\"sum\",\"sourceField\":\"bytes\",\"isBucketed\":false,\"scale\":\"ratio\"}},\"columnOrder\":[\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"a3d10552-e352-40d0-a156-e86112c0501a\",\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\",\"accessors\":[\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"splitAccessor\":\"a3d10552-e352-40d0-a156-e86112c0501a\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd\"}]},\"enhancements\":{},\"type\":\"lens\"}},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},\"panelIndex\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},{\"version\":\"7.13.1\",\"type\":\"map\",\"gridData\":{\"x\":0,\"y\":120,\"w\":24,\"h\":15,\"i\":\"dcc0defa-3376-465c-9b5b-2ba69528848c\"},\"panelIndex\":\"dcc0defa-3376-465c-9b5b-2ba69528848c\",\"embeddableConfig\":{\"mapCenter\":{\"lat\":19.94277,\"lon\":0,\"zoom\":1.56},\"mapBuffer\":{\"minLon\":-210.32666,\"minLat\":-64.8435,\"maxLon\":210.32666,\"maxLat\":95.13806},\"isLayerTOCOpen\":true,\"openTOCDetails\":[],\"hiddenLayers\":[],\"enhancements\":{}},\"panelRefName\":\"panel_dcc0defa-3376-465c-9b5b-2ba69528848c\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"lens_maps_dashboard_logstash","version":1},"coreMigrationVersion":"7.13.5","id":"16d86080-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:panel_2e80716f-c1b6-46f2-be2b-35db744b5031","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534","type":"index-pattern"},{"id":"aa4b8da0-bd9f-11eb-9520-1b4c3ca6a781","name":"da8843e0-6789-4aae-bcd0-81f270538719:panel_da8843e0-6789-4aae-bcd0-81f270538719","type":"lens"},{"id":"2d3f1250-bd9f-11eb-9520-1b4c3ca6a781","name":"adcd4418-7299-4efa-b369-5f71a7b4ebe0:panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0","type":"lens"},{"id":"edd5a560-bda4-11eb-9520-1b4c3ca6a781","name":"869754a7-edf0-478f-a7f1-80374f63108a:panel_869754a7-edf0-478f-a7f1-80374f63108a","type":"lens"},{"id":"2c25a450-bda5-11eb-9520-1b4c3ca6a781","name":"67111cf4-338e-453f-8621-e8dea64082d1:panel_67111cf4-338e-453f-8621-e8dea64082d1","type":"lens"},{"id":"e79116e0-bd9e-11eb-9520-1b4c3ca6a781","name":"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d:panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d","type":"lens"},{"id":"974fb950-bda5-11eb-9520-1b4c3ca6a781","name":"88847944-ae1b-45fd-b102-3b45f9bea04b:panel_88847944-ae1b-45fd-b102-3b45f9bea04b","type":"lens"},{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"5a7924c7-eac0-4573-9199-fecec5b82e9e:panel_5a7924c7-eac0-4573-9199-fecec5b82e9e","type":"lens"},{"id":"51b63040-bda5-11eb-9520-1b4c3ca6a781","name":"f8f49591-f071-4a96-b1ed-cd65daff5648:panel_f8f49591-f071-4a96-b1ed-cd65daff5648","type":"lens"},{"id":"b00679c0-bda5-11eb-9520-1b4c3ca6a781","name":"9f357f47-c2a0-421f-a456-9583c40837ab:panel_9f357f47-c2a0-421f-a456-9583c40837ab","type":"lens"},{"id":"652ade10-bd9f-11eb-9520-1b4c3ca6a781","name":"6cb383e9-1e80-44f9-80d5-7b8c585668db:panel_6cb383e9-1e80-44f9-80d5-7b8c585668db","type":"lens"},{"id":"7f3b5fb0-be2f-11eb-9520-1b4c3ca6a781","name":"57f5f0bf-6610-4599-aad4-37484640b5e2:panel_57f5f0bf-6610-4599-aad4-37484640b5e2","type":"lens"},{"id":"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781","name":"32d3ab66-52e1-44e3-8c1f-1dccff3c5692:panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692","type":"lens"},{"id":"dd315430-be2f-11eb-9520-1b4c3ca6a781","name":"dd1718fd-74ee-4032-851b-db97e893825d:panel_dd1718fd-74ee-4032-851b-db97e893825d","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd","type":"index-pattern"},{"id":"0dbbf8b0-be3c-11eb-9520-1b4c3ca6a781","name":"62a0f0b0-3589-4cef-807b-b1b4258b7a9b:panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b","type":"lens"},{"id":"0c5974f0-be5c-11eb-9520-1b4c3ca6a781","name":"dcc0defa-3376-465c-9b5b-2ba69528848c:panel_dcc0defa-3376-465c-9b5b-2ba69528848c","type":"map"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,120],"type":"dashboard","updated_at":"2022-05-03T17:43:32.857Z","version":"WzYyLDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"shakespeare_areachart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"shakespeare_areachart\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"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,\"filter\":true},\"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,\"mode\":\"stacked\",\"type\":\"histogram\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"data\":{\"id\":\"2\",\"label\":\"Count\"},\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"2\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"play_name\",\"size\":20,\"order\":\"desc\",\"orderBy\":\"2\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"play_name\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"2\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"185283c0-619e-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,122],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzY0LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"by_reference_logstash","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"by_reference_logstash\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true}],\"radiusRatio\":0,\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"2014-07-15T12:33:21.084Z\",\"to\":\"2019-01-28T03:18:12.440Z\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"response.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}]}"},"coreMigrationVersion":"7.13.5","id":"1885abb0-ca2b-11eb-bf5e-3de94e83d4f0","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651612828183,981],"type":"visualization","updated_at":"2022-05-03T21:20:28.183Z","version":"WzU1OSwxXQ=="} +{"attributes":{"color":"#f44fcf","description":"","name":"shakespeare"},"coreMigrationVersion":"7.13.5","id":"42b4cec0-be32-11eb-9520-1b4c3ca6a781","references":[],"sort":[1651599812857,123],"type":"tag","updated_at":"2022-05-03T17:43:32.857Z","version":"WzY2LDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"3338dd55-4007-4be5-908d-25722b6174cb":{"columnOrder":["6c83b0c2-5834-4619-888c-9e8a08e47d42","b25e7497-c188-4c25-b002-1fd5bd69e76d"],"columns":{"6c83b0c2-5834-4619-888c-9e8a08e47d42":{"dataType":"string","isBucketed":true,"label":"Top values of speaker","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"b25e7497-c188-4c25-b002-1fd5bd69e76d","type":"column"},"orderDirection":"desc","otherBucket":false,"size":90},"scale":"ordinal","sourceField":"speaker"},"b25e7497-c188-4c25-b002-1fd5bd69e76d":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["6c83b0c2-5834-4619-888c-9e8a08e47d42","6c83b0c2-5834-4619-888c-9e8a08e47d42","6c83b0c2-5834-4619-888c-9e8a08e47d42"],"layerId":"3338dd55-4007-4be5-908d-25722b6174cb","legendDisplay":"default","metric":"b25e7497-c188-4c25-b002-1fd5bd69e76d","nestedLegend":false,"numberDisplay":"percent"}],"palette":{"name":"complimentary","type":"palette"},"shape":"treemap"}},"title":"lens_shakespeare_treemap","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.5","id":"31e9f2f0-be32-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-3338dd55-4007-4be5-908d-25722b6174cb","type":"index-pattern"},{"id":"42b4cec0-be32-11eb-9520-1b4c3ca6a781","name":"tag-ref-42b4cec0-be32-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,127],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"WzY3LDFd"} +{"attributes":{"accessCount":0,"accessDate":1622059178542,"createDate":1622059178542,"url":"/app/dashboards#/view/73398a90-619e-11eb-aebf-c306684b328d?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:%272015-09-20T01:56:56.132Z%27,to:%272015-09-21T11:18:20.471Z%27))&_a=(description:%27%27,filters:!(),fullScreenMode:!f,options:(darkTheme:!f,hidePanelTitles:!f,useMargins:!t),panels:!((embeddableConfig:(enhancements:()),gridData:(h:15,i:%271%27,w:24,x:0,y:0),id:%27185283c0-619e-11eb-aebf-c306684b328d%27,panelIndex:%271%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%272%27,w:24,x:24,y:0),id:%2733736660-619e-11eb-aebf-c306684b328d%27,panelIndex:%272%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%273%27,w:24,x:0,y:15),id:%27622ac7f0-619e-11eb-aebf-c306684b328d%27,panelIndex:%273%27,type:visualization,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%274%27,w:24,x:24,y:15),id:%27712ebbe0-619d-11eb-aebf-c306684b328d%27,panelIndex:%274%27,type:search,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%275%27,w:24,x:0,y:30),id:ddacc820-619d-11eb-aebf-c306684b328d,panelIndex:%275%27,type:search,version:%277.13.1%27),(embeddableConfig:(enhancements:()),gridData:(h:15,i:%276%27,w:24,x:24,y:30),id:f852d570-619d-11eb-aebf-c306684b328d,panelIndex:%276%27,type:search,version:%277.13.1%27)),query:(language:kuery,query:%27%27),tags:!(),timeRestore:!f,title:shakespeare_dashboard,viewMode:view)"},"coreMigrationVersion":"7.13.5","id":"32a03249ec3a048108d4b5a427a37fc8","references":[],"sort":[1651599812857,128],"type":"url","updated_at":"2022-05-03T17:43:32.857Z","version":"WzY4LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"shakespeare_piechart","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"shakespeare_piechart\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":true,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"play_name\",\"size\":15,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"33736660-619e-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,130],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzY5LDFd"} +{"attributes":{"color":"#7b01cf","description":"","name":"By reference"},"coreMigrationVersion":"7.13.5","id":"39d2c190-ca2b-11eb-bf5e-3de94e83d4f0","references":[],"sort":[1651599812857,131],"type":"tag","updated_at":"2022-05-03T17:43:32.857Z","version":"WzcwLDFd"} +{"attributes":{"columns":[],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"alias\":null,\"negate\":false,\"disabled\":false,\"type\":\"phrase\",\"key\":\"ip\",\"params\":{\"query\":\"57.237.11.219\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"ip\":\"57.237.11.219\"}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"drilldown_saved_search","version":1},"coreMigrationVersion":"7.13.5","id":"4acce030-ca2a-11eb-bf5e-3de94e83d4f0","migrationVersion":{"search":"7.9.3"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"sort":[1651612879859,1007],"type":"search","updated_at":"2022-05-03T21:21:19.859Z","version":"WzU2NywxXQ=="} +{"attributes":{"description":"","layerListJSON":"[{\"sourceDescriptor\":{\"type\":\"EMS_TMS\",\"isAutoSelect\":true},\"id\":\"e0d51731-2bb3-4fed-92af-65f93c3e7e58\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"style\":{\"type\":\"TILE\"},\"type\":\"VECTOR_TILE\"},{\"sourceDescriptor\":{\"geoField\":\"geo.coordinates\",\"filterByMapBounds\":true,\"scalingType\":\"CLUSTERS\",\"topHitsSplitField\":\"\",\"topHitsSize\":1,\"id\":\"142e0a6b-53c9-4f66-a65d-fced755318de\",\"type\":\"ES_SEARCH\",\"applyGlobalQuery\":true,\"applyGlobalTime\":true,\"tooltipProperties\":[],\"sortField\":\"\",\"sortOrder\":\"desc\",\"indexPatternRefName\":\"layer_1_source_index_pattern\"},\"id\":\"ca96ce4a-4e73-46a5-bcc8-99a39d227030\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"icon\":{\"type\":\"STATIC\",\"options\":{\"value\":\"marker\"}},\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#CA8EAE\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#934193\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":6}},\"iconOrientation\":{\"type\":\"STATIC\",\"options\":{\"orientation\":0}},\"labelText\":{\"type\":\"STATIC\",\"options\":{\"value\":\"\"}},\"labelColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#000000\"}},\"labelSize\":{\"type\":\"STATIC\",\"options\":{\"size\":14}},\"labelBorderColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"symbolizeAs\":{\"options\":{\"value\":\"circle\"}},\"labelBorderSize\":{\"options\":{\"size\":\"SMALL\"}}},\"isTimeAware\":true},\"type\":\"BLENDED_VECTOR\",\"joins\":[]}]","mapStateJSON":"{\"zoom\":1.38,\"center\":{\"lon\":0,\"lat\":19.94277},\"timeFilters\":{\"from\":\"2014-07-15T12:33:21.084Z\",\"to\":\"2019-01-28T03:18:12.440Z\"},\"refreshConfig\":{\"isPaused\":true,\"interval\":0},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"settings\":{\"autoFitToDataBounds\":false,\"backgroundColor\":\"#ffffff\",\"disableInteractive\":false,\"disableTooltipControl\":false,\"hideToolbarOverlay\":false,\"hideLayerControl\":false,\"hideViewControl\":false,\"initialLocation\":\"LAST_SAVED_LOCATION\",\"fixedLocation\":{\"lat\":0,\"lon\":0,\"zoom\":2},\"browserLocation\":{\"zoom\":2},\"maxZoom\":24,\"minZoom\":0,\"showScaleControl\":false,\"showSpatialFilters\":true,\"spatialFiltersAlpa\":0.3,\"spatialFiltersFillColor\":\"#DA8B45\",\"spatialFiltersLineColor\":\"#DA8B45\"}}","title":"Logstash_map_by_reference","uiStateJSON":"{\"isLayerTOCOpen\":true,\"openTOCDetails\":[]}"},"coreMigrationVersion":"7.13.5","id":"a53a2db0-ca2b-11eb-bf5e-3de94e83d4f0","migrationVersion":{"map":"7.12.0"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"layer_1_source_index_pattern","type":"index-pattern"}],"sort":[1651612954243,1037],"type":"map","updated_at":"2022-05-03T21:22:34.243Z","version":"WzYwOSwxXQ=="} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.5\",\"type\":\"search\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"7c29a321-2a9a-412b-9ed1-1d0a1f66ea63\"},\"panelIndex\":\"7c29a321-2a9a-412b-9ed1-1d0a1f66ea63\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7c29a321-2a9a-412b-9ed1-1d0a1f66ea63\"},{\"version\":\"7.13.5\",\"type\":\"search\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"f2d1feb1-d807-46b1-90ac-96d4a9edb6b1\"},\"panelIndex\":\"f2d1feb1-d807-46b1-90ac-96d4a9edb6b1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f2d1feb1-d807-46b1-90ac-96d4a9edb6b1\"},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"a3530107-8b1c-4e94-8f99-e239fa40a09c\"},\"panelIndex\":\"a3530107-8b1c-4e94-8f99-e239fa40a09c\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"b14188e0-53d6-433e-874f-b1be7c97487c\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"by_reference_going_to_value\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}},{\"eventId\":\"60cba413-1793-4dd3-b072-9d53655d5522\",\"triggers\":[\"SELECT_RANGE_TRIGGER\"],\"action\":{\"name\":\"Goto_Discover\",\"config\":{\"url\":{\"template\":\"http://localhost:5601/app/discover#/view/b3288100-ca2c-11eb-bf5e-3de94e83d4f0?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(columns:!(),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',key:geo.dest,negate:!f,params:(query:US),type:phrase),query:(match_phrase:(geo.dest:US)))),index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\"},\"openInNewTab\":true,\"encodeUrl\":true},\"factoryId\":\"URL_DRILLDOWN\"}}]}}},\"panelRefName\":\"panel_a3530107-8b1c-4e94-8f99-e239fa40a09c\"},{\"version\":\"7.13.5\",\"type\":\"map\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"77245314-9495-4625-9f53-0946150e26d4\"},\"panelIndex\":\"77245314-9495-4625-9f53-0946150e26d4\",\"embeddableConfig\":{\"mapCenter\":{\"lat\":19.94277,\"lon\":0,\"zoom\":1.38},\"mapBuffer\":{\"minLon\":-238.27568,\"minLat\":-74.644155,\"maxLon\":238.27568,\"maxLat\":102.864625},\"isLayerTOCOpen\":true,\"openTOCDetails\":[],\"hiddenLayers\":[],\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"9b61b9d4-20a3-4bca-9697-1097c524a943\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"By_reference_to_value\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}}},\"panelRefName\":\"panel_77245314-9495-4625-9f53-0946150e26d4\"}]","timeRestore":false,"title":"by_reference_drilldown","version":1},"coreMigrationVersion":"7.13.5","id":"3b844220-ca2b-11eb-bf5e-3de94e83d4f0","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"4acce030-ca2a-11eb-bf5e-3de94e83d4f0","name":"7c29a321-2a9a-412b-9ed1-1d0a1f66ea63:panel_7c29a321-2a9a-412b-9ed1-1d0a1f66ea63","type":"search"},{"id":"0abce1c0-ca2a-11eb-bf5e-3de94e83d4f0","name":"f2d1feb1-d807-46b1-90ac-96d4a9edb6b1:panel_f2d1feb1-d807-46b1-90ac-96d4a9edb6b1","type":"search"},{"id":"1885abb0-ca2b-11eb-bf5e-3de94e83d4f0","name":"a3530107-8b1c-4e94-8f99-e239fa40a09c:panel_a3530107-8b1c-4e94-8f99-e239fa40a09c","type":"visualization"},{"id":"08dec860-ca29-11eb-bf5e-3de94e83d4f0","name":"a3530107-8b1c-4e94-8f99-e239fa40a09c:drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:b14188e0-53d6-433e-874f-b1be7c97487c:dashboardId","type":"dashboard"},{"id":"a53a2db0-ca2b-11eb-bf5e-3de94e83d4f0","name":"77245314-9495-4625-9f53-0946150e26d4:panel_77245314-9495-4625-9f53-0946150e26d4","type":"map"},{"id":"35ce3b30-ca29-11eb-bf5e-3de94e83d4f0","name":"77245314-9495-4625-9f53-0946150e26d4:drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:9b61b9d4-20a3-4bca-9697-1097c524a943:dashboardId","type":"dashboard"},{"id":"39d2c190-ca2b-11eb-bf5e-3de94e83d4f0","name":"tag-39d2c190-ca2b-11eb-bf5e-3de94e83d4f0","type":"tag"}],"sort":[1651612956152,1046],"type":"dashboard","updated_at":"2022-05-03T21:22:36.152Z","version":"WzYxNSwxXQ=="} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"a7a8f2fb-066e-4023-9755-821e84560b4a":{"columnOrder":["ee46f645-0af0-4b5d-8ed3-2557c98c9c12","91859a54-9b88-4478-8c80-0779fe165fba","62a4dea1-fab9-45ff-93e0-b99cfff719d5"],"columns":{"62a4dea1-fab9-45ff-93e0-b99cfff719d5":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"},"91859a54-9b88-4478-8c80-0779fe165fba":{"dataType":"string","isBucketed":true,"label":"Top values of play_name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"62a4dea1-fab9-45ff-93e0-b99cfff719d5","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"play_name"},"ee46f645-0af0-4b5d-8ed3-2557c98c9c12":{"dataType":"string","isBucketed":true,"label":"Top values of speaker","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"62a4dea1-fab9-45ff-93e0-b99cfff719d5","type":"column"},"orderDirection":"desc","otherBucket":true,"size":25},"scale":"ordinal","sourceField":"speaker"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"layers":[{"categoryDisplay":"default","groups":["ee46f645-0af0-4b5d-8ed3-2557c98c9c12","ee46f645-0af0-4b5d-8ed3-2557c98c9c12","ee46f645-0af0-4b5d-8ed3-2557c98c9c12","ee46f645-0af0-4b5d-8ed3-2557c98c9c12","91859a54-9b88-4478-8c80-0779fe165fba"],"layerId":"a7a8f2fb-066e-4023-9755-821e84560b4a","legendDisplay":"default","metric":"62a4dea1-fab9-45ff-93e0-b99cfff719d5","nestedLegend":false,"numberDisplay":"percent"}],"palette":{"name":"kibana_palette","type":"palette"},"shape":"pie"}},"title":"lens_shakespeare_piechart","visualizationType":"lnsPie"},"coreMigrationVersion":"7.13.5","id":"b5bd5050-be31-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-a7a8f2fb-066e-4023-9755-821e84560b4a","type":"index-pattern"},{"id":"42b4cec0-be32-11eb-9520-1b4c3ca6a781","name":"tag-ref-42b4cec0-be32-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,135],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzc1LDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"c4b1daae-a3af-4136-969e-8485d4ba53f9\"},\"panelIndex\":\"c4b1daae-a3af-4136-969e-8485d4ba53f9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_c4b1daae-a3af-4136-969e-8485d4ba53f9\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"f092b002-182e-49b8-bcc4-58f5233e041b\"},\"panelIndex\":\"f092b002-182e-49b8-bcc4-58f5233e041b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f092b002-182e-49b8-bcc4-58f5233e041b\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"lens_shakespeare_dashboard","version":1},"coreMigrationVersion":"7.13.5","id":"43fae350-be32-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"b5bd5050-be31-11eb-9520-1b4c3ca6a781","name":"c4b1daae-a3af-4136-969e-8485d4ba53f9:panel_c4b1daae-a3af-4136-969e-8485d4ba53f9","type":"lens"},{"id":"31e9f2f0-be32-11eb-9520-1b4c3ca6a781","name":"f092b002-182e-49b8-bcc4-58f5233e041b:panel_f092b002-182e-49b8-bcc4-58f5233e041b","type":"lens"},{"id":"42b4cec0-be32-11eb-9520-1b4c3ca6a781","name":"tag-42b4cec0-be32-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,139],"type":"dashboard","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzc2LDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"3\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"5\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"6\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"7\",\"w\":24,\"x\":0,\"y\":45},\"panelIndex\":\"7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"8\",\"w\":24,\"x\":24,\"y\":45},\"panelIndex\":\"8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"9\",\"w\":24,\"x\":0,\"y\":60},\"panelIndex\":\"9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"10\",\"w\":24,\"x\":24,\"y\":60},\"panelIndex\":\"10\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_10\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"11\",\"w\":24,\"x\":0,\"y\":75},\"panelIndex\":\"11\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_11\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"12\",\"w\":24,\"x\":24,\"y\":75},\"panelIndex\":\"12\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_12\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"13\",\"w\":24,\"x\":0,\"y\":90},\"panelIndex\":\"13\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"14\",\"w\":24,\"x\":24,\"y\":90},\"panelIndex\":\"14\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_14\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"15\",\"w\":24,\"x\":0,\"y\":105},\"panelIndex\":\"15\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"16\",\"w\":24,\"x\":24,\"y\":105},\"panelIndex\":\"16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_16\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"17\",\"w\":24,\"x\":0,\"y\":120},\"panelIndex\":\"17\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"18\",\"w\":24,\"x\":24,\"y\":120},\"panelIndex\":\"18\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"19\",\"w\":24,\"x\":0,\"y\":135},\"panelIndex\":\"19\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_19\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"20\",\"w\":24,\"x\":24,\"y\":135},\"panelIndex\":\"20\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_20\"}]","timeRestore":false,"title":"logstash_dashboard_withouttime","version":1},"coreMigrationVersion":"7.13.5","id":"5d3410c0-6249-11eb-aebf-c306684b328d","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"36b91810-6239-11eb-aebf-c306684b328d","name":"1:panel_1","type":"visualization"},{"id":"0a274320-61cc-11eb-aebf-c306684b328d","name":"2:panel_2","type":"visualization"},{"id":"e4aef350-623d-11eb-aebf-c306684b328d","name":"3:panel_3","type":"visualization"},{"id":"f92e5630-623e-11eb-aebf-c306684b328d","name":"4:panel_4","type":"visualization"},{"id":"9853d4d0-623d-11eb-aebf-c306684b328d","name":"5:panel_5","type":"visualization"},{"id":"6ecb33b0-623d-11eb-aebf-c306684b328d","name":"6:panel_6","type":"visualization"},{"id":"b8e35c80-623c-11eb-aebf-c306684b328d","name":"7:panel_7","type":"visualization"},{"id":"f1bc75d0-6239-11eb-aebf-c306684b328d","name":"8:panel_8","type":"visualization"},{"id":"0d8a8860-623a-11eb-aebf-c306684b328d","name":"9:panel_9","type":"visualization"},{"id":"d79fe3d0-6239-11eb-aebf-c306684b328d","name":"10:panel_10","type":"visualization"},{"id":"318375a0-6240-11eb-aebf-c306684b328d","name":"11:panel_11","type":"visualization"},{"id":"e461eb20-6245-11eb-aebf-c306684b328d","name":"12:panel_12","type":"visualization"},{"id":"25bdc750-6242-11eb-aebf-c306684b328d","name":"13:panel_13","type":"visualization"},{"id":"71dd7bc0-6248-11eb-aebf-c306684b328d","name":"14:panel_14","type":"visualization"},{"id":"6aea48a0-6240-11eb-aebf-c306684b328d","name":"15:panel_15","type":"visualization"},{"id":"32b681f0-6241-11eb-aebf-c306684b328d","name":"16:panel_16","type":"visualization"},{"id":"ccca99e0-6244-11eb-aebf-c306684b328d","name":"17:panel_17","type":"visualization"},{"id":"a4d7be80-6245-11eb-aebf-c306684b328d","name":"18:panel_18","type":"visualization"},{"id":"c94d8440-6248-11eb-aebf-c306684b328d","name":"19:panel_19","type":"visualization"},{"id":"db6226f0-61c0-11eb-aebf-c306684b328d","name":"20:panel_20","type":"search"}],"sort":[1651599812857,160],"type":"dashboard","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzc3LDFd"} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"shakespeare_tag_cloud","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"shakespeare_tag_cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"multiple\",\"minFontSize\":59,\"maxFontSize\":100,\"showLabel\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"type.keyword\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.5","id":"622ac7f0-619e-11eb-aebf-c306684b328d","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,162],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzc4LDFd"} +{"attributes":{"numLinks":4,"numVertices":5,"title":"logstash_graph","version":1,"wsState":"\"{\\\"selectedFields\\\":[{\\\"name\\\":\\\"machine.os.raw\\\",\\\"hopSize\\\":5,\\\"lastValidHopSize\\\":5,\\\"color\\\":\\\"#B9A888\\\",\\\"selected\\\":true,\\\"iconClass\\\":\\\"fa-folder-open-o\\\"},{\\\"name\\\":\\\"response.raw\\\",\\\"hopSize\\\":5,\\\"lastValidHopSize\\\":5,\\\"color\\\":\\\"#D6BF57\\\",\\\"selected\\\":true,\\\"iconClass\\\":\\\"fa-folder-open-o\\\"}],\\\"blocklist\\\":[],\\\"vertices\\\":[{\\\"x\\\":461.96184642905024,\\\"y\\\":284.02313214227325,\\\"label\\\":\\\"osx\\\",\\\"color\\\":\\\"#B9A888\\\",\\\"field\\\":\\\"machine.os.raw\\\",\\\"term\\\":\\\"osx\\\",\\\"parent\\\":null,\\\"size\\\":15},{\\\"x\\\":383.946159835112,\\\"y\\\":375.6063135315976,\\\"label\\\":\\\"503\\\",\\\"color\\\":\\\"#D6BF57\\\",\\\"field\\\":\\\"response.raw\\\",\\\"term\\\":\\\"503\\\",\\\"parent\\\":null,\\\"size\\\":15},{\\\"x\\\":287.104700756828,\\\"y\\\":324.1245253249895,\\\"label\\\":\\\"win 7\\\",\\\"color\\\":\\\"#B9A888\\\",\\\"field\\\":\\\"machine.os.raw\\\",\\\"term\\\":\\\"win 7\\\",\\\"parent\\\":null,\\\"size\\\":15},{\\\"x\\\":487.9986107998273,\\\"y\\\":407.07546535764254,\\\"label\\\":\\\"ios\\\",\\\"color\\\":\\\"#B9A888\\\",\\\"field\\\":\\\"machine.os.raw\\\",\\\"term\\\":\\\"ios\\\",\\\"parent\\\":null,\\\"size\\\":15},{\\\"x\\\":302.35059551806023,\\\"y\\\":211.66825720913607,\\\"label\\\":\\\"200\\\",\\\"color\\\":\\\"#D6BF57\\\",\\\"field\\\":\\\"response.raw\\\",\\\"term\\\":\\\"200\\\",\\\"parent\\\":null,\\\"size\\\":15}],\\\"links\\\":[{\\\"weight\\\":0.000881324009872165,\\\"width\\\":7.983523640193488,\\\"source\\\":4,\\\"target\\\":2},{\\\"weight\\\":0.000023386835221992895,\\\"width\\\":2,\\\"source\\\":1,\\\"target\\\":0},{\\\"weight\\\":0.0011039286029480653,\\\"width\\\":2,\\\"source\\\":1,\\\"target\\\":2},{\\\"weight\\\":0.000045596928960694605,\\\"width\\\":2,\\\"source\\\":1,\\\"target\\\":3}],\\\"urlTemplates\\\":[{\\\"url\\\":\\\"/app/discover#/?_a=(columns%3A!(_source)%2Cindex%3A%2756b34100-619d-11eb-aebf-c306684b328d%27%2Cinterval%3Aauto%2Cquery%3A(language%3Akuery%2Cquery%3A{{gquery}})%2Csort%3A!(_score%2Cdesc))\\\",\\\"description\\\":\\\"Machine OS win 7\\\",\\\"isDefault\\\":false,\\\"encoderID\\\":\\\"kql\\\",\\\"iconClass\\\":\\\"fa-share-alt\\\"}],\\\"exploreControls\\\":{\\\"useSignificance\\\":true,\\\"sampleSize\\\":2000,\\\"timeoutMillis\\\":5000,\\\"maxValuesPerDoc\\\":1,\\\"minDocCount\\\":3},\\\"indexPatternRefName\\\":\\\"indexPattern_0\\\"}\""},"coreMigrationVersion":"7.13.5","id":"6afc4b40-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"graph-workspace":"7.11.0"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexPattern_0","type":"index-pattern"}],"sort":[1651599812857,164],"type":"graph-workspace","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzc5LDFd"} +{"attributes":{"buildNum":39457,"defaultIndex":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0"},"coreMigrationVersion":"7.13.5","id":"7.12.1","migrationVersion":{"config":"7.13.0"},"references":[],"sort":[1651599812857,165],"type":"config","updated_at":"2022-05-03T17:43:32.857Z","version":"WzgwLDFd"} +{"attributes":{"accessibility:disableAnimations":true,"buildNum":null,"dateFormat:tz":"UTC","defaultIndex":"56b34100-619d-11eb-aebf-c306684b328d","visualization:visualize:legacyChartsLibrary":true},"coreMigrationVersion":"7.13.5","id":"7.13.1","migrationVersion":{"config":"7.13.0"},"references":[],"sort":[1651599812857,166],"type":"config","updated_at":"2022-05-03T17:43:32.857Z","version":"WzgxLDFd"} +{"attributes":{"buildNum":40943,"defaultIndex":"43fcac20-ca27-11eb-bf5e-3de94e83d4f0"},"coreMigrationVersion":"7.13.5","id":"7.13.2","migrationVersion":{"config":"7.13.0"},"references":[],"sort":[1651599812857,167],"type":"config","updated_at":"2022-05-03T17:43:32.857Z","version":"WzgyLDFd"} +{"attributes":{"buildNum":9007199254740991,"defaultIndex":"56b34100-619d-11eb-aebf-c306684b328d"},"coreMigrationVersion":"7.13.5","id":"7.13.5","migrationVersion":{"config":"7.13.0"},"references":[],"sort":[1651613092912,1086],"type":"config","updated_at":"2022-05-03T21:24:52.912Z","version":"WzYzOCwxXQ=="} +{"attributes":{"columns":["_source"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[{\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"text_entry\",\"value\":\"Christendom.\",\"params\":{\"query\":\"Christendom.\",\"type\":\"phrase\"},\"disabled\":false,\"alias\":null,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"text_entry\":{\"query\":\"Christendom.\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["_score","desc"]],"title":"shakespeare_saved_search","version":1},"coreMigrationVersion":"7.13.5","id":"712ebbe0-619d-11eb-aebf-c306684b328d","migrationVersion":{"search":"7.9.3"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"sort":[1651599812857,170],"type":"search","updated_at":"2022-05-03T17:43:32.857Z","version":"WzgzLDFd"} +{"attributes":{"columns":["play_name","speaker"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"speaker:\\\"GLOUCESTER\\\"\",\"language\":\"lucene\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["_score","desc"]],"title":"shakespeare_saved_lucene_search","version":1},"coreMigrationVersion":"7.13.5","id":"ddacc820-619d-11eb-aebf-c306684b328d","migrationVersion":{"search":"7.9.3"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,172],"type":"search","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzg0LDFd"} +{"attributes":{"columns":["_source"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"text_entry :\\\"MORDAKE THE EARL OF FIFE, AND ELDEST SON\\\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["_score","desc"]],"title":"shakespeare_saved_kql_search","version":1},"coreMigrationVersion":"7.13.5","id":"f852d570-619d-11eb-aebf-c306684b328d","migrationVersion":{"search":"7.9.3"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651599812857,174],"type":"search","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzg1LDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"3\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"5\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"6\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"}]","timeRestore":false,"title":"shakespeare_dashboard","version":1},"coreMigrationVersion":"7.13.5","id":"73398a90-619e-11eb-aebf-c306684b328d","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"185283c0-619e-11eb-aebf-c306684b328d","name":"1:panel_1","type":"visualization"},{"id":"33736660-619e-11eb-aebf-c306684b328d","name":"2:panel_2","type":"visualization"},{"id":"622ac7f0-619e-11eb-aebf-c306684b328d","name":"3:panel_3","type":"visualization"},{"id":"712ebbe0-619d-11eb-aebf-c306684b328d","name":"4:panel_4","type":"search"},{"id":"ddacc820-619d-11eb-aebf-c306684b328d","name":"5:panel_5","type":"search"},{"id":"f852d570-619d-11eb-aebf-c306684b328d","name":"6:panel_6","type":"search"}],"sort":[1651599812857,181],"type":"dashboard","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzg2LDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.srcdest\",\"value\":\"IN:US\",\"params\":{\"query\":\"IN:US\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.srcdest\":{\"query\":\"IN:US\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}]}"},"optionsJSON":"{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"3\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"5\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"6\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"7\",\"w\":24,\"x\":0,\"y\":45},\"panelIndex\":\"7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"8\",\"w\":24,\"x\":24,\"y\":45},\"panelIndex\":\"8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"9\",\"w\":24,\"x\":0,\"y\":60},\"panelIndex\":\"9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"10\",\"w\":24,\"x\":24,\"y\":60},\"panelIndex\":\"10\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_10\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"11\",\"w\":24,\"x\":0,\"y\":75},\"panelIndex\":\"11\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_11\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"12\",\"w\":24,\"x\":24,\"y\":75},\"panelIndex\":\"12\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_12\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"13\",\"w\":24,\"x\":0,\"y\":90},\"panelIndex\":\"13\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"14\",\"w\":24,\"x\":24,\"y\":90},\"panelIndex\":\"14\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_14\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"15\",\"w\":24,\"x\":0,\"y\":105},\"panelIndex\":\"15\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"16\",\"w\":24,\"x\":24,\"y\":105},\"panelIndex\":\"16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_16\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"17\",\"w\":24,\"x\":0,\"y\":120},\"panelIndex\":\"17\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"18\",\"w\":24,\"x\":24,\"y\":120},\"panelIndex\":\"18\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"19\",\"w\":24,\"x\":0,\"y\":135},\"panelIndex\":\"19\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_19\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"20\",\"w\":24,\"x\":24,\"y\":135},\"panelIndex\":\"20\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_20\"}]","timeRestore":false,"title":"logstash_dashboardwithfilters","version":1},"coreMigrationVersion":"7.13.5","id":"79794f20-6249-11eb-aebf-c306684b328d","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"36b91810-6239-11eb-aebf-c306684b328d","name":"1:panel_1","type":"visualization"},{"id":"0a274320-61cc-11eb-aebf-c306684b328d","name":"2:panel_2","type":"visualization"},{"id":"e4aef350-623d-11eb-aebf-c306684b328d","name":"3:panel_3","type":"visualization"},{"id":"f92e5630-623e-11eb-aebf-c306684b328d","name":"4:panel_4","type":"visualization"},{"id":"9853d4d0-623d-11eb-aebf-c306684b328d","name":"5:panel_5","type":"visualization"},{"id":"6ecb33b0-623d-11eb-aebf-c306684b328d","name":"6:panel_6","type":"visualization"},{"id":"b8e35c80-623c-11eb-aebf-c306684b328d","name":"7:panel_7","type":"visualization"},{"id":"f1bc75d0-6239-11eb-aebf-c306684b328d","name":"8:panel_8","type":"visualization"},{"id":"0d8a8860-623a-11eb-aebf-c306684b328d","name":"9:panel_9","type":"visualization"},{"id":"d79fe3d0-6239-11eb-aebf-c306684b328d","name":"10:panel_10","type":"visualization"},{"id":"318375a0-6240-11eb-aebf-c306684b328d","name":"11:panel_11","type":"visualization"},{"id":"e461eb20-6245-11eb-aebf-c306684b328d","name":"12:panel_12","type":"visualization"},{"id":"25bdc750-6242-11eb-aebf-c306684b328d","name":"13:panel_13","type":"visualization"},{"id":"71dd7bc0-6248-11eb-aebf-c306684b328d","name":"14:panel_14","type":"visualization"},{"id":"6aea48a0-6240-11eb-aebf-c306684b328d","name":"15:panel_15","type":"visualization"},{"id":"32b681f0-6241-11eb-aebf-c306684b328d","name":"16:panel_16","type":"visualization"},{"id":"ccca99e0-6244-11eb-aebf-c306684b328d","name":"17:panel_17","type":"visualization"},{"id":"a4d7be80-6245-11eb-aebf-c306684b328d","name":"18:panel_18","type":"visualization"},{"id":"c94d8440-6248-11eb-aebf-c306684b328d","name":"19:panel_19","type":"visualization"},{"id":"db6226f0-61c0-11eb-aebf-c306684b328d","name":"20:panel_20","type":"search"}],"sort":[1651599812857,203],"type":"dashboard","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzg3LDFd"} +{"attributes":{"description":"","state":{"datasourceStates":{"indexpattern":{"layers":{"037b7937-790b-4d2d-94a5-7f5837a6ef05":{"columnOrder":["b3d46616-75e0-419e-97ea-91148961ef94","025a0fb3-dc44-4f5c-b517-2d71d3f26f14","c476db14-0cc1-40ec-863e-d2779256a407"],"columns":{"025a0fb3-dc44-4f5c-b517-2d71d3f26f14":{"dataType":"date","isBucketed":true,"label":"@timestamp","operationType":"date_histogram","params":{"interval":"auto"},"scale":"interval","sourceField":"@timestamp"},"b3d46616-75e0-419e-97ea-91148961ef94":{"dataType":"string","isBucketed":true,"label":"Top values of geo.srcdest","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"c476db14-0cc1-40ec-863e-d2779256a407","type":"column"},"orderDirection":"desc","otherBucket":true,"size":3},"scale":"ordinal","sourceField":"geo.srcdest"},"c476db14-0cc1-40ec-863e-d2779256a407":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"Records"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"lucene","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["c476db14-0cc1-40ec-863e-d2779256a407"],"layerId":"037b7937-790b-4d2d-94a5-7f5837a6ef05","position":"top","seriesType":"bar_stacked","showGridlines":false,"splitAccessor":"b3d46616-75e0-419e-97ea-91148961ef94","xAccessor":"025a0fb3-dc44-4f5c-b517-2d71d3f26f14"}],"legend":{"isVisible":true,"position":"right"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide"}},"title":"lens_verticalstacked","visualizationType":"lnsXY"},"coreMigrationVersion":"7.13.5","id":"8dc19b50-be32-11eb-9520-1b4c3ca6a781","migrationVersion":{"lens":"7.13.1"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"indexpattern-datasource-layer-037b7937-790b-4d2d-94a5-7f5837a6ef05","type":"index-pattern"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-ref-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,207],"type":"lens","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzg4LDFd"} +{"attributes":{"columns":[],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"alias\":null,\"negate\":false,\"disabled\":false,\"type\":\"phrase\",\"key\":\"geo.dest\",\"params\":{\"query\":\"US\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"geo.dest\":\"US\"}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"drilldown_logstash","version":1},"coreMigrationVersion":"7.13.5","id":"b3288100-ca2c-11eb-bf5e-3de94e83d4f0","migrationVersion":{"search":"7.9.3"},"references":[{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"sort":[1651612907652,1002],"type":"search","updated_at":"2022-05-03T21:21:47.652Z","version":"WzU3NiwxXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"logstash_timelion_panel","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"logstash_timelion_panel\",\"type\":\"timelion\",\"aggs\":[],\"params\":{\"expression\":\".es(index=logstash-*, \\\"sum:bytes\\\")\",\"interval\":\"auto\"}}"},"coreMigrationVersion":"7.13.5","id":"b3a44cd0-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"visualization":"7.13.1"},"references":[],"sort":[1651599812857,208],"type":"visualization","updated_at":"2022-05-03T17:43:32.857Z","version":"WzkwLDFd"} +{"attributes":{"color":"#9170B8","description":"","name":"alltogether"},"coreMigrationVersion":"7.13.5","id":"be808cb0-be32-11eb-9520-1b4c3ca6a781","references":[],"sort":[1651599812857,209],"type":"tag","updated_at":"2022-05-03T17:43:32.857Z","version":"WzkxLDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"4d9e9a01-cdb8-4aef-afcb-50db52247bb1\"},\"panelIndex\":\"4d9e9a01-cdb8-4aef-afcb-50db52247bb1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4d9e9a01-cdb8-4aef-afcb-50db52247bb1\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"d9cab9c8-667e-4d34-821b-cbb070891956\"},\"panelIndex\":\"d9cab9c8-667e-4d34-821b-cbb070891956\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d9cab9c8-667e-4d34-821b-cbb070891956\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"lens_combined_dashboard","version":1},"coreMigrationVersion":"7.13.5","id":"bfb3dc90-be32-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"8dc19b50-be32-11eb-9520-1b4c3ca6a781","name":"4d9e9a01-cdb8-4aef-afcb-50db52247bb1:panel_4d9e9a01-cdb8-4aef-afcb-50db52247bb1","type":"lens"},{"id":"b5bd5050-be31-11eb-9520-1b4c3ca6a781","name":"d9cab9c8-667e-4d34-821b-cbb070891956:panel_d9cab9c8-667e-4d34-821b-cbb070891956","type":"lens"},{"id":"be808cb0-be32-11eb-9520-1b4c3ca6a781","name":"tag-be808cb0-be32-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,213],"type":"dashboard","updated_at":"2022-05-03T17:43:32.857Z","version":"WzkyLDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\"},\"panelIndex\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsPie\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"26e2cf99-d931-4320-9e15-9dbc148f3534\":{\"columns\":{\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\":{\"label\":\"Top values of url.raw\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url.raw\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"beb72af1-239c-46d8-823b-b00d1e2ace43\":{\"label\":\"Unique count of geo.srcdest\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"geo.srcdest\",\"isBucketed\":false}},\"columnOrder\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"beb72af1-239c-46d8-823b-b00d1e2ace43\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"26e2cf99-d931-4320-9e15-9dbc148f3534\",\"groups\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\"],\"metric\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534\"}]},\"enhancements\":{},\"type\":\"lens\"},\"panelRefName\":\"panel_2e80716f-c1b6-46f2-be2b-35db744b5031\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"da8843e0-6789-4aae-bcd0-81f270538719\"},\"panelIndex\":\"da8843e0-6789-4aae-bcd0-81f270538719\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_da8843e0-6789-4aae-bcd0-81f270538719\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},\"panelIndex\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"869754a7-edf0-478f-a7f1-80374f63108a\"},\"panelIndex\":\"869754a7-edf0-478f-a7f1-80374f63108a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_869754a7-edf0-478f-a7f1-80374f63108a\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"67111cf4-338e-453f-8621-e8dea64082d1\"},\"panelIndex\":\"67111cf4-338e-453f-8621-e8dea64082d1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_67111cf4-338e-453f-8621-e8dea64082d1\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},\"panelIndex\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\"},\"panelIndex\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_88847944-ae1b-45fd-b102-3b45f9bea04b\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\"},\"panelIndex\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5a7924c7-eac0-4573-9199-fecec5b82e9e\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\"},\"panelIndex\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f8f49591-f071-4a96-b1ed-cd65daff5648\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"9f357f47-c2a0-421f-a456-9583c40837ab\"},\"panelIndex\":\"9f357f47-c2a0-421f-a456-9583c40837ab\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9f357f47-c2a0-421f-a456-9583c40837ab\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\"},\"panelIndex\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6cb383e9-1e80-44f9-80d5-7b8c585668db\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\"},\"panelIndex\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_57f5f0bf-6610-4599-aad4-37484640b5e2\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},\"panelIndex\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"dd1718fd-74ee-4032-851b-db97e893825d\"},\"panelIndex\":\"dd1718fd-74ee-4032-851b-db97e893825d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dd1718fd-74ee-4032-851b-db97e893825d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"98a556ee-078b-4e03-93a8-29996133cdcb\"},\"panelIndex\":\"98a556ee-078b-4e03-93a8-29996133cdcb\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\":{\"columns\":{\"ce9117a2-773c-474c-8fb1-18940cf58b38\":{\"label\":\"Top values of type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"type\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false}},\"a3d10552-e352-40d0-a156-e86112c0501a\":{\"label\":\"Top values of _type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"_type\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"},\"9c5db2f3-9eb0-4667-9a74-3318301de251\":{\"label\":\"Sum of bytes\",\"dataType\":\"number\",\"operationType\":\"sum\",\"sourceField\":\"bytes\",\"isBucketed\":false,\"scale\":\"ratio\"}},\"columnOrder\":[\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"a3d10552-e352-40d0-a156-e86112c0501a\",\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\",\"accessors\":[\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"splitAccessor\":\"a3d10552-e352-40d0-a156-e86112c0501a\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd\"}]},\"enhancements\":{},\"type\":\"lens\"}},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},\"panelIndex\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},{\"version\":\"7.13.1\",\"type\":\"map\",\"gridData\":{\"x\":0,\"y\":120,\"w\":24,\"h\":15,\"i\":\"dcc0defa-3376-465c-9b5b-2ba69528848c\"},\"panelIndex\":\"dcc0defa-3376-465c-9b5b-2ba69528848c\",\"embeddableConfig\":{\"mapCenter\":{\"lat\":19.94277,\"lon\":0,\"zoom\":1.56},\"mapBuffer\":{\"minLon\":-210.32666,\"minLat\":-64.8435,\"maxLon\":210.32666,\"maxLat\":95.13806},\"isLayerTOCOpen\":true,\"openTOCDetails\":[],\"hiddenLayers\":[],\"enhancements\":{}},\"panelRefName\":\"panel_dcc0defa-3376-465c-9b5b-2ba69528848c\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":120,\"w\":24,\"h\":15,\"i\":\"dd21a674-ae3a-40f6-9d68-4e01361ea5e2\"},\"panelIndex\":\"dd21a674-ae3a-40f6-9d68-4e01361ea5e2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dd21a674-ae3a-40f6-9d68-4e01361ea5e2\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"timelion_lens_maps_dashboard_logstash","version":1},"coreMigrationVersion":"7.13.5","id":"c4ab2030-be5c-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:panel_2e80716f-c1b6-46f2-be2b-35db744b5031","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534","type":"index-pattern"},{"id":"aa4b8da0-bd9f-11eb-9520-1b4c3ca6a781","name":"da8843e0-6789-4aae-bcd0-81f270538719:panel_da8843e0-6789-4aae-bcd0-81f270538719","type":"lens"},{"id":"2d3f1250-bd9f-11eb-9520-1b4c3ca6a781","name":"adcd4418-7299-4efa-b369-5f71a7b4ebe0:panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0","type":"lens"},{"id":"edd5a560-bda4-11eb-9520-1b4c3ca6a781","name":"869754a7-edf0-478f-a7f1-80374f63108a:panel_869754a7-edf0-478f-a7f1-80374f63108a","type":"lens"},{"id":"2c25a450-bda5-11eb-9520-1b4c3ca6a781","name":"67111cf4-338e-453f-8621-e8dea64082d1:panel_67111cf4-338e-453f-8621-e8dea64082d1","type":"lens"},{"id":"e79116e0-bd9e-11eb-9520-1b4c3ca6a781","name":"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d:panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d","type":"lens"},{"id":"974fb950-bda5-11eb-9520-1b4c3ca6a781","name":"88847944-ae1b-45fd-b102-3b45f9bea04b:panel_88847944-ae1b-45fd-b102-3b45f9bea04b","type":"lens"},{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"5a7924c7-eac0-4573-9199-fecec5b82e9e:panel_5a7924c7-eac0-4573-9199-fecec5b82e9e","type":"lens"},{"id":"51b63040-bda5-11eb-9520-1b4c3ca6a781","name":"f8f49591-f071-4a96-b1ed-cd65daff5648:panel_f8f49591-f071-4a96-b1ed-cd65daff5648","type":"lens"},{"id":"b00679c0-bda5-11eb-9520-1b4c3ca6a781","name":"9f357f47-c2a0-421f-a456-9583c40837ab:panel_9f357f47-c2a0-421f-a456-9583c40837ab","type":"lens"},{"id":"652ade10-bd9f-11eb-9520-1b4c3ca6a781","name":"6cb383e9-1e80-44f9-80d5-7b8c585668db:panel_6cb383e9-1e80-44f9-80d5-7b8c585668db","type":"lens"},{"id":"7f3b5fb0-be2f-11eb-9520-1b4c3ca6a781","name":"57f5f0bf-6610-4599-aad4-37484640b5e2:panel_57f5f0bf-6610-4599-aad4-37484640b5e2","type":"lens"},{"id":"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781","name":"32d3ab66-52e1-44e3-8c1f-1dccff3c5692:panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692","type":"lens"},{"id":"dd315430-be2f-11eb-9520-1b4c3ca6a781","name":"dd1718fd-74ee-4032-851b-db97e893825d:panel_dd1718fd-74ee-4032-851b-db97e893825d","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd","type":"index-pattern"},{"id":"0dbbf8b0-be3c-11eb-9520-1b4c3ca6a781","name":"62a0f0b0-3589-4cef-807b-b1b4258b7a9b:panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b","type":"lens"},{"id":"0c5974f0-be5c-11eb-9520-1b4c3ca6a781","name":"dcc0defa-3376-465c-9b5b-2ba69528848c:panel_dcc0defa-3376-465c-9b5b-2ba69528848c","type":"map"},{"id":"a4d7be80-6245-11eb-aebf-c306684b328d","name":"dd21a674-ae3a-40f6-9d68-4e01361ea5e2:panel_dd21a674-ae3a-40f6-9d68-4e01361ea5e2","type":"visualization"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,236],"type":"dashboard","updated_at":"2022-05-03T17:43:32.857Z","version":"WzkzLDFd"} +{"attributes":{"columns":[],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"speaker :\\\"DUKE VINCENTIO\\\" \",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[],"title":"drilldown_shakes","version":1},"coreMigrationVersion":"7.13.5","id":"c4b9cc00-ca2a-11eb-bf5e-3de94e83d4f0","migrationVersion":{"search":"7.9.3"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"sort":[1651611630398,283],"type":"search","updated_at":"2022-05-03T21:00:30.398Z","version":"WzE1MCwxXQ=="} +{"attributes":{"@created":"2021-05-27T19:45:29.712Z","@timestamp":"2021-05-27T19:45:29.712Z","content":"{\"selectedNodes\":[{\"id\":\"element-56d2ba72-f227-4d04-9478-a1d6f0c7e601\",\"position\":{\"left\":20,\"top\":20,\"width\":500,\"height\":300,\"angle\":0,\"parent\":\"group-499b5982-25f4-4894-9540-1874a27d78e7\",\"type\":\"element\"},\"expression\":\"savedLens id=\\\"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781\\\" timerange={timerange from=\\\"now-15y\\\" to=\\\"now\\\"}\\n| render\",\"filter\":null,\"ast\":{\"type\":\"expression\",\"chain\":[{\"type\":\"function\",\"function\":\"savedLens\",\"arguments\":{\"id\":[\"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781\"],\"timerange\":[{\"type\":\"expression\",\"chain\":[{\"type\":\"function\",\"function\":\"timerange\",\"arguments\":{\"from\":[\"now-15y\"],\"to\":[\"now\"]}}]}]}},{\"type\":\"function\",\"function\":\"render\",\"arguments\":{}}]}},{\"id\":\"element-afbaa26e-10e7-47d4-bb41-b061dfdced2b\",\"position\":{\"left\":527,\"top\":20,\"width\":500,\"height\":300,\"angle\":0,\"parent\":\"group-499b5982-25f4-4894-9540-1874a27d78e7\",\"type\":\"element\"},\"expression\":\"savedVisualization id=\\\"0d8a8860-623a-11eb-aebf-c306684b328d\\\" timerange={timerange from=\\\"now-15y\\\" to=\\\"now\\\"}\\n| render\",\"filter\":null,\"ast\":{\"type\":\"expression\",\"chain\":[{\"type\":\"function\",\"function\":\"savedVisualization\",\"arguments\":{\"id\":[\"0d8a8860-623a-11eb-aebf-c306684b328d\"],\"timerange\":[{\"type\":\"expression\",\"chain\":[{\"type\":\"function\",\"function\":\"timerange\",\"arguments\":{\"from\":[\"now-15y\"],\"to\":[\"now\"]}}]}]}},{\"type\":\"function\",\"function\":\"render\",\"arguments\":{}}]}}]}","displayName":"element_canvas","help":"","image":"","name":"elementCanvas"},"coreMigrationVersion":"7.13.5","id":"custom-element-3bc52277-ee01-4cdc-8d2d-f2db6ade1512","references":[],"sort":[1651599812857,237],"type":"canvas-element","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzk1LDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.5\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"ced0a5ea-3ec2-4274-8431-6e76d85637f6\"},\"panelIndex\":\"ced0a5ea-3ec2-4274-8431-6e76d85637f6\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"6a3b206a-4ac3-4d67-b2b9-c6b543a11ea3\":{\"columns\":{\"f70668f8-ae97-4b64-867f-b0c9b77914ef\":{\"label\":\"Top values of speaker\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"speaker\",\"isBucketed\":true,\"params\":{\"size\":39,\"orderBy\":{\"type\":\"column\",\"columnId\":\"fbf256d9-cae7-4244-8504-b73a5666e917\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"fbf256d9-cae7-4244-8504-b73a5666e917\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"}},\"columnOrder\":[\"f70668f8-ae97-4b64-867f-b0c9b77914ef\",\"fbf256d9-cae7-4244-8504-b73a5666e917\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_horizontal_percentage_stacked\",\"layers\":[{\"layerId\":\"6a3b206a-4ac3-4d67-b2b9-c6b543a11ea3\",\"accessors\":[\"fbf256d9-cae7-4244-8504-b73a5666e917\"],\"position\":\"top\",\"seriesType\":\"bar_horizontal_percentage_stacked\",\"showGridlines\":false,\"splitAccessor\":\"f70668f8-ae97-4b64-867f-b0c9b77914ef\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"4e937b20-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"4e937b20-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-6a3b206a-4ac3-4d67-b2b9-c6b543a11ea3\"}]},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"2b9a2bad-d6aa-4d3b-a692-fd96c3fb0ac1\",\"triggers\":[\"FILTER_TRIGGER\"],\"action\":{\"name\":\"We_like_lens\",\"config\":{\"useCurrentFilters\":true,\"useCurrentDateRange\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}}}},{\"version\":\"7.13.5\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"e51c2a40-5849-47c9-9ae2-a6373d68154b\"},\"panelIndex\":\"e51c2a40-5849-47c9-9ae2-a6373d68154b\",\"embeddableConfig\":{\"savedVis\":{\"title\":\"\",\"description\":\"\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"uiState\":{},\"data\":{\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"play_name\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":788,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"searchSource\":{\"index\":\"4e937b20-619d-11eb-aebf-c306684b328d\",\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"3775f69f-ad03-476d-bbf8-99ab9628a55d\",\"triggers\":[\"VALUE_CLICK_TRIGGER\"],\"action\":{\"factoryId\":\"URL_DRILLDOWN\",\"name\":\"drilldown_timebased \",\"config\":{\"url\":{\"template\":\"http://localhost:5601/app/discover#/view/b3288100-ca2c-11eb-bf5e-3de94e83d4f0?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15y,to:now))&_a=(columns:!(),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',key:geo.dest,negate:!f,params:(query:US),type:phrase),query:(match_phrase:(geo.dest:US)))),index:'43fcac20-ca27-11eb-bf5e-3de94e83d4f0',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\"},\"openInNewTab\":true,\"encodeUrl\":true}}}]}}}}]","timeRestore":false,"title":"nontimebased_shakespeare_drilldown","version":1},"coreMigrationVersion":"7.13.5","id":"e9eb20f0-ca2a-11eb-bf5e-3de94e83d4f0","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"ced0a5ea-3ec2-4274-8431-6e76d85637f6:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"ced0a5ea-3ec2-4274-8431-6e76d85637f6:indexpattern-datasource-layer-6a3b206a-4ac3-4d67-b2b9-c6b543a11ea3","type":"index-pattern"},{"id":"08dec860-ca29-11eb-bf5e-3de94e83d4f0","name":"ced0a5ea-3ec2-4274-8431-6e76d85637f6:drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:2b9a2bad-d6aa-4d3b-a692-fd96c3fb0ac1:dashboardId","type":"dashboard"},{"id":"4e937b20-619d-11eb-aebf-c306684b328d","name":"e51c2a40-5849-47c9-9ae2-a6373d68154b:kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"07f48f70-ca29-11eb-bf5e-3de94e83d4f0","name":"tag-07f48f70-ca29-11eb-bf5e-3de94e83d4f0","type":"tag"}],"sort":[1651612119207,862],"type":"dashboard","updated_at":"2022-05-03T21:08:39.207Z","version":"WzQ1MywxXQ=="} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\"},\"panelIndex\":\"2e80716f-c1b6-46f2-be2b-35db744b5031\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsPie\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"26e2cf99-d931-4320-9e15-9dbc148f3534\":{\"columns\":{\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\":{\"label\":\"Top values of url.raw\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url.raw\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"beb72af1-239c-46d8-823b-b00d1e2ace43\":{\"label\":\"Unique count of geo.srcdest\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"geo.srcdest\",\"isBucketed\":false}},\"columnOrder\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"beb72af1-239c-46d8-823b-b00d1e2ace43\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"26e2cf99-d931-4320-9e15-9dbc148f3534\",\"groups\":[\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\",\"6adde1a2-4c6f-47eb-95cc-5c6a9d863a6e\"],\"metric\":\"beb72af1-239c-46d8-823b-b00d1e2ace43\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534\"}]},\"enhancements\":{},\"type\":\"lens\"},\"panelRefName\":\"panel_2e80716f-c1b6-46f2-be2b-35db744b5031\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"da8843e0-6789-4aae-bcd0-81f270538719\"},\"panelIndex\":\"da8843e0-6789-4aae-bcd0-81f270538719\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_da8843e0-6789-4aae-bcd0-81f270538719\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},\"panelIndex\":\"adcd4418-7299-4efa-b369-5f71a7b4ebe0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"869754a7-edf0-478f-a7f1-80374f63108a\"},\"panelIndex\":\"869754a7-edf0-478f-a7f1-80374f63108a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_869754a7-edf0-478f-a7f1-80374f63108a\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"67111cf4-338e-453f-8621-e8dea64082d1\"},\"panelIndex\":\"67111cf4-338e-453f-8621-e8dea64082d1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_67111cf4-338e-453f-8621-e8dea64082d1\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},\"panelIndex\":\"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\"},\"panelIndex\":\"88847944-ae1b-45fd-b102-3b45f9bea04b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_88847944-ae1b-45fd-b102-3b45f9bea04b\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\"},\"panelIndex\":\"5a7924c7-eac0-4573-9199-fecec5b82e9e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5a7924c7-eac0-4573-9199-fecec5b82e9e\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\"},\"panelIndex\":\"f8f49591-f071-4a96-b1ed-cd65daff5648\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f8f49591-f071-4a96-b1ed-cd65daff5648\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"9f357f47-c2a0-421f-a456-9583c40837ab\"},\"panelIndex\":\"9f357f47-c2a0-421f-a456-9583c40837ab\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9f357f47-c2a0-421f-a456-9583c40837ab\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\"},\"panelIndex\":\"6cb383e9-1e80-44f9-80d5-7b8c585668db\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6cb383e9-1e80-44f9-80d5-7b8c585668db\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\"},\"panelIndex\":\"57f5f0bf-6610-4599-aad4-37484640b5e2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_57f5f0bf-6610-4599-aad4-37484640b5e2\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},\"panelIndex\":\"32d3ab66-52e1-44e3-8c1f-1dccff3c5692\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"dd1718fd-74ee-4032-851b-db97e893825d\"},\"panelIndex\":\"dd1718fd-74ee-4032-851b-db97e893825d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dd1718fd-74ee-4032-851b-db97e893825d\"},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"98a556ee-078b-4e03-93a8-29996133cdcb\"},\"panelIndex\":\"98a556ee-078b-4e03-93a8-29996133cdcb\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"type\":\"lens\",\"visualizationType\":\"lnsXY\",\"state\":{\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\":{\"columns\":{\"ce9117a2-773c-474c-8fb1-18940cf58b38\":{\"label\":\"Top values of type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"type\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false}},\"a3d10552-e352-40d0-a156-e86112c0501a\":{\"label\":\"Top values of _type\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"_type\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false}},\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"Records\"},\"9c5db2f3-9eb0-4667-9a74-3318301de251\":{\"label\":\"Sum of bytes\",\"dataType\":\"number\",\"operationType\":\"sum\",\"sourceField\":\"bytes\",\"isBucketed\":false,\"scale\":\"ratio\"}},\"columnOrder\":[\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"a3d10552-e352-40d0-a156-e86112c0501a\",\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"incompleteColumns\":{}}}}},\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"999a2d60-cb2a-451c-8d71-80d7e92e70fd\",\"accessors\":[\"cf07d1f1-d3fd-41f7-812c-d8587ec75959\",\"9c5db2f3-9eb0-4667-9a74-3318301de251\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"xAccessor\":\"ce9117a2-773c-474c-8fb1-18940cf58b38\",\"splitAccessor\":\"a3d10552-e352-40d0-a156-e86112c0501a\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[]},\"references\":[{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-current-indexpattern\"},{\"type\":\"index-pattern\",\"id\":\"56b34100-619d-11eb-aebf-c306684b328d\",\"name\":\"indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd\"}]},\"enhancements\":{},\"type\":\"lens\"}},{\"version\":\"7.13.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"},\"panelIndex\":\"62a0f0b0-3589-4cef-807b-b1b4258b7a9b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"2015-09-20T01:56:56.132Z","timeRestore":true,"timeTo":"2015-09-21T11:18:20.471Z","title":"lens_dashboard_logstash","version":1},"coreMigrationVersion":"7.13.5","id":"f458b9f0-bd9e-11eb-9520-1b4c3ca6a781","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:panel_2e80716f-c1b6-46f2-be2b-35db744b5031","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"2e80716f-c1b6-46f2-be2b-35db744b5031:indexpattern-datasource-layer-26e2cf99-d931-4320-9e15-9dbc148f3534","type":"index-pattern"},{"id":"aa4b8da0-bd9f-11eb-9520-1b4c3ca6a781","name":"da8843e0-6789-4aae-bcd0-81f270538719:panel_da8843e0-6789-4aae-bcd0-81f270538719","type":"lens"},{"id":"2d3f1250-bd9f-11eb-9520-1b4c3ca6a781","name":"adcd4418-7299-4efa-b369-5f71a7b4ebe0:panel_adcd4418-7299-4efa-b369-5f71a7b4ebe0","type":"lens"},{"id":"edd5a560-bda4-11eb-9520-1b4c3ca6a781","name":"869754a7-edf0-478f-a7f1-80374f63108a:panel_869754a7-edf0-478f-a7f1-80374f63108a","type":"lens"},{"id":"2c25a450-bda5-11eb-9520-1b4c3ca6a781","name":"67111cf4-338e-453f-8621-e8dea64082d1:panel_67111cf4-338e-453f-8621-e8dea64082d1","type":"lens"},{"id":"e79116e0-bd9e-11eb-9520-1b4c3ca6a781","name":"13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d:panel_13f21ad2-9b2d-4aa2-a908-b62e1bdedc1d","type":"lens"},{"id":"974fb950-bda5-11eb-9520-1b4c3ca6a781","name":"88847944-ae1b-45fd-b102-3b45f9bea04b:panel_88847944-ae1b-45fd-b102-3b45f9bea04b","type":"lens"},{"id":"21905950-bd9f-11eb-9520-1b4c3ca6a781","name":"5a7924c7-eac0-4573-9199-fecec5b82e9e:panel_5a7924c7-eac0-4573-9199-fecec5b82e9e","type":"lens"},{"id":"51b63040-bda5-11eb-9520-1b4c3ca6a781","name":"f8f49591-f071-4a96-b1ed-cd65daff5648:panel_f8f49591-f071-4a96-b1ed-cd65daff5648","type":"lens"},{"id":"b00679c0-bda5-11eb-9520-1b4c3ca6a781","name":"9f357f47-c2a0-421f-a456-9583c40837ab:panel_9f357f47-c2a0-421f-a456-9583c40837ab","type":"lens"},{"id":"652ade10-bd9f-11eb-9520-1b4c3ca6a781","name":"6cb383e9-1e80-44f9-80d5-7b8c585668db:panel_6cb383e9-1e80-44f9-80d5-7b8c585668db","type":"lens"},{"id":"7f3b5fb0-be2f-11eb-9520-1b4c3ca6a781","name":"57f5f0bf-6610-4599-aad4-37484640b5e2:panel_57f5f0bf-6610-4599-aad4-37484640b5e2","type":"lens"},{"id":"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781","name":"32d3ab66-52e1-44e3-8c1f-1dccff3c5692:panel_32d3ab66-52e1-44e3-8c1f-1dccff3c5692","type":"lens"},{"id":"dd315430-be2f-11eb-9520-1b4c3ca6a781","name":"dd1718fd-74ee-4032-851b-db97e893825d:panel_dd1718fd-74ee-4032-851b-db97e893825d","type":"lens"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"56b34100-619d-11eb-aebf-c306684b328d","name":"98a556ee-078b-4e03-93a8-29996133cdcb:indexpattern-datasource-layer-999a2d60-cb2a-451c-8d71-80d7e92e70fd","type":"index-pattern"},{"id":"0dbbf8b0-be3c-11eb-9520-1b4c3ca6a781","name":"62a0f0b0-3589-4cef-807b-b1b4258b7a9b:panel_62a0f0b0-3589-4cef-807b-b1b4258b7a9b","type":"lens"},{"id":"e6994960-bd9e-11eb-9520-1b4c3ca6a781","name":"tag-e6994960-bd9e-11eb-9520-1b4c3ca6a781","type":"tag"}],"sort":[1651599812857,258],"type":"dashboard","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzk3LDFd"} +{"attributes":{"description":"this is a logstash saved query","filters":[],"query":{"language":"kuery","query":"extension.raw :\"gif\" and machine.os.raw :\"ios\" "},"timefilter":{"from":"2015-09-20T01:56:56.132Z","refreshInterval":{"pause":true,"value":0},"to":"2015-09-21T11:18:20.471Z"},"title":"logstash_saved_query"},"coreMigrationVersion":"7.13.5","id":"logstash_saved_query","references":[],"sort":[1651599812857,259],"type":"query","updated_at":"2022-05-03T17:43:32.857Z","version":"Wzk5LDFd"} +{"attributes":{"description":"Shakespeare query","filters":[],"query":{"language":"kuery","query":"speaker : \"OTHELLO\" and play_name :\"Othello\" "},"title":"shakespeare_current_query"},"coreMigrationVersion":"7.13.5","id":"shakespeare_current_query","references":[],"sort":[1651599812857,260],"type":"query","updated_at":"2022-05-03T17:43:32.857Z","version":"WzEwMSwxXQ=="} +{"attributes":{"@created":"2021-05-27T18:53:18.432Z","@timestamp":"2021-05-27T19:46:12.539Z","assets":{},"colors":["#37988d","#c19628","#b83c6f","#3f9939","#1785b0","#ca5f35","#45bdb0","#f2bc33","#e74b8b","#4fbf48","#1ea6dc","#fd7643","#72cec3","#f5cc5d","#ec77a8","#7acf74","#4cbce4","#fd986f","#a1ded7","#f8dd91","#f2a4c5","#a6dfa2","#86d2ed","#fdba9f","#000000","#444444","#777777","#BBBBBB","#FFFFFF","rgba(255,255,255,0)"],"css":".canvasPage {\n\n}","height":720,"isWriteable":true,"name":"logstash-canvas-workpad","page":1,"pages":[{"elements":[{"expression":"savedLens id=\"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781\" timerange={timerange from=\"now-15y\" to=\"now\"}\n| render","filter":null,"id":"element-56d2ba72-f227-4d04-9478-a1d6f0c7e601","position":{"angle":0,"height":300,"left":20,"parent":null,"top":20,"width":500}},{"expression":"savedVisualization id=\"0d8a8860-623a-11eb-aebf-c306684b328d\" timerange={timerange from=\"now-15y\" to=\"now\"}\n| render","filter":null,"id":"element-afbaa26e-10e7-47d4-bb41-b061dfdced2b","position":{"angle":0,"height":300,"left":527,"parent":null,"top":20,"width":500}}],"groups":[],"id":"page-0f9ef2da-2868-4c0b-9223-fd3c9e53d6c9","style":{"background":"#FFF"},"transition":{}},{"elements":[{"expression":"image dataurl=null mode=\"contain\"\n| render","id":"element-c5534ef7-68c4-46bc-b35a-9e43a7f118c3","position":{"angle":0,"height":107,"left":20,"parent":null,"top":20,"width":132}},{"expression":"filters\n| essql query=\"SELECT machine.os.raw FROM \\\"logstash-*\\\"\"\n| pointseries x=\"machine.os.raw\" y=\"size(machine.os.raw)\" color=\"machine.os.raw\" size=\"sum(machine.os.raw)\"\n| plot defaultStyle={seriesStyle points=5 fill=1}\n| render","id":"element-5f7a3312-0e77-471c-9b8f-f98cb38075fb","position":{"angle":0,"height":192,"left":221,"parent":null,"top":56,"width":451}},{"expression":"timefilterControl compact=true column=@timestamp\n| render","filter":"timefilter from=\"now-29y\" to=now column=@timestamp","id":"element-6e00dcf4-06fe-4bd9-9315-d32d9d3fac5f","position":{"angle":0,"height":50,"left":221,"parent":null,"top":-1,"width":500}},{"expression":"filters\n| esdocs index=\"logstash-*\" fields=\"@timestamp, response.raw\"\n| pointseries x=\"size(response.raw)\" y=\"@timestamp\" color=\"response.raw\"\n| plot\n| render","id":"element-20281fac-1c3a-4ee3-9132-44379fb60b74","position":{"angle":0,"height":262,"left":51,"parent":null,"top":304,"width":590}},{"expression":"filters\n| timelion query=\".es(index=logstash-*, metric=sum:bytes)\"\n| pointseries x=\"@timestamp\" y=\"sum(value)\"\n| plot defaultStyle={seriesStyle lines=3}\n| render","id":"element-337b0548-5d6d-44cd-a324-eb50d63c7bd0","position":{"angle":0,"height":309,"left":648,"parent":null,"top":290,"width":369}},{"expression":"savedLens id=\"bb9e5bb0-be2f-11eb-9520-1b4c3ca6a781\" timerange={timerange from=\"now-15y\" to=\"now\"}\n| render","filter":null,"id":"element-353e5583-0dbb-4a6b-bac7-3b2a6b305397","position":{"angle":0,"height":181.99999999999997,"left":855,"parent":"group-d2618a19-3982-414e-93df-b2cb165b7c7e","top":15.000000000000014,"width":76.961271102284}},{"expression":"savedVisualization id=\"0d8a8860-623a-11eb-aebf-c306684b328d\" timerange={timerange from=\"now-15y\" to=\"now\"}\n| render","filter":null,"id":"element-0e5501a6-9e87-42bc-b539-1e697e62051b","position":{"angle":0,"height":181.99999999999997,"left":933.038728897716,"parent":"group-d2618a19-3982-414e-93df-b2cb165b7c7e","top":15.000000000000014,"width":76.961271102284}}],"groups":[],"id":"page-59c3cf09-1811-4324-995b-7336c1c11ab8","style":{"background":"#FFF"},"transition":{}}],"variables":[],"width":1080},"coreMigrationVersion":"7.13.5","id":"workpad-f2024ca3-e366-447a-b3af-7db4400646ef","migrationVersion":{"canvas-workpad":"7.0.0"},"references":[],"sort":[1651599812857,261],"type":"canvas-workpad","updated_at":"2022-05-03T17:43:32.857Z","version":"WzEwMiwxXQ=="} +{"exportedCount":82,"missingRefCount":0,"missingReferences":[]} \ No newline at end of file diff --git a/x-pack/test/functional/apps/saved_objects_management/import_saved_objects_between_versions.ts b/x-pack/test/functional/apps/saved_objects_management/import_saved_objects_between_versions.ts index 168a2fd8d8aec..8716b10150d79 100644 --- a/x-pack/test/functional/apps/saved_objects_management/import_saved_objects_between_versions.ts +++ b/x-pack/test/functional/apps/saved_objects_management/import_saved_objects_between_versions.ts @@ -56,7 +56,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.savedObjects.clickImportDone(); await PageObjects.savedObjects.waitTableIsLoaded(); const newObjectCount = await PageObjects.savedObjects.getExportCount(); - expect(newObjectCount - initialObjectCount).to.eql(86); + expect(newObjectCount - initialObjectCount).to.eql(82); // logstash by reference dashboard with drilldowns await PageObjects.common.navigateToApp('dashboard'); diff --git a/x-pack/test/functional/apps/saved_objects_management/index.ts b/x-pack/test/functional/apps/saved_objects_management/index.ts index 17cdae0707213..dc0dae5134f50 100644 --- a/x-pack/test/functional/apps/saved_objects_management/index.ts +++ b/x-pack/test/functional/apps/saved_objects_management/index.ts @@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function savedObjectsManagementApp({ loadTestFile }: FtrProviderContext) { describe('Saved objects management', function savedObjectsManagementAppTestSuite() { - this.tags(['ciGroup2', 'skipFirefox']); + this.tags('skipFirefox'); loadTestFile(require.resolve('./spaces_integration')); loadTestFile(require.resolve('./feature_controls/saved_objects_management_security')); diff --git a/x-pack/test/functional/apps/security/basic_license/index.ts b/x-pack/test/functional/apps/security/basic_license/index.ts index 771874f853de4..04e55abb9bac1 100644 --- a/x-pack/test/functional/apps/security/basic_license/index.ts +++ b/x-pack/test/functional/apps/security/basic_license/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security app - basic license', function () { - this.tags('ciGroup4'); - loadTestFile(require.resolve('./role_mappings')); }); } diff --git a/x-pack/test/functional/apps/security/config.ts b/x-pack/test/functional/apps/security/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/security/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/security/index.ts b/x-pack/test/functional/apps/security/index.ts index fc9caafbabb29..3260e61e67cbf 100644 --- a/x-pack/test/functional/apps/security/index.ts +++ b/x-pack/test/functional/apps/security/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security app', function () { - this.tags('ciGroup7'); - loadTestFile(require.resolve('./security')); loadTestFile(require.resolve('./doc_level_security_roles')); loadTestFile(require.resolve('./management')); diff --git a/x-pack/test/functional/apps/snapshot_restore/config.ts b/x-pack/test/functional/apps/snapshot_restore/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/snapshot_restore/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/snapshot_restore/index.ts b/x-pack/test/functional/apps/snapshot_restore/index.ts index 95fc0b80c2c91..0eefd3884cd31 100644 --- a/x-pack/test/functional/apps/snapshot_restore/index.ts +++ b/x-pack/test/functional/apps/snapshot_restore/index.ts @@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Snapshots app', function () { - this.tags(['ciGroup4', 'skipCloud']); + this.tags('skipCloud'); loadTestFile(require.resolve('./home_page')); }); }; diff --git a/x-pack/test/functional/apps/spaces/config.ts b/x-pack/test/functional/apps/spaces/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/spaces/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/spaces/index.ts b/x-pack/test/functional/apps/spaces/index.ts index 780d355e1f5c6..c951609d6a33f 100644 --- a/x-pack/test/functional/apps/spaces/index.ts +++ b/x-pack/test/functional/apps/spaces/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function spacesApp({ loadTestFile }: FtrProviderContext) { describe('Spaces app', function spacesAppTestSuite() { - this.tags('ciGroup9'); - loadTestFile(require.resolve('./copy_saved_objects')); loadTestFile(require.resolve('./feature_controls/spaces_security')); loadTestFile(require.resolve('./spaces_selection')); diff --git a/x-pack/test/functional/apps/status_page/config.ts b/x-pack/test/functional/apps/status_page/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/status_page/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/status_page/index.ts b/x-pack/test/functional/apps/status_page/index.ts index 69b18984f0ade..cdf6bb52ee605 100644 --- a/x-pack/test/functional/apps/status_page/index.ts +++ b/x-pack/test/functional/apps/status_page/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function statusPage({ loadTestFile }: FtrProviderContext) { describe('Status page', function statusPageTestSuite() { - this.tags('ciGroup4'); - loadTestFile(require.resolve('./status_page')); }); } diff --git a/x-pack/test/functional/apps/transform/config.ts b/x-pack/test/functional/apps/transform/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/transform/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/transform/index.ts b/x-pack/test/functional/apps/transform/index.ts index 181325e83b36b..0c5227ae2f472 100644 --- a/x-pack/test/functional/apps/transform/index.ts +++ b/x-pack/test/functional/apps/transform/index.ts @@ -16,7 +16,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { const transform = getService('transform'); describe('transform', function () { - this.tags(['ciGroup21', 'transform']); + this.tags('transform'); before(async () => { await transform.securityCommon.createTransformRoles(); diff --git a/x-pack/test/functional/apps/upgrade_assistant/config.ts b/x-pack/test/functional/apps/upgrade_assistant/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/upgrade_assistant/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/upgrade_assistant/index.ts b/x-pack/test/functional/apps/upgrade_assistant/index.ts index d1ab46463e930..fcb9dd4ba7cca 100644 --- a/x-pack/test/functional/apps/upgrade_assistant/index.ts +++ b/x-pack/test/functional/apps/upgrade_assistant/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function upgradeCheckup({ loadTestFile }: FtrProviderContext) { describe('Upgrade Assistant', function upgradeAssistantTestSuite() { - this.tags('ciGroup4'); - loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./deprecation_pages')); loadTestFile(require.resolve('./overview_page')); diff --git a/x-pack/test/functional/apps/uptime/config.ts b/x-pack/test/functional/apps/uptime/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/uptime/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/uptime/index.ts b/x-pack/test/functional/apps/uptime/index.ts index cc0578602951a..99359ee126502 100644 --- a/x-pack/test/functional/apps/uptime/index.ts +++ b/x-pack/test/functional/apps/uptime/index.ts @@ -42,8 +42,6 @@ export default ({ loadTestFile, getService }: FtrProviderContext) => { const uptime = getService('uptime'); describe('Uptime app', function () { - this.tags('ciGroup10'); - beforeEach('delete settings', async () => { await deleteUptimeSettingsObject(server); }); diff --git a/x-pack/test/functional/apps/visualize/config.ts b/x-pack/test/functional/apps/visualize/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/visualize/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/visualize/index.ts b/x-pack/test/functional/apps/visualize/index.ts index 105303aa1b537..c99182201eb5d 100644 --- a/x-pack/test/functional/apps/visualize/index.ts +++ b/x-pack/test/functional/apps/visualize/index.ts @@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function visualize({ loadTestFile }: FtrProviderContext) { describe('Visualize', function visualizeTestSuite() { - this.tags(['ciGroup30', 'skipFirefox']); + this.tags('skipFirefox'); loadTestFile(require.resolve('./feature_controls/visualize_security')); loadTestFile(require.resolve('./feature_controls/visualize_spaces')); diff --git a/x-pack/test/functional/apps/watcher/config.ts b/x-pack/test/functional/apps/watcher/config.ts new file mode 100644 index 0000000000000..d0d07ff200281 --- /dev/null +++ b/x-pack/test/functional/apps/watcher/config.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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/x-pack/test/functional/apps/watcher/index.js b/x-pack/test/functional/apps/watcher/index.js index fb39fe4aa7b29..fab662b26e80c 100644 --- a/x-pack/test/functional/apps/watcher/index.js +++ b/x-pack/test/functional/apps/watcher/index.js @@ -7,7 +7,7 @@ export default function ({ loadTestFile }) { describe('watcher app', function () { - this.tags(['ciGroup28', 'includeFirefox']); + this.tags('includeFirefox'); loadTestFile(require.resolve('./watcher_test')); }); diff --git a/x-pack/test/functional/config.js b/x-pack/test/functional/config.base.js similarity index 88% rename from x-pack/test/functional/config.js rename to x-pack/test/functional/config.base.js index 8d39f26d4569d..b5b671a54744e 100644 --- a/x-pack/test/functional/config.js +++ b/x-pack/test/functional/config.base.js @@ -24,52 +24,10 @@ export default async function ({ readConfigFile }) { require.resolve('../../../test/common/config.js') ); const kibanaFunctionalConfig = await readConfigFile( - require.resolve('../../../test/functional/config.js') + require.resolve('../../../test/functional/config.base.js') ); return { - // list paths to the files that contain your plugins tests - testFiles: [ - resolve(__dirname, './apps/home'), - resolve(__dirname, './apps/advanced_settings'), - resolve(__dirname, './apps/canvas'), - resolve(__dirname, './apps/graph'), - resolve(__dirname, './apps/monitoring'), - resolve(__dirname, './apps/watcher'), - resolve(__dirname, './apps/dashboard'), - resolve(__dirname, './apps/discover'), - resolve(__dirname, './apps/security'), - resolve(__dirname, './apps/spaces'), - resolve(__dirname, './apps/logstash'), - resolve(__dirname, './apps/grok_debugger'), - resolve(__dirname, './apps/infra'), - resolve(__dirname, './apps/ml'), - resolve(__dirname, './apps/rollup_job'), - resolve(__dirname, './apps/maps'), - resolve(__dirname, './apps/status_page'), - resolve(__dirname, './apps/upgrade_assistant'), - resolve(__dirname, './apps/visualize'), - resolve(__dirname, './apps/uptime'), - resolve(__dirname, './apps/saved_objects_management'), - resolve(__dirname, './apps/dev_tools'), - resolve(__dirname, './apps/apm'), - resolve(__dirname, './apps/api_keys'), - resolve(__dirname, './apps/data_views'), - resolve(__dirname, './apps/index_management'), - resolve(__dirname, './apps/index_lifecycle_management'), - resolve(__dirname, './apps/ingest_pipelines'), - resolve(__dirname, './apps/snapshot_restore'), - resolve(__dirname, './apps/cross_cluster_replication'), - resolve(__dirname, './apps/remote_clusters'), - resolve(__dirname, './apps/transform'), - resolve(__dirname, './apps/reporting_management'), - resolve(__dirname, './apps/management'), - resolve(__dirname, './apps/lens'), // smokescreen tests cause flakiness in other tests - - // This license_management file must be last because it is destructive. - resolve(__dirname, './apps/license_management'), - ], - services, pageObjects, diff --git a/x-pack/test/functional/config.ccs.ts b/x-pack/test/functional/config.ccs.ts index e6e0da5293190..87bdb17e736bd 100644 --- a/x-pack/test/functional/config.ccs.ts +++ b/x-pack/test/functional/config.ccs.ts @@ -10,12 +10,12 @@ import { RemoteEsArchiverProvider } from './services/remote_es/remote_es_archive import { RemoteEsProvider } from './services/remote_es/remote_es'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile(require.resolve('./config')); + const functionalConfig = await readConfigFile(require.resolve('./config.base.js')); return { ...functionalConfig.getAll(), - testFiles: [require.resolve('./apps/lens')], + testFiles: [require.resolve('./apps/lens/group1')], junit: { reportName: 'X-Pack CCS Tests', diff --git a/x-pack/test/functional/config.coverage.js b/x-pack/test/functional/config.coverage.js deleted file mode 100644 index b403fe933c4a3..0000000000000 --- a/x-pack/test/functional/config.coverage.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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export default async function ({ readConfigFile }) { - const chromeConfig = await readConfigFile(require.resolve('./config')); - - return { - ...chromeConfig.getAll(), - - suiteTags: { - exclude: ['skipCoverage'], - }, - - junit: { - reportName: 'Code Coverage for Functional Tests', - }, - }; -} diff --git a/x-pack/test/functional/config.edge.js b/x-pack/test/functional/config.edge.js index b51b09d0f4878..58f35e844e283 100644 --- a/x-pack/test/functional/config.edge.js +++ b/x-pack/test/functional/config.edge.js @@ -6,10 +6,10 @@ */ export default async function ({ readConfigFile }) { - const chromeConfig = await readConfigFile(require.resolve('./config')); + const firefoxConfig = await readConfigFile(require.resolve('./config.firefox.js')); return { - ...chromeConfig.getAll(), + ...firefoxConfig.getAll(), browser: { type: 'msedge', diff --git a/x-pack/test/functional/config.firefox.js b/x-pack/test/functional/config.firefox.js index 148f3c454a859..91249df789de8 100644 --- a/x-pack/test/functional/config.firefox.js +++ b/x-pack/test/functional/config.firefox.js @@ -6,16 +6,26 @@ */ export default async function ({ readConfigFile }) { - const chromeConfig = await readConfigFile(require.resolve('./config')); + const chromeConfig = await readConfigFile(require.resolve('./config.base.js')); return { ...chromeConfig.getAll(), + testFiles: [ + require.resolve('./apps/canvas'), + require.resolve('./apps/infra'), + require.resolve('./apps/security'), + require.resolve('./apps/spaces'), + require.resolve('./apps/status_page'), + require.resolve('./apps/watcher'), + ], + browser: { type: 'firefox', }, suiteTags: { + include: ['includeFirefox'], exclude: ['skipFirefox'], }, diff --git a/x-pack/test/functional/config_security_basic.ts b/x-pack/test/functional/config_security_basic.ts index dc4bfc437347e..d56b91d45a63e 100644 --- a/x-pack/test/functional/config_security_basic.ts +++ b/x-pack/test/functional/config_security_basic.ts @@ -20,7 +20,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const kibanaFunctionalConfig = await readConfigFile( - require.resolve('../../../test/functional/config.js') + require.resolve('../../../test/functional/config.base.js') ); return { 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 284c6e9519cc1..9c8d233e02074 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 @@ -57,7 +57,7 @@ "source": { "event.kind" : "signal", "@timestamp": "2020-12-16T15:16:18.570Z", - "kibana.alert.rule.rule_type_id": "siem.signals", + "kibana.alert.rule.rule_type_id": "siem.queryRule", "message": "hello world security", "kibana.alert.rule.consumer": "siem", "kibana.alert.workflow_status": "open", @@ -74,7 +74,7 @@ "source": { "event.kind" : "signal", "@timestamp": "2020-12-16T15:16:18.570Z", - "kibana.alert.rule.rule_type_id": "siem.customRule", + "kibana.alert.rule.rule_type_id": "siem.queryRule", "message": "hello world security", "kibana.alert.rule.consumer": "siem", "kibana.alert.workflow_status": "open", @@ -90,7 +90,7 @@ "id": "space1securityalert", "source": { "@timestamp": "2020-12-16T15:16:18.570Z", - "kibana.alert.rule.rule_type_id": "siem.signals", + "kibana.alert.rule.rule_type_id": "siem.queryRule", "message": "hello world security", "kibana.alert.rule.consumer": "siem", "kibana.alert.workflow_status": "open", @@ -106,7 +106,7 @@ "id": "space2securityalert", "source": { "@timestamp": "2020-12-16T15:16:18.570Z", - "kibana.alert.rule.rule_type_id": "siem.signals", + "kibana.alert.rule.rule_type_id": "siem.queryRule", "message": "hello world security", "kibana.alert.rule.consumer": "siem", "kibana.alert.workflow_status": "open", diff --git a/x-pack/test/functional/es_archives/security_solution/legacy_actions/data.json b/x-pack/test/functional/es_archives/security_solution/legacy_actions/data.json new file mode 100644 index 0000000000000..25aa371e02144 --- /dev/null +++ b/x-pack/test/functional/es_archives/security_solution/legacy_actions/data.json @@ -0,0 +1,1064 @@ +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "action:c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "source" : { + "action" : { + "actionTypeId" : ".email", + "name" : "test", + "isMissingSecrets" : false, + "config" : { + "hasAuth" : true, + "from" : "a@a.com", + "host" : "gmail", + "port" : 56, + "service" : "other", + "secure" : null + }, + "secrets" : "jCv0fZczCM+rlWXIkI6Qo/ZqasgxPhplokCaNeXJrJlJYjKeCgbZgiLAEue4bpq4GUDohfye8o1BlJCQi+3HJPb2Qp6lhbcvXn+C6wUzxj9ZitwY8ZTDo34e22TX7qHFs/1mVfO4stjZ6X86ufRZttjTNu4qjchfi3Jao7nWbw==" + }, + "type" : "action", + "references" : [ ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "action" : "8.0.0" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:07:27.777Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "action:207fa0e0-c04e-11ec-8a52-4fb92379525a", + "source" : { + "action" : { + "actionTypeId" : ".slack", + "name" : "Slack connector", + "isMissingSecrets" : false, + "config" : { }, + "secrets" : "WTpvAWxAnR1yHdFqQrmGGeOmqGzeIDQnjGexz7F3JdFVEH0CJkPbiyEk9SiiBr1OPZ3s0LWqphjNREjyxSTCTuYTKaEIQ1+mJFQzjIulekMZklQdon7kNh4hOVHW832IX1Lpx9f5cgAPQst2bqJCehz+3BeZOh17Hgrvb/0zzKRCR4cvlhYbOUNUCNR/d6YoEniwUK8pO9xcel9hle7XY6MNfBGiMX8T41O87lvgp9xDjch3LpwqzDjUIFs=" + }, + "type" : "action", + "references" : [ ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "action" : "8.0.0" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:07:27.777Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "alert:9095ee90-b075-11ec-bb3f-1f063f8e06cf", + "source" : { + "alert" : { + "name" : "test w/ no actions", + "tags" : [ + "__internal_rule_id:2297be91-894c-4831-830f-b424a0ec84f0", + "__internal_immutable:false", + "auto_disabled_8.0" + ], + "alertTypeId" : "siem.queryRule", + "consumer" : "siem", + "params" : { + "author" : [ ], + "description" : "a", + "ruleId" : "2297be91-894c-4831-830f-b424a0ec84f0", + "falsePositives" : [ ], + "from" : "now-360s", + "immutable" : false, + "license" : "", + "outputIndex" : "", + "meta" : { + "from" : "1m", + "kibana_siem_app_url" : "https://actions.kb.us-central1.gcp.cloud.es.io:9243/app/security" + }, + "maxSignals" : 100, + "riskScore" : 21, + "riskScoreMapping" : [ ], + "severity" : "low", + "severityMapping" : [ ], + "threat" : [ ], + "to" : "now", + "references" : [ ], + "version" : 1, + "exceptionsList" : [ ], + "type" : "query", + "language" : "kuery", + "index" : [ + "apm-*-transaction*", + "traces-apm*", + "auditbeat-*", + "endgame-*", + "filebeat-*", + "logs-*", + "packetbeat-*", + "winlogbeat-*" + ], + "query" : "*:*", + "filters" : [ ] + }, + "schedule" : { + "interval" : "5m" + }, + "enabled" : true, + "actions" : [ ], + "throttle" : null, + "notifyWhen" : "onActiveAlert", + "apiKeyOwner" : null, + "apiKey" : null, + "createdBy" : "1527796724", + "updatedBy" : "1527796724", + "createdAt" : "2022-03-30T22:05:53.511Z", + "updatedAt" : "2022-03-30T22:05:53.511Z", + "muteAll" : false, + "mutedInstanceIds" : [ ], + "executionStatus" : { + "status" : "ok", + "lastExecutionDate" : "2022-03-31T19:53:37.507Z", + "error" : null, + "lastDuration" : 2377 + }, + "meta" : { + "versionApiKeyLastmodified" : "7.15.2" + }, + "scheduledTaskId" : null, + "legacyId" : "9095ee90-b075-11ec-bb3f-1f063f8e06cf" + }, + "type" : "alert", + "references" : [ ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "alert" : "8.0.1" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-31T19:53:39.885Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "alert:dc6595f0-b075-11ec-bb3f-1f063f8e06cf", + "source" : { + "alert" : { + "name" : "test w/ action - every rule run", + "tags" : [ + "__internal_rule_id:72a0d429-363b-4f70-905e-c6019a224d40", + "__internal_immutable:false", + "auto_disabled_8.0" + ], + "alertTypeId" : "siem.queryRule", + "consumer" : "siem", + "params" : { + "author" : [ ], + "description" : "a", + "ruleId" : "72a0d429-363b-4f70-905e-c6019a224d40", + "falsePositives" : [ ], + "from" : "now-360s", + "immutable" : false, + "license" : "", + "outputIndex" : "", + "meta" : { + "from" : "1m", + "kibana_siem_app_url" : "https://actions.kb.us-central1.gcp.cloud.es.io:9243/app/security" + }, + "maxSignals" : 100, + "riskScore" : 21, + "riskScoreMapping" : [ ], + "severity" : "low", + "severityMapping" : [ ], + "threat" : [ ], + "to" : "now", + "references" : [ ], + "version" : 1, + "exceptionsList" : [ ], + "type" : "query", + "language" : "kuery", + "index" : [ + "apm-*-transaction*", + "traces-apm*", + "auditbeat-*", + "endgame-*", + "filebeat-*", + "logs-*", + "packetbeat-*", + "winlogbeat-*" + ], + "query" : "*:* ", + "filters" : [ ] + }, + "schedule" : { + "interval" : "5m" + }, + "enabled" : true, + "actions" : [ + { + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts", + "to" : [ + "test@test.com" + ], + "subject" : "Test Actions" + }, + "actionTypeId" : ".email", + "actionRef" : "action_0" + } + ], + "throttle" : null, + "notifyWhen" : "onActiveAlert", + "apiKeyOwner" : null, + "apiKey" : null, + "createdBy" : "1527796724", + "updatedBy" : "1527796724", + "createdAt" : "2022-03-30T22:08:00.172Z", + "updatedAt" : "2022-03-30T22:08:00.172Z", + "muteAll" : false, + "mutedInstanceIds" : [ ], + "executionStatus" : { + "status" : "ok", + "lastExecutionDate" : "2022-03-31T19:55:43.502Z", + "error" : null, + "lastDuration" : 2700 + }, + "meta" : { + "versionApiKeyLastmodified" : "7.15.2" + }, + "scheduledTaskId" : null, + "legacyId" : "dc6595f0-b075-11ec-bb3f-1f063f8e06cf" + }, + "type" : "alert", + "references" : [ + { + "id" : "c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "name" : "action_0", + "type" : "action" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "alert" : "8.0.1" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-31T19:55:46.202Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "alert:064e3160-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "alert" : { + "name" : "test w/ action - every hour", + "tags" : [ + "__internal_rule_id:4c056b05-75ac-4209-be32-82100f771eb4", + "__internal_immutable:false", + "auto_disabled_8.0" + ], + "alertTypeId" : "siem.queryRule", + "consumer" : "siem", + "params" : { + "author" : [ ], + "description" : "a", + "ruleId" : "4c056b05-75ac-4209-be32-82100f771eb4", + "falsePositives" : [ ], + "from" : "now-360s", + "immutable" : false, + "license" : "", + "outputIndex" : "", + "meta" : { + "from" : "1m", + "kibana_siem_app_url" : "https://actions.kb.us-central1.gcp.cloud.es.io:9243/app/security" + }, + "maxSignals" : 100, + "riskScore" : 21, + "riskScoreMapping" : [ ], + "severity" : "low", + "severityMapping" : [ ], + "threat" : [ ], + "to" : "now", + "references" : [ ], + "version" : 1, + "exceptionsList" : [ ], + "type" : "query", + "language" : "kuery", + "index" : [ + "apm-*-transaction*", + "traces-apm*", + "auditbeat-*", + "endgame-*", + "filebeat-*", + "logs-*", + "packetbeat-*", + "winlogbeat-*" + ], + "query" : "*:*", + "filters" : [ ] + }, + "schedule" : { + "interval" : "5m" + }, + "enabled" : true, + "actions" : [ ], + "throttle" : null, + "notifyWhen" : "onActiveAlert", + "apiKeyOwner" : null, + "apiKey" : null, + "createdBy" : "1527796724", + "updatedBy" : "1527796724", + "createdAt" : "2022-03-30T22:09:10.261Z", + "updatedAt" : "2022-03-30T22:09:10.261Z", + "muteAll" : false, + "mutedInstanceIds" : [ ], + "executionStatus" : { + "status" : "ok", + "lastExecutionDate" : "2022-03-31T19:56:43.499Z", + "error" : null, + "lastDuration" : 2815 + }, + "meta" : { + "versionApiKeyLastmodified" : "7.15.2" + }, + "scheduledTaskId" : null, + "legacyId" : "064e3160-b076-11ec-bb3f-1f063f8e06cf" + }, + "type" : "alert", + "references" : [ ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "alert" : "8.0.1" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-31T19:56:46.314Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "alert:27639570-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "alert" : { + "name" : "test w/ action - daily", + "tags" : [ + "__internal_rule_id:8e2c8550-f13f-4e21-be0c-92148d71a5f1", + "__internal_immutable:false", + "auto_disabled_8.0" + ], + "alertTypeId" : "siem.queryRule", + "consumer" : "siem", + "params" : { + "author" : [ ], + "description" : "a", + "ruleId" : "8e2c8550-f13f-4e21-be0c-92148d71a5f1", + "falsePositives" : [ ], + "from" : "now-360s", + "immutable" : false, + "license" : "", + "outputIndex" : "", + "meta" : { + "from" : "1m", + "kibana_siem_app_url" : "https://actions.kb.us-central1.gcp.cloud.es.io:9243/app/security" + }, + "maxSignals" : 100, + "riskScore" : 21, + "riskScoreMapping" : [ ], + "severity" : "low", + "severityMapping" : [ ], + "threat" : [ ], + "to" : "now", + "references" : [ ], + "version" : 1, + "exceptionsList" : [ ], + "type" : "query", + "language" : "kuery", + "index" : [ + "apm-*-transaction*", + "traces-apm*", + "auditbeat-*", + "endgame-*", + "filebeat-*", + "logs-*", + "packetbeat-*", + "winlogbeat-*" + ], + "query" : "*:*", + "filters" : [ ] + }, + "schedule" : { + "interval" : "5m" + }, + "enabled" : true, + "actions" : [ ], + "throttle" : null, + "notifyWhen" : "onActiveAlert", + "apiKeyOwner" : null, + "apiKey" : null, + "createdBy" : "1527796724", + "updatedBy" : "1527796724", + "createdAt" : "2022-03-30T22:10:06.358Z", + "updatedAt" : "2022-03-30T22:10:06.358Z", + "muteAll" : false, + "mutedInstanceIds" : [ ], + "executionStatus" : { + "status" : "ok", + "lastExecutionDate" : "2022-03-31T19:58:13.480Z", + "error" : null, + "lastDuration" : 3023 + }, + "meta" : { + "versionApiKeyLastmodified" : "7.15.2" + }, + "scheduledTaskId" : null, + "legacyId" : "27639570-b076-11ec-bb3f-1f063f8e06cf" + }, + "type" : "alert", + "references" : [ ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "alert" : "8.0.1" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-31T19:58:16.503Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "alert:61ec7a40-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "alert" : { + "name" : "test w/ actions - weekly", + "tags" : [ + "__internal_rule_id:05fbdd2a-e802-420b-bdc3-95ae0acca454", + "__internal_immutable:false", + "auto_disabled_8.0" + ], + "alertTypeId" : "siem.queryRule", + "consumer" : "siem", + "params" : { + "author" : [ ], + "description" : "a", + "ruleId" : "05fbdd2a-e802-420b-bdc3-95ae0acca454", + "falsePositives" : [ ], + "from" : "now-360s", + "immutable" : false, + "license" : "", + "outputIndex" : "", + "meta" : { + "from" : "1m", + "kibana_siem_app_url" : "https://actions.kb.us-central1.gcp.cloud.es.io:9243/app/security" + }, + "maxSignals" : 100, + "riskScore" : 21, + "riskScoreMapping" : [ ], + "severity" : "low", + "severityMapping" : [ ], + "threat" : [ ], + "to" : "now", + "references" : [ ], + "version" : 1, + "exceptionsList" : [ ], + "type" : "query", + "language" : "kuery", + "index" : [ + "apm-*-transaction*", + "traces-apm*", + "auditbeat-*", + "endgame-*", + "filebeat-*", + "logs-*", + "packetbeat-*", + "winlogbeat-*" + ], + "query" : "*:*", + "filters" : [ ] + }, + "schedule" : { + "interval" : "5m" + }, + "enabled" : true, + "actions" : [ ], + "throttle" : null, + "notifyWhen" : "onActiveAlert", + "apiKeyOwner" : null, + "apiKey" : null, + "createdBy" : "1527796724", + "updatedBy" : "1527796724", + "createdAt" : "2022-03-30T22:11:44.516Z", + "updatedAt" : "2022-03-30T22:11:44.516Z", + "muteAll" : false, + "mutedInstanceIds" : [ ], + "executionStatus" : { + "status" : "ok", + "lastExecutionDate" : "2022-03-31T19:54:22.442Z", + "error" : null, + "lastDuration" : 2612 + }, + "meta" : { + "versionApiKeyLastmodified" : "7.15.2" + }, + "scheduledTaskId" : null, + "legacyId" : "61ec7a40-b076-11ec-bb3f-1f063f8e06cf" + }, + "type" : "alert", + "references" : [ ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "alert" : "8.0.1" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-31T19:54:25.054Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "alert:64492ef0-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "alert" : { + "name" : "test w/ actions - weekly", + "tags" : [ + "__internal_rule_alert_id:61ec7a40-b076-11ec-bb3f-1f063f8e06cf" + ], + "alertTypeId" : "siem.notifications", + "consumer" : "siem", + "params" : { + "ruleAlertId" : "61ec7a40-b076-11ec-bb3f-1f063f8e06cf" + }, + "schedule" : { + "interval" : "7d" + }, + "enabled" : true, + "actions" : [ + { + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts", + "to" : [ + "test@test.com" + ], + "subject" : "Test Actions" + }, + "actionTypeId" : ".email", + "actionRef" : "action_0" + } + ], + "throttle" : null, + "notifyWhen" : "onActiveAlert", + "apiKeyOwner" : null, + "apiKey" : null, + "createdBy" : "1527796724", + "updatedBy" : "1527796724", + "createdAt" : "2022-03-30T22:11:48.661Z", + "updatedAt" : "2022-03-30T22:11:48.661Z", + "muteAll" : false, + "mutedInstanceIds" : [ ], + "executionStatus" : { + "status" : "ok", + "lastExecutionDate" : "2022-03-30T22:11:51.640Z", + "error" : null + }, + "meta" : { + "versionApiKeyLastmodified" : "7.15.2" + }, + "scheduledTaskId" : null, + "legacyId" : "64492ef0-b076-11ec-bb3f-1f063f8e06cf" + }, + "type" : "alert", + "references" : [ + { + "id" : "c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "name" : "action_0", + "type" : "action" + }, + { + "id" : "61ec7a40-b076-11ec-bb3f-1f063f8e06cf", + "name" : "param:alert_0", + "type" : "alert" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "alert" : "8.0.1" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:11:51.707Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "alert:d42e8210-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "alert" : { + "name" : "test w/ action - every hour", + "tags" : [ + "__internal_rule_alert_id:064e3160-b076-11ec-bb3f-1f063f8e06cf" + ], + "alertTypeId" : "siem.notifications", + "consumer" : "siem", + "params" : { + "ruleAlertId" : "064e3160-b076-11ec-bb3f-1f063f8e06cf" + }, + "schedule" : { + "interval" : "1h" + }, + "enabled" : true, + "actions" : [ + { + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts", + "to" : [ + "test@test.com" + ], + "subject" : "Rule email" + }, + "actionTypeId" : ".email", + "actionRef" : "action_0" + }, + { + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts" + }, + "actionTypeId" : ".slack", + "actionRef" : "action_1" + } + ], + "throttle" : null, + "notifyWhen" : "onActiveAlert", + "apiKeyOwner" : null, + "apiKey" : null, + "createdBy" : "1527796724", + "updatedBy" : "1527796724", + "createdAt" : "2022-03-30T22:14:56.318Z", + "updatedAt" : "2022-03-30T22:15:12.135Z", + "muteAll" : false, + "mutedInstanceIds" : [ ], + "executionStatus" : { + "status" : "pending", + "lastExecutionDate" : "2022-03-30T22:14:56.318Z", + "error" : null + }, + "meta" : { + "versionApiKeyLastmodified" : "7.15.2" + }, + "legacyId" : "d42e8210-b076-11ec-bb3f-1f063f8e06cf" + }, + "type" : "alert", + "references" : [ + { + "id" : "c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "name" : "action_0", + "type" : "action" + }, + { + "id" : "207fa0e0-c04e-11ec-8a52-4fb92379525a", + "name" : "action_1", + "type" : "action" + }, + { + "id" : "064e3160-b076-11ec-bb3f-1f063f8e06cf", + "name" : "param:alert_0", + "type" : "alert" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "alert" : "8.0.1" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:15:12.135Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "alert:29ba2fa0-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "alert" : { + "name" : "test w/ action - daily", + "tags" : [ + "__internal_rule_alert_id:27639570-b076-11ec-bb3f-1f063f8e06cf" + ], + "alertTypeId" : "siem.notifications", + "consumer" : "siem", + "params" : { + "ruleAlertId" : "27639570-b076-11ec-bb3f-1f063f8e06cf" + }, + "schedule" : { + "interval" : "1d" + }, + "enabled" : true, + "actions" : [ + { + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts", + "to" : [ + "test@test.com" + ], + "subject" : "Test Actions" + }, + "actionTypeId" : ".email", + "actionRef" : "action_0" + } + ], + "throttle" : null, + "notifyWhen" : "onActiveAlert", + "apiKeyOwner" : null, + "apiKey" : null, + "createdBy" : "1527796724", + "updatedBy" : "1527796724", + "createdAt" : "2022-03-30T22:10:10.435Z", + "updatedAt" : "2022-03-30T22:10:10.435Z", + "muteAll" : false, + "mutedInstanceIds" : [ ], + "executionStatus" : { + "status" : "ok", + "lastExecutionDate" : "2022-04-01T22:10:15.478Z", + "error" : null, + "lastDuration" : 984 + }, + "meta" : { + "versionApiKeyLastmodified" : "7.15.2" + }, + "scheduledTaskId" : null, + "legacyId" : "29ba2fa0-b076-11ec-bb3f-1f063f8e06cf", + "monitoring" : { + "execution" : { + "history" : [ + { + "duration" : 111, + "success" : true, + "timestamp" : 1648764614215 + }, + { + "duration" : 984, + "success" : true, + "timestamp" : 1648851016462 + } + ], + "calculated_metrics" : { + "p99" : 984, + "success_ratio" : 1, + "p50" : 547.5, + "p95" : 984 + } + } + } + }, + "type" : "alert", + "references" : [ + { + "id" : "c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "name" : "action_0", + "type" : "action" + }, + { + "id" : "27639570-b076-11ec-bb3f-1f063f8e06cf", + "name" : "param:alert_0", + "type" : "alert" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "alert" : "8.0.1" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-04-01T22:10:16.467Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "siem-detection-engine-rule-actions:926668d0-b075-11ec-bb3f-1f063f8e06cf", + "source" : { + "siem-detection-engine-rule-actions" : { + "actions" : [ ], + "ruleThrottle" : "no_actions", + "alertThrottle" : null + }, + "type" : "siem-detection-engine-rule-actions", + "references" : [ + { + "id" : "9095ee90-b075-11ec-bb3f-1f063f8e06cf", + "type" : "alert", + "name" : "alert_0" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "siem-detection-engine-rule-actions" : "8.0.0" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:05:55.563Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "siem-detection-engine-rule-actions:dde13970-b075-11ec-bb3f-1f063f8e06cf", + "source" : { + "siem-detection-engine-rule-actions" : { + "actions" : [ + { + "actionRef" : "action_0", + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts", + "to" : [ + "test@test.com" + ], + "subject" : "Test Actions" + }, + "action_type_id" : ".email" + } + ], + "ruleThrottle" : "rule", + "alertThrottle" : null + }, + "type" : "siem-detection-engine-rule-actions", + "references" : [ + { + "id" : "dc6595f0-b075-11ec-bb3f-1f063f8e06cf", + "type" : "alert", + "name" : "alert_0" + }, + { + "id" : "c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "type" : "action", + "name" : "action_0" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "siem-detection-engine-rule-actions" : "8.0.0" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:08:02.207Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "siem-detection-engine-rule-actions:07aa8d10-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "siem-detection-engine-rule-actions" : { + "actions" : [ + { + "actionRef" : "action_0", + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts", + "to" : [ + "test@test.com" + ], + "subject" : "Rule email" + }, + "action_type_id" : ".email" + }, + { + "actionRef" : "action_1", + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts" + }, + "action_type_id" : ".slack" + } + ], + "ruleThrottle" : "1h", + "alertThrottle" : "1h" + }, + "type" : "siem-detection-engine-rule-actions", + "references" : [ + { + "id" : "064e3160-b076-11ec-bb3f-1f063f8e06cf", + "type" : "alert", + "name" : "alert_0" + }, + { + "id" : "c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "type" : "action", + "name" : "action_0" + }, + { + "id" : "207fa0e0-c04e-11ec-8a52-4fb92379525a", + "type" : "action", + "name" : "action_1" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "siem-detection-engine-rule-actions" : "8.0.0" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:09:12.300Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "siem-detection-engine-rule-actions:291ae260-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "siem-detection-engine-rule-actions" : { + "actions" : [ + { + "actionRef" : "action_0", + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts", + "to" : [ + "test@test.com" + ], + "subject" : "Test Actions" + }, + "action_type_id" : ".email" + } + ], + "ruleThrottle" : "1d", + "alertThrottle" : "1d" + }, + "type" : "siem-detection-engine-rule-actions", + "references" : [ + { + "id" : "27639570-b076-11ec-bb3f-1f063f8e06cf", + "type" : "alert", + "name" : "alert_0" + }, + { + "id" : "c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "type" : "action", + "name" : "action_0" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "siem-detection-engine-rule-actions" : "8.0.0" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:10:08.399Z" + } + } +} + +{ + "type": "doc", + "value": { + "index" : ".kibana", + "id" : "siem-detection-engine-rule-actions:63aa2fd0-b076-11ec-bb3f-1f063f8e06cf", + "source" : { + "siem-detection-engine-rule-actions" : { + "actions" : [ + { + "actionRef" : "action_0", + "group" : "default", + "params" : { + "message" : "Rule {{context.rule.name}} generated {{state.signals_count}} alerts", + "to" : [ + "test@test.com" + ], + "subject" : "Test Actions" + }, + "action_type_id" : ".email" + } + ], + "ruleThrottle" : "7d", + "alertThrottle" : "7d" + }, + "type" : "siem-detection-engine-rule-actions", + "references" : [ + { + "id" : "61ec7a40-b076-11ec-bb3f-1f063f8e06cf", + "type" : "alert", + "name" : "alert_0" + }, + { + "id" : "c95cb100-b075-11ec-bb3f-1f063f8e06cf", + "type" : "action", + "name" : "action_0" + } + ], + "namespaces" : [ + "default" + ], + "migrationVersion" : { + "siem-detection-engine-rule-actions" : "8.0.0" + }, + "coreMigrationVersion" : "8.1.2", + "updated_at" : "2022-03-30T22:11:46.643Z" + } + } +} diff --git a/x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json b/x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json new file mode 100644 index 0000000000000..f677d7624692c --- /dev/null +++ b/x-pack/test/functional/fixtures/kbn_archiver/cases/8.3.0/all_cases_metrics.json @@ -0,0 +1,182 @@ +{ + "attributes": { + "closed_at": "2022-04-29T13:24:44.448Z", + "closed_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "connector": { + "fields": [], + "name": "none", + "type": ".none" + }, + "created_at": "2022-04-28T13:24:24.011Z", + "created_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "description": "test mttr", + "duration": 20, + "external_service": null, + "owner": "securitySolutionFixture", + "settings": { + "syncAlerts": true + }, + "status": "closed", + "tags": [], + "title": "test mttr", + "updated_at": "2022-04-29T13:24:44.448Z", + "updated_by": { + "email": null, + "full_name": null, + "username": "elastic" + } + }, + "coreMigrationVersion": "8.3.0", + "id": "af948570-c7bf-11ec-9771-d5eef9232089", + "migrationVersion": { + "cases": "8.3.0" + }, + "references": [], + "type": "cases", + "updated_at": "2022-04-29T13:24:44.449Z", + "version": "WzE0NjgsMV0=" +} + +{ + "attributes": { + "closed_at": "2022-04-30T13:32:00.448Z", + "closed_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "connector": { + "fields": [], + "name": "none", + "type": ".none" + }, + "created_at": "2022-04-30T13:24:00.011Z", + "created_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "description": "test mttr", + "duration": 480, + "external_service": null, + "owner": "securitySolutionFixture", + "settings": { + "syncAlerts": true + }, + "status": "closed", + "tags": [], + "title": "test mttr", + "updated_at": "2022-04-29T13:24:44.448Z", + "updated_by": { + "email": null, + "full_name": null, + "username": "elastic" + } + }, + "coreMigrationVersion": "8.3.0", + "id": "bf948570-c7bf-11ec-9771-d5eef9232089", + "migrationVersion": { + "cases": "8.3.0" + }, + "references": [], + "type": "cases", + "updated_at": "2022-04-29T13:24:44.449Z", + "version": "WzE0NjgsMV0=" +} + +{ + "attributes": { + "closed_at": "2022-04-29T13:32:00.448Z", + "closed_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "connector": { + "fields": [], + "name": "none", + "type": ".none" + }, + "created_at": "2022-04-29T13:24:00.011Z", + "created_by": { + "email": null, + "full_name": null, + "username": "elastic" + }, + "description": "test mttr", + "duration": 160, + "external_service": null, + "owner": "observabilityFixture", + "settings": { + "syncAlerts": true + }, + "status": "closed", + "tags": [], + "title": "test mttr", + "updated_at": "2022-04-29T13:24:44.448Z", + "updated_by": { + "email": null, + "full_name": null, + "username": "elastic" + } + }, + "coreMigrationVersion": "8.3.0", + "id": "cf948570-c7bf-11ec-9771-d5eef9232089", + "migrationVersion": { + "cases": "8.3.0" + }, + "references": [], + "type": "cases", + "updated_at": "2022-04-29T13:24:44.449Z", + "version": "WzE0NjgsMV0=" +} + +{ + "attributes": { + "closed_at": null, + "closed_by": null, + "connector": { + "fields": null, + "name": "none", + "type": ".none" + }, + "created_at": "2022-03-20T10:16:56.252Z", + "created_by": { + "email": "", + "full_name": "", + "username": "elastic" + }, + "description": "test 2", + "external_service": null, + "owner": "securitySolutionFixture", + "settings": { + "syncAlerts": false + }, + "status": "open", + "tags": [], + "title": "stack", + "updated_at": "2022-03-29T10:33:09.754Z", + "updated_by": { + "email": "", + "full_name": "", + "username": "elastic" + } + }, + "coreMigrationVersion": "8.3.0", + "id": "df948570-c7bf-11ec-9771-d5eef9232089", + "migrationVersion": { + "cases": "8.3.0" + }, + "references": [], + "type": "cases", + "updated_at": "2022-04-29T13:24:44.449Z", + "version": "WzE0NjgsMV0=" +} diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 9751c7185213e..d38264150cfa5 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -655,7 +655,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont }, async editDimensionLabel(label: string) { - await testSubjects.setValue('indexPattern-label-edit', label, { clearWithKeyboard: true }); + await testSubjects.setValue('column-label-edit', label, { clearWithKeyboard: true }); }, async editDimensionFormat(format: string) { const formatInput = await testSubjects.find('indexPattern-dimension-format'); diff --git a/x-pack/test/functional/services/ml/common_data_grid.ts b/x-pack/test/functional/services/ml/common_data_grid.ts index c48cf92107dab..444b01cce902f 100644 --- a/x-pack/test/functional/services/ml/common_data_grid.ts +++ b/x-pack/test/functional/services/ml/common_data_grid.ts @@ -8,8 +8,8 @@ import expect from '@kbn/expect'; import { chunk } from 'lodash'; import type { ProvidedType } from '@kbn/test'; +import { asyncForEachWithLimit } from '@kbn/std'; import type { FtrProviderContext } from '../../ftr_provider_context'; -import { asyncForEach } from '../../apps/ml/settings/common'; export interface SetValueOptions { clearWithKeyboard?: boolean; @@ -154,7 +154,7 @@ export function MachineLearningCommonDataGridProvider({ getService }: FtrProvide await find.byClassName('euiDataGrid__controlScroll') ).findAllByCssSelector('[role="switch"]'); - await asyncForEach(visibilityToggles, async (toggle) => { + await asyncForEachWithLimit(visibilityToggles, 1, async (toggle) => { const checked = (await toggle.getAttribute('aria-checked')) === 'true'; expect(checked).to.eql( expectedState, diff --git a/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts b/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts index 88ef0fdf08c8d..77f1e34e67157 100644 --- a/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts +++ b/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts @@ -49,6 +49,7 @@ export function MachineLearningDataFrameAnalyticsCreationProvider( const jobTypeAttribute = `mlAnalyticsCreation-${jobType}-option`; await testSubjects.click(jobTypeAttribute); await this.assertJobTypeSelection(jobTypeAttribute); + await headerPage.waitUntilLoadingHasFinished(); }, async assertAdvancedEditorSwitchExists() { @@ -127,29 +128,41 @@ export function MachineLearningDataFrameAnalyticsCreationProvider( await testSubjects.existOrFail('mlAnalyticsCreationDataGridHistogramButton'); }, - async enableSourceDataPreviewHistogramCharts(expectedDefaultButtonState: boolean) { - await this.assertSourceDataPreviewHistogramChartButtonCheckState(expectedDefaultButtonState); - if (expectedDefaultButtonState === false) { + async enableSourceDataPreviewHistogramCharts(shouldBeEnabled: boolean) { + const isEnabled = await this.getSourceDataPreviewHistogramChartButtonCheckState(); + if (isEnabled !== shouldBeEnabled) { await testSubjects.click('mlAnalyticsCreationDataGridHistogramButton'); - await this.assertSourceDataPreviewHistogramChartButtonCheckState(true); + await this.assertSourceDataPreviewHistogramChartEnabled(shouldBeEnabled); } }, - async assertSourceDataPreviewHistogramChartButtonCheckState(expectedCheckState: boolean) { - const actualCheckState = + async assertSourceDataPreviewHistogramChartEnabled(shouldBeEnabled: boolean) { + const isEnabled = await this.getSourceDataPreviewHistogramChartButtonCheckState(); + expect(isEnabled).to.eql( + shouldBeEnabled, + `Source data preview histogram charts should be '${ + shouldBeEnabled ? 'enabled' : 'disabled' + }' (got '${isEnabled ? 'enabled' : 'disabled'}')` + ); + }, + + async getSourceDataPreviewHistogramChartButtonCheckState(): Promise { + return ( (await testSubjects.getAttribute( 'mlAnalyticsCreationDataGridHistogramButton', 'aria-pressed' - )) === 'true'; - expect(actualCheckState).to.eql( - expectedCheckState, - `Chart histogram button check state should be '${expectedCheckState}' (got '${actualCheckState}')` + )) === 'true' ); }, + async scrollSourceDataPreviewIntoView() { + await testSubjects.scrollIntoView('mlAnalyticsCreationDataGrid loaded'); + }, + async assertSourceDataPreviewHistogramCharts( expectedHistogramCharts: Array<{ chartAvailable: boolean; id: string; legend: string }> ) { + await this.scrollSourceDataPreviewIntoView(); // For each chart, get the content of each header cell and assert // the legend text and column id and if the chart should be present or not. await retry.tryForTime(10000, async () => { @@ -178,6 +191,17 @@ export function MachineLearningDataFrameAnalyticsCreationProvider( }); }, + async enableAndAssertSourceDataPreviewHistogramCharts( + expectedHistogramCharts: Array<{ chartAvailable: boolean; id: string; legend: string }> + ) { + await retry.tryForTime(20 * 1000, async () => { + // turn histogram charts off and on before checking + await this.enableSourceDataPreviewHistogramCharts(false); + await this.enableSourceDataPreviewHistogramCharts(true); + await this.assertSourceDataPreviewHistogramCharts(expectedHistogramCharts); + }); + }, + async assertIncludeFieldsSelectionExists() { await testSubjects.existOrFail('mlAnalyticsCreateJobWizardIncludesTable', { timeout: 8000 }); diff --git a/x-pack/test/functional_basic/apps/ml/index.ts b/x-pack/test/functional_basic/apps/ml/index.ts index af2fdc8c45f29..0188aa0361d94 100644 --- a/x-pack/test/functional_basic/apps/ml/index.ts +++ b/x-pack/test/functional_basic/apps/ml/index.ts @@ -12,7 +12,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { const ml = getService('ml'); describe('machine learning basic license', function () { - this.tags(['ciGroup14', 'skipFirefox', 'mlqa']); + this.tags(['skipFirefox', 'mlqa']); before(async () => { await ml.securityCommon.createMlRoles(); diff --git a/x-pack/test/functional_basic/apps/ml/permissions/full_ml_access.ts b/x-pack/test/functional_basic/apps/ml/permissions/full_ml_access.ts index b44c5f08bdbc6..b90b97ca87a57 100644 --- a/x-pack/test/functional_basic/apps/ml/permissions/full_ml_access.ts +++ b/x-pack/test/functional_basic/apps/ml/permissions/full_ml_access.ts @@ -5,8 +5,6 @@ * 2.0. */ -import path from 'path'; - import { FtrProviderContext } from '../../../ftr_provider_context'; import { USER } from '../../../../functional/services/ml/security_common'; @@ -26,18 +24,8 @@ export default function ({ getService }: FtrProviderContext) { const ecIndexPattern = 'ft_module_sample_ecommerce'; const ecExpectedTotalCount = '287'; - const uploadFilePath = path.join( - __dirname, - '..', - '..', - '..', - '..', - 'functional', - 'apps', - 'ml', - 'data_visualizer', - 'files_to_import', - 'artificial_server_log' + const uploadFilePath = require.resolve( + '../../../../functional/apps/ml/data_visualizer/files_to_import/artificial_server_log' ); const expectedUploadFileTitle = 'artificial_server_log'; diff --git a/x-pack/test/functional_basic/apps/ml/permissions/read_ml_access.ts b/x-pack/test/functional_basic/apps/ml/permissions/read_ml_access.ts index c1b13d6dc1f11..fc293defceb86 100644 --- a/x-pack/test/functional_basic/apps/ml/permissions/read_ml_access.ts +++ b/x-pack/test/functional_basic/apps/ml/permissions/read_ml_access.ts @@ -5,8 +5,6 @@ * 2.0. */ -import path from 'path'; - import { FtrProviderContext } from '../../../ftr_provider_context'; import { USER } from '../../../../functional/services/ml/security_common'; @@ -26,18 +24,8 @@ export default function ({ getService }: FtrProviderContext) { const ecIndexPattern = 'ft_module_sample_ecommerce'; const ecExpectedTotalCount = '287'; - const uploadFilePath = path.join( - __dirname, - '..', - '..', - '..', - '..', - 'functional', - 'apps', - 'ml', - 'data_visualizer', - 'files_to_import', - 'artificial_server_log' + const uploadFilePath = require.resolve( + '../../../../functional/apps/ml/data_visualizer/files_to_import/artificial_server_log' ); const expectedUploadFileTitle = 'artificial_server_log'; diff --git a/x-pack/test/functional_basic/config.ts b/x-pack/test/functional_basic/config.ts index e1dac88436e4c..f35ece0ce5d16 100644 --- a/x-pack/test/functional_basic/config.ts +++ b/x-pack/test/functional_basic/config.ts @@ -8,7 +8,9 @@ import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); return { // default to the xpack functional config diff --git a/x-pack/test/functional_cors/config.ts b/x-pack/test/functional_cors/config.ts index 738285b4ff40f..364be1383ae94 100644 --- a/x-pack/test/functional_cors/config.ts +++ b/x-pack/test/functional_cors/config.ts @@ -16,7 +16,9 @@ const pluginPort = process.env.TEST_CORS_SERVER_PORT : 5699; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const kibanaFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const kibanaFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); const corsTestPlugin = Path.resolve(__dirname, './plugins/kibana_cors_test'); diff --git a/x-pack/test/functional_cors/tests/index.ts b/x-pack/test/functional_cors/tests/index.ts index 424dac86c4f1a..3ca455eccd339 100644 --- a/x-pack/test/functional_cors/tests/index.ts +++ b/x-pack/test/functional_cors/tests/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Kibana cors', function () { - this.tags('ciGroup12'); loadTestFile(require.resolve('./cors')); }); } diff --git a/x-pack/test/functional_embedded/config.ts b/x-pack/test/functional_embedded/config.ts index 868d53ee17ee9..cdbbffea0eab9 100644 --- a/x-pack/test/functional_embedded/config.ts +++ b/x-pack/test/functional_embedded/config.ts @@ -12,7 +12,9 @@ import { FtrConfigProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const kibanaFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const kibanaFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); const iframeEmbeddedPlugin = resolve(__dirname, './plugins/iframe_embedded'); diff --git a/x-pack/test/functional_embedded/tests/index.ts b/x-pack/test/functional_embedded/tests/index.ts index aa210aff19728..1c3f01febd6d4 100644 --- a/x-pack/test/functional_embedded/tests/index.ts +++ b/x-pack/test/functional_embedded/tests/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Kibana embedded', function () { - this.tags('ciGroup2'); loadTestFile(require.resolve('./iframe_embedded')); }); } diff --git a/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/index.ts b/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/index.ts index 653f0842ef1bb..dda2e20745394 100644 --- a/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/index.ts +++ b/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Enterprise Search', function () { - this.tags('ciGroup10'); - loadTestFile(require.resolve('./app_search/setup_guide')); loadTestFile(require.resolve('./workplace_search/setup_guide')); }); diff --git a/x-pack/test/functional_enterprise_search/base_config.ts b/x-pack/test/functional_enterprise_search/base_config.ts index 2c21ccf5c5c39..8f72e1ebd6503 100644 --- a/x-pack/test/functional_enterprise_search/base_config.ts +++ b/x-pack/test/functional_enterprise_search/base_config.ts @@ -10,7 +10,9 @@ import { pageObjects } from './page_objects'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xPackFunctionalConfig = await readConfigFile(require.resolve('../functional/config')); + const xPackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); return { // default to the xpack functional config diff --git a/x-pack/test/functional_execution_context/config.ts b/x-pack/test/functional_execution_context/config.ts index 6169df6adcef3..caf88769b6a06 100644 --- a/x-pack/test/functional_execution_context/config.ts +++ b/x-pack/test/functional_execution_context/config.ts @@ -12,7 +12,7 @@ import { logFilePath } from './test_utils'; const alertTestPlugin = Path.resolve(__dirname, './fixtures/plugins/alerts'); export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile(require.resolve('../functional/config')); + const functionalConfig = await readConfigFile(require.resolve('../functional/config.base.js')); const servers = { ...functionalConfig.get('servers'), diff --git a/x-pack/test/functional_execution_context/tests/index.ts b/x-pack/test/functional_execution_context/tests/index.ts index c092be9bd8bdb..2c34783a9bae3 100644 --- a/x-pack/test/functional_execution_context/tests/index.ts +++ b/x-pack/test/functional_execution_context/tests/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Execution context', function () { - this.tags('ciGroup1'); loadTestFile(require.resolve('./browser')); loadTestFile(require.resolve('./server')); loadTestFile(require.resolve('./log_correlation')); diff --git a/x-pack/test/functional_synthetics/apps/uptime/index.ts b/x-pack/test/functional_synthetics/apps/uptime/index.ts index 925731c769bfc..64a9da5c30ea3 100644 --- a/x-pack/test/functional_synthetics/apps/uptime/index.ts +++ b/x-pack/test/functional_synthetics/apps/uptime/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile, getService }: FtrProviderContext) => { describe('Uptime app', function () { - this.tags('ciGroup8'); describe('with generated data', () => { loadTestFile(require.resolve('./synthetics_integration')); }); diff --git a/x-pack/test/functional_synthetics/config.js b/x-pack/test/functional_synthetics/config.js index 20488e3c52b2c..f5db09a5d60d9 100644 --- a/x-pack/test/functional_synthetics/config.js +++ b/x-pack/test/functional_synthetics/config.js @@ -28,7 +28,7 @@ export default async function ({ readConfigFile }) { require.resolve('../../../test/common/config.js') ); const kibanaFunctionalConfig = await readConfigFile( - require.resolve('../../../test/functional/config.js') + require.resolve('../../../test/functional/config.base.js') ); // mount the config file for the package registry as well as diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/index.ts b/x-pack/test/functional_with_es_ssl/apps/cases/index.ts index 53d2c2d9767f1..04cceba32c8a7 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/index.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Cases', function () { - this.tags('ciGroup27'); loadTestFile(require.resolve('./create_case_form')); loadTestFile(require.resolve('./view_case')); loadTestFile(require.resolve('./list_view')); diff --git a/x-pack/test/functional_with_es_ssl/apps/discover/index.ts b/x-pack/test/functional_with_es_ssl/apps/discover/index.ts index 708da2f02da74..f876140dbc92a 100644 --- a/x-pack/test/functional_with_es_ssl/apps/discover/index.ts +++ b/x-pack/test/functional_with_es_ssl/apps/discover/index.ts @@ -8,7 +8,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile, getService }: FtrProviderContext) => { describe('Discover alerting', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./search_source_alert')); }); }; diff --git a/x-pack/test/functional_with_es_ssl/apps/ml/alert_flyout.ts b/x-pack/test/functional_with_es_ssl/apps/ml/alert_flyout.ts index 9a486d4983d9c..4676004d9eb89 100644 --- a/x-pack/test/functional_with_es_ssl/apps/ml/alert_flyout.ts +++ b/x-pack/test/functional_with_es_ssl/apps/ml/alert_flyout.ts @@ -68,8 +68,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { let testJobId = ''; describe('anomaly detection alert', function () { - this.tags('ciGroup13'); - before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/ecommerce'); await ml.testResources.createIndexPatternIfNeeded('ft_ecommerce', 'order_date'); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts index 581edecc3d8bc..5f6c4501476bf 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts @@ -14,6 +14,7 @@ import { createFailingAlert, disableAlert, muteAlert, + snoozeAlert, } from '../../lib/alert_api_actions'; import { ObjectRemover } from '../../lib/object_remover'; import { generateUniqueKey } from '../../lib/get_test_data'; @@ -30,7 +31,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('rulesTab'); } - describe('rules list', function () { + // FLAKY: https://github.com/elastic/kibana/issues/131535 + describe.skip('rules list', function () { before(async () => { await pageObjects.common.navigateToApp('triggersActions'); await testSubjects.click('rulesTab'); @@ -462,8 +464,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const refreshResults = await pageObjects.triggersActionsUI.getAlertsListWithStatus(); expect(refreshResults.map((item: any) => item.status).sort()).to.eql(['Error', 'Ok']); }); - await testSubjects.click('ruleStatusFilterButton'); - await testSubjects.click('ruleStatuserrorFilerOption'); // select Error status filter + await testSubjects.click('ruleExecutionStatusFilterButton'); + await testSubjects.click('ruleExecutionStatuserrorFilterOption'); // select Error status filter await retry.try(async () => { const filterErrorOnlyResults = await pageObjects.triggersActionsUI.getAlertsListWithStatus(); @@ -600,5 +602,63 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.missingOrFail('centerJustifiedSpinner'); }); + + it('should filter alerts by the rule status', async () => { + const assertRulesLength = async (length: number) => { + return await retry.try(async () => { + const rules = await pageObjects.triggersActionsUI.getAlertsList(); + expect(rules.length).to.equal(length); + }); + }; + + // Enabled alert + await createAlert({ + supertest, + objectRemover, + }); + const disabledAlert = await createAlert({ + supertest, + objectRemover, + }); + const snoozedAlert = await createAlert({ + supertest, + objectRemover, + }); + + await disableAlert({ + supertest, + alertId: disabledAlert.id, + }); + await snoozeAlert({ + supertest, + alertId: snoozedAlert.id, + }); + + await refreshAlertsList(); + await assertRulesLength(3); + + // Select enabled + await testSubjects.click('ruleStatusFilterButton'); + await testSubjects.click('ruleStatusFilterOption-enabled'); + await assertRulesLength(1); + + // Select disabled + await testSubjects.click('ruleStatusFilterOption-enabled'); + await testSubjects.click('ruleStatusFilterOption-disabled'); + await assertRulesLength(1); + + // Select snoozed + await testSubjects.click('ruleStatusFilterOption-disabled'); + await testSubjects.click('ruleStatusFilterOption-snoozed'); + await assertRulesLength(1); + + // Select disabled and snoozed + await testSubjects.click('ruleStatusFilterOption-disabled'); + await assertRulesLength(2); + + // Select all 3 + await testSubjects.click('ruleStatusFilterOption-enabled'); + await assertRulesLength(3); + }); }); }; diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts index 270232d1aa0fd..73b084c2ce0e4 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ loadTestFile, getService }: FtrProviderContext) => { describe('Actions and Triggers app', function () { - this.tags('ciGroup10'); loadTestFile(require.resolve('./home_page')); loadTestFile(require.resolve('./alerts_list')); loadTestFile(require.resolve('./alert_create_flyout')); @@ -17,6 +16,7 @@ export default ({ loadTestFile, getService }: FtrProviderContext) => { loadTestFile(require.resolve('./connectors')); loadTestFile(require.resolve('./alerts_table')); loadTestFile(require.resolve('./rule_status_dropdown')); + loadTestFile(require.resolve('./rule_status_filter')); loadTestFile(require.resolve('./rule_tag_badge')); }); }; diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rule_status_filter.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rule_status_filter.ts new file mode 100644 index 0000000000000..0afdc932b0289 --- /dev/null +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rule_status_filter.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 expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default ({ getPageObjects, getService }: FtrProviderContext) => { + const testSubjects = getService('testSubjects'); + const PageObjects = getPageObjects(['common', 'triggersActionsUI', 'header']); + const esArchiver = getService('esArchiver'); + + describe('Rule status filter', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/observability/alerts'); + await PageObjects.common.navigateToUrlWithBrowserHistory( + 'triggersActions', + '/__components_sandbox' + ); + }); + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/observability/alerts'); + }); + + it('should load from the shareable lazy loader', async () => { + await testSubjects.find('ruleStatusFilter'); + const exists = await testSubjects.exists('ruleStatusFilter'); + expect(exists).to.be(true); + }); + + it('should allow rule statuses to be filtered', async () => { + const ruleStatusFilter = await testSubjects.find('ruleStatusFilter'); + let badge = await ruleStatusFilter.findByCssSelector('.euiFilterButton__notification'); + expect(await badge.getVisibleText()).to.be('0'); + + await testSubjects.click('ruleStatusFilter'); + await testSubjects.click('ruleStatusFilterOption-enabled'); + + badge = await ruleStatusFilter.findByCssSelector('.euiFilterButton__notification'); + expect(await badge.getVisibleText()).to.be('1'); + + await testSubjects.click('ruleStatusFilterOption-disabled'); + + badge = await ruleStatusFilter.findByCssSelector('.euiFilterButton__notification'); + expect(await badge.getVisibleText()).to.be('2'); + + await testSubjects.click('ruleStatusFilterOption-enabled'); + expect(await badge.getVisibleText()).to.be('1'); + }); + }); +}; diff --git a/x-pack/test/functional_with_es_ssl/apps/uptime/index.ts b/x-pack/test/functional_with_es_ssl/apps/uptime/index.ts index d2078267bde85..2c39ef045972f 100644 --- a/x-pack/test/functional_with_es_ssl/apps/uptime/index.ts +++ b/x-pack/test/functional_with_es_ssl/apps/uptime/index.ts @@ -14,8 +14,6 @@ export default ({ getService, loadTestFile }: FtrProviderContext) => { const kibanaServer = getService('kibanaServer'); describe('Uptime app', function () { - this.tags('ciGroup6'); - describe('with real-world data', () => { before(async () => { await esArchiver.load(ARCHIVE); diff --git a/x-pack/test/functional_with_es_ssl/config.ts b/x-pack/test/functional_with_es_ssl/config.ts index 5243b97898578..4872d2fd6fa38 100644 --- a/x-pack/test/functional_with_es_ssl/config.ts +++ b/x-pack/test/functional_with_es_ssl/config.ts @@ -31,7 +31,9 @@ const enabledActionTypes = [ ]; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); const servers = { ...xpackFunctionalConfig.get('servers'), @@ -74,6 +76,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { `--xpack.trigger_actions_ui.enableExperimental=${JSON.stringify([ 'internalAlertsTable', 'internalShareableComponentsSandbox', + 'ruleStatusFilter', ])}`, `--xpack.alerting.rules.minimumScheduleInterval.value="2s"`, `--xpack.actions.enabledActionTypes=${JSON.stringify(enabledActionTypes)}`, diff --git a/x-pack/test/functional_with_es_ssl/lib/alert_api_actions.ts b/x-pack/test/functional_with_es_ssl/lib/alert_api_actions.ts index 40e567c299826..ab15d4b2ec3f4 100644 --- a/x-pack/test/functional_with_es_ssl/lib/alert_api_actions.ts +++ b/x-pack/test/functional_with_es_ssl/lib/alert_api_actions.ts @@ -8,6 +8,8 @@ import type { ObjectRemover } from './object_remover'; import { getTestAlertData, getTestActionData } from './get_test_data'; +const FUTURE_SNOOZE_TIME = '9999-12-31T06:00:00.000Z'; + export async function createAlertManualCleanup({ supertest, overwrites = {}, @@ -85,3 +87,14 @@ export async function disableAlert({ supertest, alertId }: { supertest: any; ale .set('kbn-xsrf', 'foo'); return alert; } + +export async function snoozeAlert({ supertest, alertId }: { supertest: any; alertId: string }) { + const { body: alert } = await supertest + .post(`/internal/alerting/rule/${alertId}/_snooze`) + .set('kbn-xsrf', 'foo') + .set('content-type', 'application/json') + .send({ + snooze_end_time: FUTURE_SNOOZE_TIME, + }); + return alert; +} diff --git a/x-pack/test/licensing_plugin/config.ts b/x-pack/test/licensing_plugin/config.ts index 155d761020b29..c4b197c10a824 100644 --- a/x-pack/test/licensing_plugin/config.ts +++ b/x-pack/test/licensing_plugin/config.ts @@ -11,7 +11,9 @@ import { services, pageObjects } from './services'; const license = 'basic'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalTestsConfig = await readConfigFile(require.resolve('../functional/config.js')); + const functionalTestsConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); const servers = { ...functionalTestsConfig.get('servers'), diff --git a/x-pack/test/licensing_plugin/public/index.ts b/x-pack/test/licensing_plugin/public/index.ts index 194db6266b510..904b9eaecd757 100644 --- a/x-pack/test/licensing_plugin/public/index.ts +++ b/x-pack/test/licensing_plugin/public/index.ts @@ -10,7 +10,6 @@ import { FtrProviderContext } from '../services'; // eslint-disable-next-line import/no-default-export export default function ({ loadTestFile }: FtrProviderContext) { describe('Licensing plugin public client', function () { - this.tags('ciGroup5'); loadTestFile(require.resolve('./feature_usage')); // MUST BE LAST! CHANGES LICENSE TYPE! loadTestFile(require.resolve('./updates')); diff --git a/x-pack/test/licensing_plugin/server/index.ts b/x-pack/test/licensing_plugin/server/index.ts index 619d29a4a2fd2..28426eba962b8 100644 --- a/x-pack/test/licensing_plugin/server/index.ts +++ b/x-pack/test/licensing_plugin/server/index.ts @@ -10,7 +10,6 @@ import { FtrProviderContext } from '../services'; // eslint-disable-next-line import/no-default-export export default function ({ loadTestFile }: FtrProviderContext) { describe('Licensing plugin server client', function () { - this.tags('ciGroup13'); loadTestFile(require.resolve('./info')); loadTestFile(require.resolve('./header')); diff --git a/x-pack/test/lists_api_integration/security_and_spaces/tests/index.ts b/x-pack/test/lists_api_integration/security_and_spaces/tests/index.ts index c28447ef0ac18..95cce7e7fb85f 100644 --- a/x-pack/test/lists_api_integration/security_and_spaces/tests/index.ts +++ b/x-pack/test/lists_api_integration/security_and_spaces/tests/index.ts @@ -10,8 +10,6 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default ({ loadTestFile }: FtrProviderContext): void => { describe('lists api security and spaces enabled', function () { - this.tags('ciGroup1'); - loadTestFile(require.resolve('./create_lists')); loadTestFile(require.resolve('./create_list_items')); loadTestFile(require.resolve('./read_lists')); diff --git a/x-pack/test/load/config.ts b/x-pack/test/load/config.ts index 2d20806f3e9e8..dcaa2031c9c02 100644 --- a/x-pack/test/load/config.ts +++ b/x-pack/test/load/config.ts @@ -21,7 +21,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('../functional/config.js') + require.resolve('../functional/config.base.js') ); return { diff --git a/x-pack/test/observability_api_integration/basic/tests/index.ts b/x-pack/test/observability_api_integration/basic/tests/index.ts index c62cf4be0d7c7..a1ea41e2b7c36 100644 --- a/x-pack/test/observability_api_integration/basic/tests/index.ts +++ b/x-pack/test/observability_api_integration/basic/tests/index.ts @@ -10,7 +10,6 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function observabilityApiIntegrationTests({ loadTestFile }: FtrProviderContext) { describe('Observability specs (basic)', function () { - this.tags('ciGroup1'); loadTestFile(require.resolve('./annotations')); }); } diff --git a/x-pack/test/observability_api_integration/trial/tests/index.ts b/x-pack/test/observability_api_integration/trial/tests/index.ts index 037cf48275de2..e426efd90188c 100644 --- a/x-pack/test/observability_api_integration/trial/tests/index.ts +++ b/x-pack/test/observability_api_integration/trial/tests/index.ts @@ -10,7 +10,6 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function apmApiIntegrationTests({ loadTestFile }: FtrProviderContext) { describe('Observability specs (trial)', function () { - this.tags('ciGroup1'); loadTestFile(require.resolve('./annotations')); }); } diff --git a/x-pack/test/observability_functional/apps/observability/index.ts b/x-pack/test/observability_functional/apps/observability/index.ts index 9ec3791aef35f..d60f93f1285ad 100644 --- a/x-pack/test/observability_functional/apps/observability/index.ts +++ b/x-pack/test/observability_functional/apps/observability/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('ObservabilityApp', function () { - this.tags('ciGroup22'); - loadTestFile(require.resolve('./alerts')); loadTestFile(require.resolve('./alerts/add_to_case')); loadTestFile(require.resolve('./alerts/alert_disclaimer')); diff --git a/x-pack/test/observability_functional/with_rac_write.config.ts b/x-pack/test/observability_functional/with_rac_write.config.ts index 71a1de1df6a77..bc5b39358fedb 100644 --- a/x-pack/test/observability_functional/with_rac_write.config.ts +++ b/x-pack/test/observability_functional/with_rac_write.config.ts @@ -27,7 +27,9 @@ const enabledActionTypes = [ ]; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); const servers = { ...xpackFunctionalConfig.get('servers'), diff --git a/x-pack/test/osquery_cypress/config.ts b/x-pack/test/osquery_cypress/config.ts index 2bd39acfa1359..37f7b3f63b36c 100644 --- a/x-pack/test/osquery_cypress/config.ts +++ b/x-pack/test/osquery_cypress/config.ts @@ -14,7 +14,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('../functional/config.js') + require.resolve('../functional/config.base.js') ); return { diff --git a/x-pack/test/performance/config.playwright.ts b/x-pack/test/performance/config.playwright.ts index 9077c58a30e15..44a53d7be80a1 100644 --- a/x-pack/test/performance/config.playwright.ts +++ b/x-pack/test/performance/config.playwright.ts @@ -15,7 +15,7 @@ const APM_SERVER_URL = 'https://kibana-ops-e2e-perf.apm.us-central1.gcp.cloud.es const APM_PUBLIC_TOKEN = 'CTs9y3cvcfq13bQqsB'; export default async function ({ readConfigFile, log }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile(require.resolve('../functional/config')); + const functionalConfig = await readConfigFile(require.resolve('../functional/config.base.js')); const testFiles = [require.resolve('./tests/playwright')]; @@ -63,6 +63,7 @@ export default async function ({ readConfigFile, log }: FtrConfigProviderContext performancePhase: process.env.TEST_PERFORMANCE_PHASE, journeyName: process.env.JOURNEY_NAME, testJobId, + testBuildId, }) .filter(([, v]) => !!v) .reduce((acc, [k, v]) => (acc ? `${acc},${k}=${v}` : `${k}=${v}`), ''), diff --git a/x-pack/test/plugin_api_integration/test_suites/event_log/index.ts b/x-pack/test/plugin_api_integration/test_suites/event_log/index.ts index c29367fb852ab..0901c96f522cc 100644 --- a/x-pack/test/plugin_api_integration/test_suites/event_log/index.ts +++ b/x-pack/test/plugin_api_integration/test_suites/event_log/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('event_log', function taskManagerSuite() { - this.tags('ciGroup6'); loadTestFile(require.resolve('./public_api_integration')); loadTestFile(require.resolve('./service_api_integration')); }); diff --git a/x-pack/test/plugin_api_integration/test_suites/licensed_feature_usage/index.ts b/x-pack/test/plugin_api_integration/test_suites/licensed_feature_usage/index.ts index 7f2a4c12a26eb..6ee46b58c4bcd 100644 --- a/x-pack/test/plugin_api_integration/test_suites/licensed_feature_usage/index.ts +++ b/x-pack/test/plugin_api_integration/test_suites/licensed_feature_usage/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Licensed feature usage APIs', function () { - this.tags('ciGroup13'); loadTestFile(require.resolve('./feature_usage')); }); } diff --git a/x-pack/test/plugin_api_integration/test_suites/platform/index.ts b/x-pack/test/plugin_api_integration/test_suites/platform/index.ts index 46c468e9b6d78..907ebfe6bdf79 100644 --- a/x-pack/test/plugin_api_integration/test_suites/platform/index.ts +++ b/x-pack/test/plugin_api_integration/test_suites/platform/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('platform', function taskManagerSuite() { - this.tags('ciGroup13'); loadTestFile(require.resolve('./elasticsearch_client')); }); } diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/index.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/index.ts index fe494ac33d461..2712069008598 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/index.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('task_manager', function taskManagerSuite() { - this.tags('ciGroup12'); loadTestFile(require.resolve('./health_route')); loadTestFile(require.resolve('./task_management')); loadTestFile(require.resolve('./task_management_scheduled_at')); diff --git a/x-pack/test/plugin_api_perf/README.md b/x-pack/test/plugin_api_perf/README.md index f47a2aeb7878a..2ae7c7d201328 100644 --- a/x-pack/test/plugin_api_perf/README.md +++ b/x-pack/test/plugin_api_perf/README.md @@ -71,7 +71,7 @@ Ideally we can clean this up and make it easier and less hacky in the future, bu 1. You can run the FTS in the main clone of your fork by running `node scripts/functional_tests_server.js --config=test/plugin_api_perf/config.js` in the `x-pack` folder. 1. Once you've began running the default FTS, you want your second FTS to run such that it is referencing the Elasticsearch instance started by that first FTS. You achieve this by exporting a `TEST_ES_URL` Environment variable that points at it. By default, you should be able to run this: `export TEST_ES_URL=http://elastic:changeme@localhost:9220`. Do this in a terminal window opened in your **second** clone of Kibana (in my case, the `./elastic/_kibana` folder). 1. One issue I encountered with FTS is that I can't tell it _not to start its own ES instance at all_. To achieve this, in `packages/kbn-test/src/functional_tests/tasks.js` you need to comment out the line that starts up its own ES (`const es = await runElasticsearch({ config, options: opts });` [line 85] and `await es.cleanup();` shortly after) -1. Next you want each instance of Kibana to run with its own UUID as that is used to identify each Kibana's owned tasks. In the file `x-pack/test/functional/config.js` simple change the uuid on the line `--server.uuid=` into any random UUID. +1. Next you want each instance of Kibana to run with its own UUID as that is used to identify each Kibana's owned tasks. In the file `x-pack/test/functional/config.base.js` simple change the uuid on the line `--server.uuid=` into any random UUID. 1. Now that you've made these changes you can kick off your second Kibana FTS by running ths following in the second clone's `x-pack` folder: `TEST_KIBANA_PORT=5621 node scripts/functional_tests_server.js --config=test/plugin_api_perf/config.js`. This runs Kibana on a different port than the first FTS (`5621` instead of `5620`). 1. With two FTS Kibana running and both pointing at the same Elasticsearch. Now, you can run the actual perf test by running `node scripts/functional_test_runner.js --config=test/plugin_api_perf/config.js` in a third terminal diff --git a/x-pack/test/plugin_api_perf/test_suites/task_manager/index.ts b/x-pack/test/plugin_api_perf/test_suites/task_manager/index.ts index 703c97e4f2c63..9055a2d9e023c 100644 --- a/x-pack/test/plugin_api_perf/test_suites/task_manager/index.ts +++ b/x-pack/test/plugin_api_perf/test_suites/task_manager/index.ts @@ -15,7 +15,6 @@ export default function ({ loadTestFile }: { loadTestFile: (file: string) => voi * worth keeping around for future use, rather than being rewritten time and time again. */ describe.skip('task_manager_perf', function taskManagerSuite() { - this.tags('ciGroup12'); loadTestFile(require.resolve('./task_manager_perf_integration')); }); } diff --git a/x-pack/test/plugin_functional/config.ts b/x-pack/test/plugin_functional/config.ts index 8f3c5be04a8bc..a21b8f406e506 100644 --- a/x-pack/test/plugin_functional/config.ts +++ b/x-pack/test/plugin_functional/config.ts @@ -17,7 +17,9 @@ import { pageObjects } from './page_objects'; // that returns an object with the projects config values export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); // Find all folders in ./plugins since we treat all them as plugin folder const allFiles = fs.readdirSync(resolve(__dirname, 'plugins')); diff --git a/x-pack/test/plugin_functional/test_suites/global_search/index.ts b/x-pack/test/plugin_functional/test_suites/global_search/index.ts index a87d9c5e4d503..651bb2b903924 100644 --- a/x-pack/test/plugin_functional/test_suites/global_search/index.ts +++ b/x-pack/test/plugin_functional/test_suites/global_search/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('GlobalSearch API', function () { - this.tags('ciGroup7'); loadTestFile(require.resolve('./global_search_providers')); loadTestFile(require.resolve('./global_search_bar')); }); diff --git a/x-pack/test/plugin_functional/test_suites/resolver/index.ts b/x-pack/test/plugin_functional/test_suites/resolver/index.ts index 688ba536b1232..3c43683b6bf7a 100644 --- a/x-pack/test/plugin_functional/test_suites/resolver/index.ts +++ b/x-pack/test/plugin_functional/test_suites/resolver/index.ts @@ -29,8 +29,6 @@ export default function ({ // FLAKY: https://github.com/elastic/kibana/issues/87425 describe('Resolver test app', function () { - this.tags('ciGroup7'); - // Note: these tests are intended to run on the same page in serial. before(async function () { await pageObjects.common.navigateToApp('resolverTest'); diff --git a/x-pack/test/plugin_functional/test_suites/timelines/index.ts b/x-pack/test/plugin_functional/test_suites/timelines/index.ts index 2ca8d81132ab3..955966eab12c0 100644 --- a/x-pack/test/plugin_functional/test_suites/timelines/index.ts +++ b/x-pack/test/plugin_functional/test_suites/timelines/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { describe('Timelines plugin API', function () { - this.tags('ciGroup7'); const pageObjects = getPageObjects(['common']); const testSubjects = getService('testSubjects'); 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 4cff15dc9f444..808c813145b84 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 @@ -10,8 +10,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function ({ getService, loadTestFile }: FtrProviderContext) { describe('Reporting APIs', function () { - this.tags('ciGroup2'); - before(async () => { const reportingAPI = getService('reportingAPI'); await reportingAPI.logTaskManagerHealth(); diff --git a/x-pack/test/reporting_api_integration/reporting_without_security/index.ts b/x-pack/test/reporting_api_integration/reporting_without_security/index.ts index 72cfc36947517..19f96aa5d2869 100644 --- a/x-pack/test/reporting_api_integration/reporting_without_security/index.ts +++ b/x-pack/test/reporting_api_integration/reporting_without_security/index.ts @@ -14,7 +14,7 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { const reportingAPI = getService('reportingAPI'); await reportingAPI.logTaskManagerHealth(); }); - this.tags('ciGroup13'); + loadTestFile(require.resolve('./job_apis_csv')); }); } diff --git a/x-pack/test/reporting_functional/reporting_and_deprecated_security/index.ts b/x-pack/test/reporting_functional/reporting_and_deprecated_security/index.ts index 4725cb1eae82e..722b6545115cd 100644 --- a/x-pack/test/reporting_functional/reporting_and_deprecated_security/index.ts +++ b/x-pack/test/reporting_functional/reporting_and_deprecated_security/index.ts @@ -43,8 +43,6 @@ export default function (context: FtrProviderContext) { }; describe('Reporting Functional Tests with Deprecated Security configuration enabled', function () { - this.tags('ciGroup20'); - before(async () => { const reportingAPI = context.getService('reportingAPI'); await reportingAPI.logTaskManagerHealth(); diff --git a/x-pack/test/reporting_functional/reporting_and_security.config.ts b/x-pack/test/reporting_functional/reporting_and_security.config.ts index 3037aeacde033..7d8c3ed696696 100644 --- a/x-pack/test/reporting_functional/reporting_and_security.config.ts +++ b/x-pack/test/reporting_functional/reporting_and_security.config.ts @@ -11,7 +11,7 @@ import { ReportingAPIProvider } from '../reporting_api_integration/services'; import { ReportingFunctionalProvider } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile(require.resolve('../functional/config')); // Reporting API tests need a fully working UI + const functionalConfig = await readConfigFile(require.resolve('../functional/config.base.js')); // Reporting API tests need a fully working UI const apiConfig = await readConfigFile(require.resolve('../api_integration/config')); return { diff --git a/x-pack/test/reporting_functional/reporting_and_security/index.ts b/x-pack/test/reporting_functional/reporting_and_security/index.ts index 4b06eb426389e..ec7afea96f194 100644 --- a/x-pack/test/reporting_functional/reporting_and_security/index.ts +++ b/x-pack/test/reporting_functional/reporting_and_security/index.ts @@ -10,8 +10,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function ({ getService, loadTestFile }: FtrProviderContext) { describe('Reporting Functional Tests with Security enabled', function () { - this.tags('ciGroup20'); - before(async () => { const reportingFunctional = getService('reportingFunctional'); await reportingFunctional.logTaskManagerHealth(); diff --git a/x-pack/test/reporting_functional/reporting_without_security/index.ts b/x-pack/test/reporting_functional/reporting_without_security/index.ts index fecc0e97daac0..cc07e97a9c3a7 100644 --- a/x-pack/test/reporting_functional/reporting_without_security/index.ts +++ b/x-pack/test/reporting_functional/reporting_without_security/index.ts @@ -10,8 +10,6 @@ import { FtrProviderContext } from '../ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('Reporting Functional Tests with Security disabled', function () { - this.tags('ciGroup2'); - before(async () => { const reportingAPI = getService('reportingAPI'); await reportingAPI.logTaskManagerHealth(); 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 index ef06fc80c485c..35461b47f6def 100644 --- 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 @@ -50,7 +50,6 @@ export default ({ getService }: FtrProviderContext) => { 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'; @@ -58,38 +57,7 @@ export default ({ getService }: FtrProviderContext) => { 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'); }); @@ -98,6 +66,32 @@ export default ({ getService }: FtrProviderContext) => { await esArchiver.unload('x-pack/test/functional/es_archives/rule_registry/alerts'); }); + it(`${superUser.username} should reject at route level when 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: 'kibana.alert.rule.name', + order: { + _count: 'desc', + }, + script: { + source: 'SCRIPT', + }, + size: 10000, + }, + }, + }, + index: SECURITY_SOLUTION_ALERT_INDEX, + }); + expect(found.statusCode).to.eql(400); + }); + 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`) @@ -164,6 +158,26 @@ export default ({ getService }: FtrProviderContext) => { expect(found.body.hits.total.value).to.be.above(0); }); + it(`${superUser.username} should allow cardinality aggs 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({ + size: 1, + aggs: { + nbr_consumer: { + cardinality: { + field: 'kibana.alert.rule.consumer', + }, + }, + }, + index: '.alerts*', + }); + expect(found.statusCode).to.eql(200); + expect(found.body.aggregations.nbr_consumer.value).to.be.equal(2); + }); + function addTests({ space, authorizedUsers, unauthorizedUsers, alertId, index }: TestCase) { authorizedUsers.forEach(({ username, password }) => { it(`${username} should finds alerts which match query in ${space}/${index}`, async () => { 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 index 1ba48d5d1aa27..3b30f1b64dc2b 100644 --- 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 @@ -20,17 +20,16 @@ export default ({ getService }: FtrProviderContext) => { const TEST_URL = '/internal/rac/alerts'; const ALERTS_INDEX_URL = `${TEST_URL}/index`; const SPACE1 = 'space1'; - 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, 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 getAPMIndexName = async (user: User, space: string, expectedStatusCode: number = 200) => { + const resp = await supertestWithoutAuth + .get(`${getSpaceUrlPrefix(space)}${ALERTS_INDEX_URL}?features=apm`) + .auth(user.username, user.password) + .set('kbn-xsrf', 'true') + .expect(expectedStatusCode); + return resp.body.index_name as string[]; }; const getSecuritySolutionIndexName = async ( @@ -38,13 +37,13 @@ export default ({ getService }: FtrProviderContext) => { 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; + const resp = await supertestWithoutAuth + .get(`${getSpaceUrlPrefix(space)}${ALERTS_INDEX_URL}?features=siem`) + .auth(user.username, user.password) + .set('kbn-xsrf', 'true') + .expect(expectedStatusCode); + + return resp.body.index_name as string[]; }; describe('Alert - Get Index - RBAC - spaces', () => { @@ -54,31 +53,22 @@ export default ({ getService }: FtrProviderContext) => { 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 + expect(indexNames.includes(`${APM_ALERT_INDEX}-${SPACE1}`)).to.eql(true); // 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 + expect(indexNames.includes(`${APM_ALERT_INDEX}-${SPACE1}`)).to.eql(true); // 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); + expect(indexNames?.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 + expect(indexNames.includes(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`)).to.eql(true); // 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 229f31375200a..d010cbfce9150 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 @@ -11,9 +11,6 @@ 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 () { - // Fastest ciGroup for the moment. - this.tags('ciGroup5'); - before(async () => { await createSpacesAndUsers(getService); }); @@ -27,8 +24,9 @@ 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')); + + loadTestFile(require.resolve('./get_alerts_index')); + loadTestFile(require.resolve('./find_alerts')); loadTestFile(require.resolve('./search_strategy')); }); }; diff --git a/x-pack/test/rule_registry/security_and_spaces/tests/basic/search_strategy.ts b/x-pack/test/rule_registry/security_and_spaces/tests/basic/search_strategy.ts index 27dfd7a9c9a90..dfda18b5a0c05 100644 --- a/x-pack/test/rule_registry/security_and_spaces/tests/basic/search_strategy.ts +++ b/x-pack/test/rule_registry/security_and_spaces/tests/basic/search_strategy.ts @@ -19,7 +19,7 @@ import { waitForSignalsToBePresent, waitForRuleSuccessOrStatus, } from '../../../../detection_engine_api_integration/utils'; -import { ID } from '../../../../detection_engine_api_integration/security_and_spaces/tests/generating_signals'; +import { ID } from '../../../../detection_engine_api_integration/security_and_spaces/group1/generating_signals'; import { obsOnlySpacesAllEsRead, obsOnlySpacesAll, @@ -43,7 +43,7 @@ export default ({ getService }: FtrProviderContext) => { const SPACE1 = 'space1'; // Failing: See https://github.com/elastic/kibana/issues/129219 - describe.skip('ruleRegistryAlertsSearchStrategy', () => { + describe('ruleRegistryAlertsSearchStrategy', () => { let kibanaVersion: string; before(async () => { kibanaVersion = await kbnClient.version.get(); 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 3e13d64b936a4..53a788f6c7829 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 @@ -39,9 +39,6 @@ import { export default ({ loadTestFile, getService }: FtrProviderContext): void => { // 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'); - before(async () => { await createSpaces(getService); await createUsersAndRoles( diff --git a/x-pack/test/rule_registry/spaces_only/tests/basic/index.ts b/x-pack/test/rule_registry/spaces_only/tests/basic/index.ts index aeb2b085ad379..f47b4b6254ff2 100644 --- a/x-pack/test/rule_registry/spaces_only/tests/basic/index.ts +++ b/x-pack/test/rule_registry/spaces_only/tests/basic/index.ts @@ -11,9 +11,6 @@ import { createSpaces, deleteSpaces } from '../../../common/lib/authentication'; // eslint-disable-next-line import/no-default-export export default ({ loadTestFile, getService }: FtrProviderContext): void => { describe('rule registry spaces only: trial', function () { - // Fastest ciGroup for the moment. - this.tags('ciGroup5'); - before(async () => { await createSpaces(getService); }); 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 a9969fd3bfd52..d248858f19f6d 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 @@ -31,10 +31,9 @@ export default ({ getService }: FtrProviderContext) => { .get(`${getSpaceUrlPrefix(SPACE1)}${ALERTS_INDEX_URL}`) .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 + expect( + indexNames?.index_name?.filter((indexName) => indexName.startsWith(APM_ALERT_INDEX)).length + ).to.eql(1); // assert this here so we can use constants in the dynamically-defined test cases below }; const getSecuritySolutionIndexName = async (user: User) => { @@ -43,10 +42,11 @@ export default ({ getService }: FtrProviderContext) => { .get(`${getSpaceUrlPrefix(SPACE1)}${ALERTS_INDEX_URL}`) .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 + expect( + indexNames?.index_name?.filter((indexName) => + indexName.startsWith(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`) + ).length + ).to.eql(1); // 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/index.ts b/x-pack/test/rule_registry/spaces_only/tests/trial/index.ts index 19e35019eb50a..d519dd16dab45 100644 --- a/x-pack/test/rule_registry/spaces_only/tests/trial/index.ts +++ b/x-pack/test/rule_registry/spaces_only/tests/trial/index.ts @@ -11,9 +11,6 @@ import { createSpaces, deleteSpaces } from '../../../common/lib/authentication'; // eslint-disable-next-line import/no-default-export export default ({ loadTestFile, getService }: FtrProviderContext): void => { describe('rule registry spaces only: trial', function () { - // Fastest ciGroup for the moment. - this.tags('ciGroup5'); - before(async () => { await createSpaces(getService); }); 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 5b5bc64a5a9bd..31c3cfdecb9ee 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 @@ -31,10 +31,9 @@ export default ({ getService }: FtrProviderContext) => { .get(`${getSpaceUrlPrefix(SPACE1)}${ALERTS_INDEX_URL}`) .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 + expect( + indexNames?.index_name?.filter((indexName) => indexName.startsWith(APM_ALERT_INDEX)).length + ).to.eql(1); // assert this here so we can use constants in the dynamically-defined test cases below }; const getSecuritySolutionIndexName = async (user: User) => { @@ -43,10 +42,11 @@ export default ({ getService }: FtrProviderContext) => { .get(`${getSpaceUrlPrefix(SPACE1)}${ALERTS_INDEX_URL}`) .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 + expect( + indexNames?.index_name?.filter((indexName) => + indexName.startsWith(`${SECURITY_SOLUTION_ALERT_INDEX}-${SPACE1}`) + ).length + ).to.eql(1); // 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/config.ts b/x-pack/test/saved_object_api_integration/common/config.ts index 8ca74c7fcea49..32d2d73d5cebc 100644 --- a/x-pack/test/saved_object_api_integration/common/config.ts +++ b/x-pack/test/saved_object_api_integration/common/config.ts @@ -24,7 +24,9 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) const config = { kibana: { api: await readConfigFile(path.resolve(REPO_ROOT, 'test/api_integration/config.js')), - functional: await readConfigFile(require.resolve('../../../../test/functional/config.js')), + functional: await readConfigFile( + require.resolve('../../../../test/functional/config.base.js') + ), }, xpack: { api: await readConfigFile(require.resolve('../../api_integration/config.ts')), diff --git a/x-pack/test/saved_object_api_integration/security_and_spaces/apis/index.ts b/x-pack/test/saved_object_api_integration/security_and_spaces/apis/index.ts index 740b9d91927bf..4eb0b90480314 100644 --- a/x-pack/test/saved_object_api_integration/security_and_spaces/apis/index.ts +++ b/x-pack/test/saved_object_api_integration/security_and_spaces/apis/index.ts @@ -13,8 +13,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { const supertest = getService('supertest'); describe('saved objects security and spaces enabled', function () { - this.tags('ciGroup20'); - before(async () => { await createUsersAndRoles(es, supertest); }); diff --git a/x-pack/test/saved_object_api_integration/spaces_only/apis/index.ts b/x-pack/test/saved_object_api_integration/spaces_only/apis/index.ts index c6bdbde07fc02..1be7ed754a971 100644 --- a/x-pack/test/saved_object_api_integration/spaces_only/apis/index.ts +++ b/x-pack/test/saved_object_api_integration/spaces_only/apis/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('saved objects spaces only enabled', function () { - this.tags('ciGroup5'); - loadTestFile(require.resolve('./bulk_create')); loadTestFile(require.resolve('./bulk_get')); loadTestFile(require.resolve('./bulk_resolve')); diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/index.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/index.ts index 54740e73aba65..f28b3cd615887 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/index.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/index.ts @@ -11,8 +11,6 @@ import { createUsersAndRoles } from '../../../common/lib'; // eslint-disable-next-line import/no-default-export export default function ({ getService, loadTestFile }: FtrProviderContext) { describe('saved objects tagging API - security and spaces integration', function () { - this.tags('ciGroup10'); - before(async () => { await createUsersAndRoles(getService); }); diff --git a/x-pack/test/saved_object_tagging/api_integration/tagging_api/apis/index.ts b/x-pack/test/saved_object_tagging/api_integration/tagging_api/apis/index.ts index 3d5b0b9c3b989..f291d2537ed02 100644 --- a/x-pack/test/saved_object_tagging/api_integration/tagging_api/apis/index.ts +++ b/x-pack/test/saved_object_tagging/api_integration/tagging_api/apis/index.ts @@ -10,8 +10,6 @@ import { FtrProviderContext } from '../services'; // eslint-disable-next-line import/no-default-export export default function ({ loadTestFile }: FtrProviderContext) { describe('saved objects tagging API', function () { - this.tags('ciGroup12'); - loadTestFile(require.resolve('./delete')); loadTestFile(require.resolve('./create')); loadTestFile(require.resolve('./update')); diff --git a/x-pack/test/saved_object_tagging/functional/config.ts b/x-pack/test/saved_object_tagging/functional/config.ts index 6ad1f05e2be5b..1c40864f2fa02 100644 --- a/x-pack/test/saved_object_tagging/functional/config.ts +++ b/x-pack/test/saved_object_tagging/functional/config.ts @@ -11,7 +11,7 @@ import { services, pageObjects } from './ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default async function ({ readConfigFile }: FtrConfigProviderContext) { const kibanaFunctionalConfig = await readConfigFile( - require.resolve('../../functional/config.js') + require.resolve('../../functional/config.base.js') ); return { diff --git a/x-pack/test/saved_object_tagging/functional/tests/index.ts b/x-pack/test/saved_object_tagging/functional/tests/index.ts index fbf0954382dd1..2d79d0a7a45ec 100644 --- a/x-pack/test/saved_object_tagging/functional/tests/index.ts +++ b/x-pack/test/saved_object_tagging/functional/tests/index.ts @@ -11,8 +11,6 @@ import { createUsersAndRoles } from '../../common/lib'; // eslint-disable-next-line import/no-default-export export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('saved objects tagging - functional tests', function () { - this.tags('ciGroup14'); - before(async () => { await createUsersAndRoles(getService); }); diff --git a/x-pack/test/saved_objects_field_count/config.ts b/x-pack/test/saved_objects_field_count/config.ts index 7967b6c4f3b9c..ab5154adb8d59 100644 --- a/x-pack/test/saved_objects_field_count/config.ts +++ b/x-pack/test/saved_objects_field_count/config.ts @@ -6,7 +6,6 @@ */ import { FtrConfigProviderContext } from '@kbn/test'; -import { testRunner } from './runner'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const kibanaCommonTestsConfig = await readConfigFile( @@ -16,7 +15,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { return { ...kibanaCommonTestsConfig.getAll(), - testRunner, + testFiles: [require.resolve('./test')], esTestCluster: { license: 'trial', @@ -28,5 +27,9 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ...kibanaCommonTestsConfig.get('kbnTestServer'), serverArgs: [...kibanaCommonTestsConfig.get('kbnTestServer.serverArgs')], }, + + junit: { + reportName: 'Saved Object Field Count', + }, }; } diff --git a/x-pack/test/saved_objects_field_count/runner.ts b/x-pack/test/saved_objects_field_count/runner.ts deleted file mode 100644 index b88f2129ba64d..0000000000000 --- a/x-pack/test/saved_objects_field_count/runner.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 { CiStatsReporter } from '@kbn/ci-stats-reporter'; -import { FtrProviderContext } from '../functional/ftr_provider_context'; - -const IGNORED_FIELDS = [ - // The following fields are returned by the _field_caps API but aren't counted - // towards the index field limit. - '_seq_no', - '_id', - '_version', - '_field_names', - '_ignored', - '_feature', - '_index', - '_routing', - '_source', - '_type', - '_nested_path', - '_timestamp', - // migrationVersion is dynamic so will be anywhere between 1..type count - // depending on which objects are present in the index when querying the - // field caps API. See https://github.com/elastic/kibana/issues/70815 - 'migrationVersion', -]; - -export async function testRunner({ getService }: FtrProviderContext) { - const log = getService('log'); - const es = getService('es'); - - const reporter = CiStatsReporter.fromEnv(log); - - log.debug('Saved Objects field count metrics starting'); - - const { fields } = await es.fieldCaps({ - index: '.kibana', - fields: '*', - }); - - const fieldCountPerTypeMap: Map = Object.keys(fields) - .map((f) => f.split('.')[0]) - .filter((f) => !IGNORED_FIELDS.includes(f)) - .reduce((accumulator, f) => { - accumulator.set(f, accumulator.get(f) + 1 || 1); - return accumulator; - }, new Map()); - - const metrics = Array.from(fieldCountPerTypeMap.entries()) - .sort((a, b) => a[0].localeCompare(b[0])) - .map(([fieldType, count]) => ({ - group: 'Saved Objects .kibana field count', - id: fieldType, - value: count, - })); - - log.debug( - 'Saved Objects field count metrics:\n', - metrics.map(({ id, value }) => `${id}:${value}`).join('\n') - ); - await reporter.metrics(metrics); - log.debug('Saved Objects field count metrics done'); -} diff --git a/x-pack/test/saved_objects_field_count/test.ts b/x-pack/test/saved_objects_field_count/test.ts new file mode 100644 index 0000000000000..e931b1aa5ef26 --- /dev/null +++ b/x-pack/test/saved_objects_field_count/test.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; +import { FtrProviderContext } from '../functional/ftr_provider_context'; + +const IGNORED_FIELDS = [ + // The following fields are returned by the _field_caps API but aren't counted + // towards the index field limit. + '_seq_no', + '_id', + '_version', + '_field_names', + '_ignored', + '_feature', + '_index', + '_routing', + '_source', + '_type', + '_nested_path', + '_timestamp', + // migrationVersion is dynamic so will be anywhere between 1..type count + // depending on which objects are present in the index when querying the + // field caps API. See https://github.com/elastic/kibana/issues/70815 + 'migrationVersion', +]; + +// eslint-disable-next-line import/no-default-export +export default function ({ getService }: FtrProviderContext) { + const log = getService('log'); + const es = getService('es'); + + describe('Saved Objects Field Count', () => { + it('capture', async () => { + const reporter = CiStatsReporter.fromEnv(log); + + log.debug('Saved Objects field count metrics starting'); + + const { fields } = await es.fieldCaps({ + index: '.kibana', + fields: '*', + }); + + const fieldCountPerTypeMap: Map = Object.keys(fields) + .map((f) => f.split('.')[0]) + .filter((f) => !IGNORED_FIELDS.includes(f)) + .reduce((accumulator, f) => { + accumulator.set(f, accumulator.get(f) + 1 || 1); + return accumulator; + }, new Map()); + + const metrics = Array.from(fieldCountPerTypeMap.entries()) + .sort((a, b) => a[0].localeCompare(b[0])) + .map(([fieldType, count]) => ({ + group: 'Saved Objects .kibana field count', + id: fieldType, + value: count, + })); + + log.debug( + 'Saved Objects field count metrics:\n', + metrics.map(({ id, value }) => `${id}:${value}`).join('\n') + ); + + await reporter.metrics(metrics); + log.debug('Saved Objects field count metrics done'); + }); + }); +} diff --git a/x-pack/test/screenshot_creation/config.ts b/x-pack/test/screenshot_creation/config.ts index 659034e9fbe8b..18dda361ac2cd 100644 --- a/x-pack/test/screenshot_creation/config.ts +++ b/x-pack/test/screenshot_creation/config.ts @@ -9,7 +9,9 @@ import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); return { // default to the xpack functional config diff --git a/x-pack/test/search_sessions_integration/config.ts b/x-pack/test/search_sessions_integration/config.ts index 9dc542038a48a..2d570a607c746 100644 --- a/x-pack/test/search_sessions_integration/config.ts +++ b/x-pack/test/search_sessions_integration/config.ts @@ -10,7 +10,9 @@ import { FtrConfigProviderContext } from '@kbn/test'; import { services } from '../functional/services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); return { // default to the xpack functional config diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts index b87f43f73ed2e..9465de1de5922 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts @@ -14,8 +14,6 @@ export default function ({ loadTestFile, getService, getPageObjects }: FtrProvid const searchSessions = getService('searchSessions'); describe('Dashboard', function () { - this.tags('ciGroup5'); - before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await esArchiver.load('x-pack/test/functional/es_archives/dashboard/async_search'); diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/index.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/index.ts index 6a13dc268b705..1ff11eb988456 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/index.ts @@ -13,8 +13,6 @@ export default function ({ loadTestFile, getService, getPageObjects }: FtrProvid const PageObjects = getPageObjects(['common']); describe('Search session sharing', function () { - this.tags('ciGroup5'); - before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); diff --git a/x-pack/test/search_sessions_integration/tests/apps/discover/index.ts b/x-pack/test/search_sessions_integration/tests/apps/discover/index.ts index 1f8d219674428..2af94730ff918 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/discover/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/discover/index.ts @@ -14,8 +14,6 @@ export default function ({ loadTestFile, getService, getPageObjects }: FtrProvid const searchSessions = getService('searchSessions'); describe('Discover', function () { - this.tags('ciGroup5'); - before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); diff --git a/x-pack/test/search_sessions_integration/tests/apps/lens/index.ts b/x-pack/test/search_sessions_integration/tests/apps/lens/index.ts index 5e45db7bd7233..978c5bdec0df5 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/lens/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/lens/index.ts @@ -12,8 +12,6 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); describe('lens search sessions', function () { - this.tags('ciGroup5'); - before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); diff --git a/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/index.ts b/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/index.ts index b72d8db06a1d8..60e4ea1b3bfbb 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/index.ts @@ -12,8 +12,6 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); describe('search sessions management', function () { - this.tags('ciGroup5'); - before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await esArchiver.load('x-pack/test/functional/es_archives/dashboard/async_search'); diff --git a/x-pack/test/security_api_integration/tests/anonymous/index.ts b/x-pack/test/security_api_integration/tests/anonymous/index.ts index 08f075950a57f..0f976589483a8 100644 --- a/x-pack/test/security_api_integration/tests/anonymous/index.ts +++ b/x-pack/test/security_api_integration/tests/anonymous/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - Anonymous access', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./login')); loadTestFile(require.resolve('./capabilities')); }); diff --git a/x-pack/test/security_api_integration/tests/audit/index.ts b/x-pack/test/security_api_integration/tests/audit/index.ts index 14628bbc51e89..96b2ceb5ae3a7 100644 --- a/x-pack/test/security_api_integration/tests/audit/index.ts +++ b/x-pack/test/security_api_integration/tests/audit/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - Audit Log', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./audit_log')); }); } diff --git a/x-pack/test/security_api_integration/tests/http_bearer/index.ts b/x-pack/test/security_api_integration/tests/http_bearer/index.ts index 4dbad2660ebaa..c796c0be9befb 100644 --- a/x-pack/test/security_api_integration/tests/http_bearer/index.ts +++ b/x-pack/test/security_api_integration/tests/http_bearer/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - HTTP Bearer', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./header')); }); } diff --git a/x-pack/test/security_api_integration/tests/http_no_auth_providers/index.ts b/x-pack/test/security_api_integration/tests/http_no_auth_providers/index.ts index 652bcc419e243..23096b2449c9f 100644 --- a/x-pack/test/security_api_integration/tests/http_no_auth_providers/index.ts +++ b/x-pack/test/security_api_integration/tests/http_no_auth_providers/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - HTTP no authentication providers are enabled', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./authentication')); }); } diff --git a/x-pack/test/security_api_integration/tests/kerberos/index.ts b/x-pack/test/security_api_integration/tests/kerberos/index.ts index cec92939a5194..828ce7220458f 100644 --- a/x-pack/test/security_api_integration/tests/kerberos/index.ts +++ b/x-pack/test/security_api_integration/tests/kerberos/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - Kerberos', function () { - this.tags('ciGroup31'); - loadTestFile(require.resolve('./kerberos_login')); }); } diff --git a/x-pack/test/security_api_integration/tests/login_selector/index.ts b/x-pack/test/security_api_integration/tests/login_selector/index.ts index a38a0acc68cca..e3698340d3967 100644 --- a/x-pack/test/security_api_integration/tests/login_selector/index.ts +++ b/x-pack/test/security_api_integration/tests/login_selector/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - Login Selector', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./basic_functionality')); }); } diff --git a/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/index.ts b/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/index.ts index 858b8e2fbb750..2c8edc1569bd2 100644 --- a/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/index.ts +++ b/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - OIDC (Authorization Code Flow)', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./oidc_auth')); }); } diff --git a/x-pack/test/security_api_integration/tests/oidc/implicit_flow/index.ts b/x-pack/test/security_api_integration/tests/oidc/implicit_flow/index.ts index c42014661b915..7479ba8e7bd81 100644 --- a/x-pack/test/security_api_integration/tests/oidc/implicit_flow/index.ts +++ b/x-pack/test/security_api_integration/tests/oidc/implicit_flow/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - OIDC (Implicit Flow)', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./oidc_auth')); }); } diff --git a/x-pack/test/security_api_integration/tests/pki/index.ts b/x-pack/test/security_api_integration/tests/pki/index.ts index c3b733d0b31f8..9926f16619898 100644 --- a/x-pack/test/security_api_integration/tests/pki/index.ts +++ b/x-pack/test/security_api_integration/tests/pki/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - PKI', function () { - this.tags('ciGroup22'); - loadTestFile(require.resolve('./pki_auth')); }); } diff --git a/x-pack/test/security_api_integration/tests/saml/index.ts b/x-pack/test/security_api_integration/tests/saml/index.ts index e7ffdbd410de3..3597f1a6104ec 100644 --- a/x-pack/test/security_api_integration/tests/saml/index.ts +++ b/x-pack/test/security_api_integration/tests/saml/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - SAML', function () { - this.tags('ciGroup27'); - loadTestFile(require.resolve('./saml_login')); }); } diff --git a/x-pack/test/security_api_integration/tests/session_idle/index.ts b/x-pack/test/security_api_integration/tests/session_idle/index.ts index 76457ee7ad0c7..6966b9f2ed2c7 100644 --- a/x-pack/test/security_api_integration/tests/session_idle/index.ts +++ b/x-pack/test/security_api_integration/tests/session_idle/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - Session Idle', function () { - this.tags('ciGroup18'); - loadTestFile(require.resolve('./cleanup')); loadTestFile(require.resolve('./extension')); }); diff --git a/x-pack/test/security_api_integration/tests/session_invalidate/index.ts b/x-pack/test/security_api_integration/tests/session_invalidate/index.ts index 6408e4cfbd43d..dcfb3d7fc5259 100644 --- a/x-pack/test/security_api_integration/tests/session_invalidate/index.ts +++ b/x-pack/test/security_api_integration/tests/session_invalidate/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - Session Invalidate', function () { - this.tags('ciGroup6'); - loadTestFile(require.resolve('./invalidate')); }); } diff --git a/x-pack/test/security_api_integration/tests/session_lifespan/index.ts b/x-pack/test/security_api_integration/tests/session_lifespan/index.ts index 15522da907958..e297805b4ab3c 100644 --- a/x-pack/test/security_api_integration/tests/session_lifespan/index.ts +++ b/x-pack/test/security_api_integration/tests/session_lifespan/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - Session Lifespan', function () { - this.tags('ciGroup6'); - loadTestFile(require.resolve('./cleanup')); }); } diff --git a/x-pack/test/security_api_integration/tests/token/index.ts b/x-pack/test/security_api_integration/tests/token/index.ts index 88c82125ee1d9..54717dc1c8617 100644 --- a/x-pack/test/security_api_integration/tests/token/index.ts +++ b/x-pack/test/security_api_integration/tests/token/index.ts @@ -9,7 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security APIs - Token', function () { - this.tags('ciGroup6'); loadTestFile(require.resolve('./login')); loadTestFile(require.resolve('./logout')); loadTestFile(require.resolve('./header')); diff --git a/x-pack/test/security_functional/login_selector.config.ts b/x-pack/test/security_functional/login_selector.config.ts index aa145e2ec6216..d2035a9b228e8 100644 --- a/x-pack/test/security_functional/login_selector.config.ts +++ b/x-pack/test/security_functional/login_selector.config.ts @@ -17,7 +17,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const kibanaFunctionalConfig = await readConfigFile( - require.resolve('../../../test/functional/config.js') + require.resolve('../../../test/functional/config.base.js') ); const kibanaPort = kibanaFunctionalConfig.get('servers.kibana.port'); diff --git a/x-pack/test/security_functional/oidc.config.ts b/x-pack/test/security_functional/oidc.config.ts index 9c00960671e03..6476bbb501b77 100644 --- a/x-pack/test/security_functional/oidc.config.ts +++ b/x-pack/test/security_functional/oidc.config.ts @@ -17,7 +17,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const kibanaFunctionalConfig = await readConfigFile( - require.resolve('../../../test/functional/config.js') + require.resolve('../../../test/functional/config.base.js') ); const kibanaPort = kibanaFunctionalConfig.get('servers.kibana.port'); diff --git a/x-pack/test/security_functional/saml.config.ts b/x-pack/test/security_functional/saml.config.ts index 264197c961123..60a934a712bbf 100644 --- a/x-pack/test/security_functional/saml.config.ts +++ b/x-pack/test/security_functional/saml.config.ts @@ -17,7 +17,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const kibanaFunctionalConfig = await readConfigFile( - require.resolve('../../../test/functional/config.js') + require.resolve('../../../test/functional/config.base.js') ); const kibanaPort = kibanaFunctionalConfig.get('servers.kibana.port'); diff --git a/x-pack/test/security_functional/tests/login_selector/index.ts b/x-pack/test/security_functional/tests/login_selector/index.ts index 1a34fc5eac6d9..bf3cc557f0bd7 100644 --- a/x-pack/test/security_functional/tests/login_selector/index.ts +++ b/x-pack/test/security_functional/tests/login_selector/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security app - login selector', function () { - this.tags('ciGroup13'); - loadTestFile(require.resolve('./basic_functionality')); loadTestFile(require.resolve('./auth_provider_hint')); }); diff --git a/x-pack/test/security_functional/tests/oidc/index.ts b/x-pack/test/security_functional/tests/oidc/index.ts index cd328384febd3..37490a0193089 100644 --- a/x-pack/test/security_functional/tests/oidc/index.ts +++ b/x-pack/test/security_functional/tests/oidc/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security app - OIDC interactions', function () { - this.tags('ciGroup13'); - loadTestFile(require.resolve('./url_capture')); }); } diff --git a/x-pack/test/security_functional/tests/saml/index.ts b/x-pack/test/security_functional/tests/saml/index.ts index 66a497db8af40..ebf97ebf8edfb 100644 --- a/x-pack/test/security_functional/tests/saml/index.ts +++ b/x-pack/test/security_functional/tests/saml/index.ts @@ -9,8 +9,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('security app - SAML interactions', function () { - this.tags('ciGroup13'); - loadTestFile(require.resolve('./url_capture')); }); } diff --git a/x-pack/test/security_solution_cypress/config.firefox.ts b/x-pack/test/security_solution_cypress/config.firefox.ts index 2a2ce410850ff..c29f47708a170 100644 --- a/x-pack/test/security_solution_cypress/config.firefox.ts +++ b/x-pack/test/security_solution_cypress/config.firefox.ts @@ -16,7 +16,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('../functional/config.js') + require.resolve('../functional/config.base.js') ); return { diff --git a/x-pack/test/security_solution_cypress/config.ts b/x-pack/test/security_solution_cypress/config.ts index 7f196880e8fca..4b5b2c361c1b9 100644 --- a/x-pack/test/security_solution_cypress/config.ts +++ b/x-pack/test/security_solution_cypress/config.ts @@ -14,7 +14,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../../../test/common/config.js') ); const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('../functional/config.js') + require.resolve('../functional/config.base.js') ); return { diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts index 368783b0efd1c..0168a15f21b6e 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts @@ -34,29 +34,29 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { 'Last active', 'Actions', ], - ['Host-9fafsc3tqe', 'x', 'x', 'Warning', 'Windows', '10.231.117.28', '7.17.12', 'x', ''], [ 'Host-ku5jy6j0pw', 'x', 'x', - 'Warning', + 'Unsupported', 'Windows', - '10.246.87.11, 10.145.117.106,10.109.242.136', + '10.12.215.130, 10.130.188.228,10.19.102.141', '7.0.13', 'x', '', ], [ - 'Host-o07wj6uaa5', + 'Host-ntr4rkj24m', 'x', 'x', - 'Failure', + 'Success', 'Windows', - '10.82.134.220, 10.47.25.170', - '7.11.13', + '10.36.46.252, 10.222.152.110', + '7.4.13', 'x', '', ], + ['Host-q9qenwrl9k', 'x', 'x', 'Warning', 'Windows', '10.206.226.90', '7.11.10', 'x', ''], ]; const formattedTableData = async () => { @@ -82,7 +82,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await deleteAllDocsFromMetadataUnitedIndex(getService); await pageObjects.endpoint.navigateToEndpointList(); }); - it('finds no data in list and prompts onboarding to add policy', async () => { await testSubjects.exists('emptyPolicyTable'); }); @@ -99,7 +98,9 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { after(async () => { await deleteAllDocsFromMetadataCurrentIndex(getService); await deleteAllDocsFromMetadataUnitedIndex(getService); - await endpointTestResources.unloadEndpointData(indexedData); + if (indexedData) { + await endpointTestResources.unloadEndpointData(indexedData); + } }); it('finds page title', async () => { @@ -209,9 +210,9 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { 'Host-ku5jy6j0pw', 'x', 'x', - 'Warning', + 'Unsupported', 'Windows', - '10.246.87.11, 10.145.117.106,10.109.242.136', + '10.12.215.130, 10.130.188.228,10.19.102.141', '7.0.13', 'x', '', diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts index e57895f4f32b7..f74bd3b91cfce 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts @@ -16,7 +16,6 @@ export default function (providerContext: FtrProviderContext) { const { loadTestFile, getService } = providerContext; describe('endpoint', function () { - this.tags('ciGroup7'); const ingestManager = getService('ingestManager'); const log = getService('log'); const endpointTestResources = getService('endpointTestResources'); @@ -36,6 +35,7 @@ export default function (providerContext: FtrProviderContext) { await endpointTestResources.installOrUpgradeEndpointFleetPackage(); }); loadTestFile(require.resolve('./endpoint_list')); + loadTestFile(require.resolve('./policy_list')); loadTestFile(require.resolve('./policy_details')); loadTestFile(require.resolve('./endpoint_telemetry')); loadTestFile(require.resolve('./trusted_apps_list')); diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts index 9bf6a19b4a589..c95afc743c839 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts @@ -331,6 +331,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should show event filters card and link should go back to policy', async () => { await testSubjects.existOrFail('eventFilters-fleet-integration-card'); + const eventFiltersCard = await testSubjects.find('eventFilters-fleet-integration-card'); + await pageObjects.ingestManagerCreatePackagePolicy.scrollToCenterOfWindow(eventFiltersCard); await (await testSubjects.find('eventFilters-link-to-exceptions')).click(); await testSubjects.existOrFail('policyDetailsPage'); await (await testSubjects.find('policyDetailsBackLink')).click(); diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_list.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_list.ts new file mode 100644 index 0000000000000..840c36a558ba0 --- /dev/null +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_list.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 expect from '@kbn/expect'; +import { IndexedHostsAndAlertsResponse } from '@kbn/security-solution-plugin/common/endpoint/index_data'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { PolicyTestResourceInfo } from '../../services/endpoint_policy'; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const browser = getService('browser'); + const pageObjects = getPageObjects([ + 'common', + 'endpoint', + 'policy', + 'endpointPageUtils', + 'ingestManagerCreatePackagePolicy', + 'trustedApps', + ]); + const testSubjects = getService('testSubjects'); + const policyTestResources = getService('policyTestResources'); + const endpointTestResources = getService('endpointTestResources'); + + describe('When on the Endpoint Policy List Page', () => { + before(async () => { + const endpointPackage = await policyTestResources.getEndpointPackage(); + await endpointTestResources.setMetadataTransformFrequency('1s', endpointPackage.version); + await browser.refresh(); + }); + + describe('with no policies', () => { + it('shows the empty page', async () => { + await pageObjects.policy.navigateToPolicyList(); + await testSubjects.existOrFail('emptyPolicyTable'); + }); + it('navigates to Fleet and ensures the integration page is loaded correctly', async () => { + const fleetButton = await testSubjects.find('onboardingStartButton'); + await fleetButton.click(); + await testSubjects.existOrFail('createPackagePolicy_pageTitle'); + expect(await testSubjects.getVisibleText('createPackagePolicy_pageTitle')).to.equal( + 'Add Endpoint Security integration' + ); + }); + it('navigates back to the policy list page', async () => { + const cancelButton = await testSubjects.find('createPackagePolicy_cancelBackLink'); + cancelButton.click(); + await pageObjects.policy.ensureIsOnListPage(); + }); + }); + describe('with policies', () => { + let indexedData: IndexedHostsAndAlertsResponse; + let policyInfo: PolicyTestResourceInfo; + before(async () => { + indexedData = await endpointTestResources.loadEndpointData(); + policyInfo = await policyTestResources.createPolicy(); + await browser.refresh(); + }); + after(async () => { + if (indexedData) { + await endpointTestResources.unloadEndpointData(indexedData); + } + if (policyInfo) { + await policyInfo.cleanup(); + } + }); + it('shows the policy list table', async () => { + await pageObjects.policy.navigateToPolicyList(); + await testSubjects.existOrFail('policyListTable'); + }); + it('navigates to the policy details page when the policy name is clicked and returns back to the policy list page using the header back button', async () => { + const policyName = (await testSubjects.findAll('policyNameCellLink'))[0]; + await policyName.click(); + await pageObjects.policy.ensureIsOnDetailsPage(); + const backButton = await testSubjects.find('policyDetailsBackLink'); + await backButton.click(); + await pageObjects.policy.ensureIsOnListPage(); + }); + // FLAKY: https://github.com/elastic/kibana/issues/131602 + describe.skip('when the endpoint count link is clicked', () => { + it('navigates to the endpoint list page filtered by policy', async () => { + const endpointCount = (await testSubjects.findAll('policyEndpointCountLink'))[0]; + await endpointCount.click(); + await pageObjects.endpoint.ensureIsOnEndpointListPage(); + }); + it('admin searchbar contains the selected policy id', async () => { + const expectedPolicyId = indexedData.integrationPolicies[0].id; + await pageObjects.endpoint.ensureIsOnEndpointListPage(); + expect(await testSubjects.getVisibleText('adminSearchBar')).to.equal( + `united.endpoint.Endpoint.policy.applied.id : "${expectedPolicyId}"` + ); + }); + it('endpoint table shows the endpoints associated with selected policy', async () => { + const expectedPolicyName = indexedData.integrationPolicies[0].name; + await pageObjects.endpoint.ensureIsOnEndpointListPage(); + const policyName = (await testSubjects.findAll('policyNameCellLink'))[0]; + expect(await policyName.getVisibleText()).to.be.equal( + expectedPolicyName.substring(0, expectedPolicyName.indexOf('-')) + ); + }); + it('returns back to the policy list page when the header back button is clicked', async () => { + await pageObjects.endpoint.ensureIsOnEndpointListPage(); + const backButton = await testSubjects.find('endpointListBackLink'); + await backButton.click(); + await pageObjects.policy.ensureIsOnListPage(); + }); + }); + }); + }); +} diff --git a/x-pack/test/security_solution_endpoint/config.ts b/x-pack/test/security_solution_endpoint/config.ts index b00df7732ea4f..b5b52b7bc5cd5 100644 --- a/x-pack/test/security_solution_endpoint/config.ts +++ b/x-pack/test/security_solution_endpoint/config.ts @@ -15,7 +15,9 @@ import { } from '../security_solution_endpoint_api_int/registry'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); return { ...xpackFunctionalConfig.getAll(), diff --git a/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts b/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts index d4e2479d24bc7..21d7b25cabb34 100644 --- a/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts +++ b/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts @@ -25,6 +25,10 @@ export function EndpointPageProvider({ getService, getPageObjects }: FtrProvider await pageObjects.header.waitUntilLoadingHasFinished(); }, + async ensureIsOnEndpointListPage() { + await testSubjects.existOrFail('endpointPage'); + }, + async waitForTableToHaveData(dataTestSubj: string, timeout = 2000) { await retry.waitForWithTimeout('table to have data', timeout, async () => { const tableData = await pageObjects.endpointPageUtils.tableData(dataTestSubj); diff --git a/x-pack/test/security_solution_endpoint/page_objects/policy_page.ts b/x-pack/test/security_solution_endpoint/page_objects/policy_page.ts index b5eccd0ef1147..da4fb936d6655 100644 --- a/x-pack/test/security_solution_endpoint/page_objects/policy_page.ts +++ b/x-pack/test/security_solution_endpoint/page_objects/policy_page.ts @@ -14,6 +14,16 @@ export function EndpointPolicyPageProvider({ getService, getPageObjects }: FtrPr const retryService = getService('retry'); return { + /** + * Navigates to the Endpoint Policy List page + */ + async navigateToPolicyList() { + await pageObjects.common.navigateToUrlWithBrowserHistory( + 'securitySolutionManagement', + `/policy` + ); + await pageObjects.header.waitUntilLoadingHasFinished(); + }, /** * Navigates to the Endpoint Policy Details page * @@ -27,6 +37,12 @@ export function EndpointPolicyPageProvider({ getService, getPageObjects }: FtrPr await pageObjects.header.waitUntilLoadingHasFinished(); }, + /** + * Ensures the current page is the policy list page + */ + async ensureIsOnListPage() { + await testSubjects.existOrFail('policyListPage'); + }, /** * Finds and returns the Policy Details Page Save button */ @@ -127,7 +143,7 @@ export function EndpointPolicyPageProvider({ getService, getPageObjects }: FtrPr /** * Used when looking a the Ingest create/edit package policy pages. Finds the endpoint - * custom configuaration component + * custom configuration component * @param onEditPage */ async findPackagePolicyEndpointCustomConfiguration(onEditPage: boolean = false) { diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/index.ts b/x-pack/test/security_solution_endpoint_api_int/apis/index.ts index 3c98b703aed55..7be4ce2243303 100644 --- a/x-pack/test/security_solution_endpoint_api_int/apis/index.ts +++ b/x-pack/test/security_solution_endpoint_api_int/apis/index.ts @@ -13,8 +13,6 @@ export default function endpointAPIIntegrationTests(providerContext: FtrProvider const { loadTestFile, getService } = providerContext; describe('Endpoint plugin', function () { - this.tags('ciGroup9'); - const ingestManager = getService('ingestManager'); const log = getService('log'); diff --git a/x-pack/test/spaces_api_integration/common/config.ts b/x-pack/test/spaces_api_integration/common/config.ts index 5d135cd05605c..15a63fec6d309 100644 --- a/x-pack/test/spaces_api_integration/common/config.ts +++ b/x-pack/test/spaces_api_integration/common/config.ts @@ -21,7 +21,9 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) const config = { kibana: { api: await readConfigFile(path.resolve(REPO_ROOT, 'test/api_integration/config.js')), - functional: await readConfigFile(require.resolve('../../../../test/functional/config.js')), + functional: await readConfigFile( + require.resolve('../../../../test/functional/config.base.js') + ), }, xpack: { api: await readConfigFile(require.resolve('../../api_integration/config.ts')), diff --git a/x-pack/test/spaces_api_integration/security_and_spaces/apis/index.ts b/x-pack/test/spaces_api_integration/security_and_spaces/apis/index.ts index a86fef0d758fc..75381f35dacd3 100644 --- a/x-pack/test/spaces_api_integration/security_and_spaces/apis/index.ts +++ b/x-pack/test/spaces_api_integration/security_and_spaces/apis/index.ts @@ -14,8 +14,6 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { const supertest = getService('supertest'); describe('spaces api with security', function () { - this.tags('ciGroup8'); - before(async () => { await createUsersAndRoles(es, supertest); }); diff --git a/x-pack/test/spaces_api_integration/spaces_only/apis/index.ts b/x-pack/test/spaces_api_integration/spaces_only/apis/index.ts index f64336b2b4908..6a8148efaa1d6 100644 --- a/x-pack/test/spaces_api_integration/spaces_only/apis/index.ts +++ b/x-pack/test/spaces_api_integration/spaces_only/apis/index.ts @@ -10,8 +10,6 @@ import { FtrProviderContext } from '../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function spacesOnlyTestSuite({ loadTestFile }: FtrProviderContext) { describe('spaces api without security', function () { - this.tags('ciGroup5'); - loadTestFile(require.resolve('./copy_to_space')); loadTestFile(require.resolve('./resolve_copy_to_space_conflicts')); loadTestFile(require.resolve('./create')); diff --git a/x-pack/test/stack_functional_integration/apps/telemetry/index.js b/x-pack/test/stack_functional_integration/apps/telemetry/index.js index 80cffcfaf70a7..3d1dffb3a442f 100644 --- a/x-pack/test/stack_functional_integration/apps/telemetry/index.js +++ b/x-pack/test/stack_functional_integration/apps/telemetry/index.js @@ -7,7 +7,6 @@ export default function ({ loadTestFile }) { describe('telemetry feature', function () { - this.tags('ciGroup1'); loadTestFile(require.resolve('./_telemetry')); }); } diff --git a/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js index 9b768ab61baec..1658bcbf6cd35 100644 --- a/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js +++ b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js @@ -25,7 +25,9 @@ const testsFolder = '../apps'; const prepend = (testFile) => require.resolve(`${testsFolder}/${testFile}`); export default async ({ readConfigFile }) => { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../../functional/config')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../../functional/config.base.js') + ); const externalConf = consumeState(resolve(__dirname, stateFilePath)); process.env.stack_functional_integration = true; logAll(log); diff --git a/x-pack/test/timeline/security_and_spaces/tests/basic/index.ts b/x-pack/test/timeline/security_and_spaces/tests/basic/index.ts index 4672a8e2e7f65..248c5ece3641d 100644 --- a/x-pack/test/timeline/security_and_spaces/tests/basic/index.ts +++ b/x-pack/test/timeline/security_and_spaces/tests/basic/index.ts @@ -14,9 +14,6 @@ import { // eslint-disable-next-line import/no-default-export export default ({ loadTestFile, getService }: FtrProviderContext): void => { describe('timeline security and spaces enabled: basic', function () { - // Fastest ciGroup for the moment. - this.tags('ciGroup5'); - before(async () => { await createSpacesAndUsers(getService); }); diff --git a/x-pack/test/timeline/security_and_spaces/tests/trial/index.ts b/x-pack/test/timeline/security_and_spaces/tests/trial/index.ts index 736fb6619c82d..2103097891a31 100644 --- a/x-pack/test/timeline/security_and_spaces/tests/trial/index.ts +++ b/x-pack/test/timeline/security_and_spaces/tests/trial/index.ts @@ -38,9 +38,6 @@ import { // eslint-disable-next-line import/no-default-export export default ({ loadTestFile, getService }: FtrProviderContext): void => { describe('timeline security and spaces enabled: trial', function () { - // Fastest ciGroup for the moment. - this.tags('ciGroup5'); - before(async () => { await createSpaces(getService); await createUsersAndRoles( diff --git a/x-pack/test/ui_capabilities/common/config.ts b/x-pack/test/ui_capabilities/common/config.ts index f676a5eeccee1..32e7538ecbbe7 100644 --- a/x-pack/test/ui_capabilities/common/config.ts +++ b/x-pack/test/ui_capabilities/common/config.ts @@ -20,7 +20,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) return async ({ readConfigFile }: FtrConfigProviderContext) => { const xPackFunctionalTestsConfig = await readConfigFile( - require.resolve('../../functional/config.js') + require.resolve('../../functional/config.base.js') ); return { diff --git a/x-pack/test/ui_capabilities/security_and_spaces/tests/index.ts b/x-pack/test/ui_capabilities/security_and_spaces/tests/index.ts index a257f8fcabb8e..77619157c615f 100644 --- a/x-pack/test/ui_capabilities/security_and_spaces/tests/index.ts +++ b/x-pack/test/ui_capabilities/security_and_spaces/tests/index.ts @@ -16,8 +16,6 @@ export default function uiCapabilitiesTests({ loadTestFile, getService }: FtrPro const featuresService: FeaturesService = getService('features'); describe('ui capabilities', function () { - this.tags('ciGroup9'); - before(async () => { const features = await featuresService.get(); for (const space of Spaces) { diff --git a/x-pack/test/ui_capabilities/spaces_only/tests/index.ts b/x-pack/test/ui_capabilities/spaces_only/tests/index.ts index 73a068cf9ec6b..02ed1533b56ad 100644 --- a/x-pack/test/ui_capabilities/spaces_only/tests/index.ts +++ b/x-pack/test/ui_capabilities/spaces_only/tests/index.ts @@ -14,8 +14,6 @@ export default function uiCapabilitesTests({ loadTestFile, getService }: FtrProv const featuresService: FeaturesService = getService('features'); describe('ui capabilities', function () { - this.tags('ciGroup9'); - before(async () => { // we're using a basic license, so if we want to disable all features, we have to ignore the valid licenses const features = await featuresService.get({ ignoreValidLicenses: true }); diff --git a/x-pack/test/upgrade/apps/discover/discover_smoke_tests.ts b/x-pack/test/upgrade/apps/discover/discover_smoke_tests.ts index 150458919d41d..1d2df7a703161 100644 --- a/x-pack/test/upgrade/apps/discover/discover_smoke_tests.ts +++ b/x-pack/test/upgrade/apps/discover/discover_smoke_tests.ts @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; -export default function ({ getPageObjects, getService }: FtrProviderContext) { +export default function ({ getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'header', 'home', 'discover', 'timePicker']); describe('upgrade discover smoke tests', function describeIndexTests() { @@ -18,9 +18,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { ]; const discoverTests = [ - { name: 'kibana_sample_data_flights', timefield: true, hits: '' }, - { name: 'kibana_sample_data_logs', timefield: true, hits: '' }, - { name: 'kibana_sample_data_ecommerce', timefield: true, hits: '' }, + { name: 'flights', timefield: true, hits: '' }, + { name: 'logs', timefield: true, hits: '' }, + { name: 'ecommerce', timefield: true, hits: '' }, ]; spaces.forEach(({ space, basePath }) => { @@ -31,7 +31,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { basePath, }); await PageObjects.header.waitUntilLoadingHasFinished(); - await PageObjects.discover.selectIndexPattern(name); + await PageObjects.discover.selectIndexPattern(`kibana_sample_data_${name}`); await PageObjects.discover.waitUntilSearchingHasFinished(); if (timefield) { await PageObjects.timePicker.setCommonlyUsedTime('Last_24 hours'); @@ -52,6 +52,35 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); }); + + discoverTests.forEach(({ name, timefield, hits }) => { + describe('space: ' + space + ', name: ' + name, () => { + before(async () => { + await PageObjects.common.navigateToActualUrl('home', '/tutorial_directory/sampleData', { + basePath, + }); + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.home.launchSampleDiscover(name); + await PageObjects.header.waitUntilLoadingHasFinished(); + if (timefield) { + await PageObjects.timePicker.setCommonlyUsedTime('Last_24 hours'); + await PageObjects.discover.waitUntilSearchingHasFinished(); + } + }); + it('shows hit count greater than zero', async () => { + const hitCount = await PageObjects.discover.getHitCount(); + if (hits === '') { + expect(hitCount).to.be.greaterThan(0); + } else { + expect(hitCount).to.be.equal(hits); + } + }); + it('shows table rows not empty', async () => { + const tableRows = await PageObjects.discover.getDocTableRows(); + expect(tableRows.length).to.be.greaterThan(0); + }); + }); + }); }); }); } diff --git a/x-pack/test/upgrade/config.ts b/x-pack/test/upgrade/config.ts index 78d61d5239556..181abe8ca408f 100644 --- a/x-pack/test/upgrade/config.ts +++ b/x-pack/test/upgrade/config.ts @@ -12,7 +12,7 @@ import { MapsHelper } from './services/maps_upgrade_services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const apiConfig = await readConfigFile(require.resolve('../api_integration/config')); - const functionalConfig = await readConfigFile(require.resolve('../functional/config')); + const functionalConfig = await readConfigFile(require.resolve('../functional/config.base.js')); return { ...functionalConfig.getAll(), diff --git a/x-pack/test/upgrade_assistant_integration/config.js b/x-pack/test/upgrade_assistant_integration/config.js index 8152b5790fc40..e1248c717b216 100644 --- a/x-pack/test/upgrade_assistant_integration/config.js +++ b/x-pack/test/upgrade_assistant_integration/config.js @@ -11,7 +11,7 @@ export default async function ({ readConfigFile }) { require.resolve('../../../test/api_integration/config.js') ); const xPackFunctionalTestsConfig = await readConfigFile( - require.resolve('../functional/config.js') + require.resolve('../functional/config.base.js') ); const kibanaCommonConfig = await readConfigFile( require.resolve('../../../test/common/config.js') diff --git a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/index.js b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/index.js index 1a7090a3cbdfb..eb09d24b79b6a 100644 --- a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/index.js +++ b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/index.js @@ -7,8 +7,6 @@ export default function ({ loadTestFile }) { describe('upgrade assistant', function () { - this.tags('ciGroup7'); - loadTestFile(require.resolve('./reindexing')); }); } diff --git a/x-pack/test/usage_collection/config.ts b/x-pack/test/usage_collection/config.ts index beb934219422a..248f00ff81233 100644 --- a/x-pack/test/usage_collection/config.ts +++ b/x-pack/test/usage_collection/config.ts @@ -15,7 +15,9 @@ import { pageObjects } from './page_objects'; // that returns an object with the projects config values export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); // Find all folders in ./plugins since we treat all them as plugin folder const allFiles = fs.readdirSync(resolve(__dirname, 'plugins')); 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 4b41aada9ad29..754ae98997c16 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 @@ -11,7 +11,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Application Usage', function () { - this.tags('ciGroup1'); const { common } = getPageObjects(['common']); const browser = getService('browser'); diff --git a/x-pack/test/usage_collection/test_suites/stack_management_usage/index.ts b/x-pack/test/usage_collection/test_suites/stack_management_usage/index.ts index dac552220f7c1..a595c2662d451 100644 --- a/x-pack/test/usage_collection/test_suites/stack_management_usage/index.ts +++ b/x-pack/test/usage_collection/test_suites/stack_management_usage/index.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { // FLAKY: https://github.com/elastic/kibana/issues/119038 describe.skip('Stack Management', function () { - this.tags('ciGroup1'); const { common } = getPageObjects(['common']); const browser = getService('browser'); diff --git a/x-pack/test/visual_regression/config.ts b/x-pack/test/visual_regression/config.ts index c211918ef8e52..c7f0d8203833e 100644 --- a/x-pack/test/visual_regression/config.ts +++ b/x-pack/test/visual_regression/config.ts @@ -10,7 +10,7 @@ import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile(require.resolve('../functional/config')); + const functionalConfig = await readConfigFile(require.resolve('../functional/config.base.js')); return { ...functionalConfig.getAll(), diff --git a/x-pack/test/visual_regression/tests/canvas/index.js b/x-pack/test/visual_regression/tests/canvas/index.js index 099c96e6eaf01..20a262fef10fe 100644 --- a/x-pack/test/visual_regression/tests/canvas/index.js +++ b/x-pack/test/visual_regression/tests/canvas/index.js @@ -25,7 +25,6 @@ export default function ({ loadTestFile, getService }) { await esArchiver.unload('x-pack/test/functional/es_archives/canvas/default'); }); - this.tags('ciGroup10'); loadTestFile(require.resolve('./fullscreen')); }); } diff --git a/x-pack/test/visual_regression/tests/infra/index.js b/x-pack/test/visual_regression/tests/infra/index.js index b624c6ec848f2..13669c50953f9 100644 --- a/x-pack/test/visual_regression/tests/infra/index.js +++ b/x-pack/test/visual_regression/tests/infra/index.js @@ -13,7 +13,6 @@ export default function ({ loadTestFile, getService }) { await browser.setWindowSize(1600, 1000); }); - this.tags('ciGroup10'); loadTestFile(require.resolve('./waffle_map')); loadTestFile(require.resolve('./saved_views')); }); diff --git a/x-pack/test/visual_regression/tests/maps/index.js b/x-pack/test/visual_regression/tests/maps/index.js index 3459896baacd6..9d53d70ad2abc 100644 --- a/x-pack/test/visual_regression/tests/maps/index.js +++ b/x-pack/test/visual_regression/tests/maps/index.js @@ -56,7 +56,6 @@ export default function ({ loadTestFile, getService }) { ); }); - this.tags('ciGroup10'); loadTestFile(require.resolve('./vector_styling')); }); } diff --git a/yarn.lock b/yarn.lock index afc8afb39df49..5b1d85c282b2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1496,6 +1496,16 @@ dependencies: "@elastic/ecs-helpers" "^1.1.0" +"@elastic/elasticsearch@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-7.17.0.tgz#589fb219234cf1b0da23744e82b1d25e2fe9a797" + integrity sha512-5QLPCjd0uLmLj1lSuKSThjNpq39f6NmlTy9ROLFwG5gjyTgpwSqufDeYG/Fm43Xs05uF7WcscoO7eguI3HuuYA== + dependencies: + debug "^4.3.1" + hpagent "^0.1.1" + ms "^2.1.3" + secure-json-parse "^2.4.0" + "@elastic/elasticsearch@npm:@elastic/elasticsearch-canary@8.2.0-canary.2": version "8.2.0-canary.2" resolved "https://registry.yarnpkg.com/@elastic/elasticsearch-canary/-/elasticsearch-canary-8.2.0-canary.2.tgz#2513926cdbfe7c070e1fa6926f7829171b27cdba" @@ -1618,6 +1628,19 @@ resolved "https://registry.yarnpkg.com/@elastic/numeral/-/numeral-2.5.1.tgz#96acf39c3d599950646ef8ccfd24a3f057cf4932" integrity sha512-Tby6TKjixRFY+atVNeYUdGr9m0iaOq8230KTwn8BbUhkh7LwozfgKq0U98HRX7n63ZL62szl+cDKTYzh5WPCFQ== +"@elastic/performance-testing-dataset-extractor@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@elastic/performance-testing-dataset-extractor/-/performance-testing-dataset-extractor-0.0.3.tgz#c9823154c1d23c0dfec86f7183a5e2327999d0ca" + integrity sha512-ND33m4P1yOLPqnKnwWTcwDNB5dCw5NK9503e2WaZzljoy75RN9Lg5+YsQM7RFZKDs/+yNp7XRCJszeiUOcMFvg== + dependencies: + "@elastic/elasticsearch" "7.17.0" + axios "^0.26.1" + axios-curlirize "1.3.7" + lodash "^4.17.21" + qs "^6.10.3" + tslib "^2.3.1" + yargs "^17.4.0" + "@elastic/react-search-ui-views@1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@elastic/react-search-ui-views/-/react-search-ui-views-1.6.0.tgz#7211d47c29ef0636c853721491b9905ac7ae58da" @@ -2932,6 +2955,18 @@ version "0.0.0" uid "" +"@kbn/analytics-shippers-elastic-v3-common@link:bazel-bin/packages/analytics/shippers/elastic_v3/common": + version "0.0.0" + uid "" + +"@kbn/analytics-shippers-elastic-v3-server@link:bazel-bin/packages/analytics/shippers/elastic_v3/server": + version "0.0.0" + uid "" + +"@kbn/analytics-shippers-elastic-v3-browser@link:bazel-bin/packages/analytics/shippers/elastic_v3/browser": + version "0.0.0" + uid "" + "@kbn/analytics-shippers-fullstory@link:bazel-bin/packages/analytics/shippers/fullstory": version "0.0.0" uid "" @@ -6032,6 +6067,18 @@ version "0.0.0" uid "" +"@types/kbn__analytics-shippers-elastic-v3-common@link:bazel-bin/packages/analytics/shippers/elastic_v3/common/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__analytics-shippers-elastic-v3-server@link:bazel-bin/packages/analytics/shippers/elastic_v3/server/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__analytics-shippers-elastic-v3-browser@link:bazel-bin/packages/analytics/shippers/elastic_v3/browser/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__analytics-shippers-fullstory@link:bazel-bin/packages/analytics/shippers/fullstory/npm_module_types": version "0.0.0" uid "" @@ -8667,6 +8714,11 @@ axe-core@^4.2.0: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== +axios-curlirize@1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/axios-curlirize/-/axios-curlirize-1.3.7.tgz#0153c51a5af0e92370169daea33f234d588baad1" + integrity sha512-csSsuMyZj1dv1fL0zRPnDAHWrmlISMvK+wx9WJI/igRVDT4VMgbf2AVenaHghFLfI1nQijXUevYEguYV6u5hjA== + axios@^0.21.1: version "0.21.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" @@ -8688,6 +8740,13 @@ axios@^0.25.0: dependencies: follow-redirects "^1.14.7" +axios@^0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" + integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== + dependencies: + follow-redirects "^1.14.8" + axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -9884,9 +9943,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001097, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001286: - version "1.0.30001309" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz#e0ee78b9bec0704f67304b00ff3c5c0c768a9f62" - integrity sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA== + version "1.0.30001335" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz" + integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== canvg@^3.0.9: version "3.0.9" @@ -14734,7 +14793,7 @@ follow-redirects@1.12.1: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6" integrity sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg== -follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.4, follow-redirects@^1.14.7: +follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.4, follow-redirects@^1.14.7, follow-redirects@^1.14.8: version "1.14.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== @@ -16133,11 +16192,6 @@ highlight.js@^10.1.1, highlight.js@^10.4.1, highlight.js@~10.4.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0" integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg== -history-extra@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/history-extra/-/history-extra-5.0.1.tgz#95a2e59dda526c4241d0ae1b124a77a5e4675ce8" - integrity sha512-6XV1L1lHgporVWgppa/Kq+Fnz4lhBew7iMxYCTfzVmoEywsAKJnTjdw1zOd+EGLHGYp0/V8jSVMEgqx4QbHLTw== - history@^4.9.0: version "4.9.0" resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" @@ -16200,7 +16254,7 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -hpagent@^0.1.2: +hpagent@^0.1.1, hpagent@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.2.tgz#cab39c66d4df2d4377dbd212295d878deb9bdaa9" integrity sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ== @@ -23462,6 +23516,13 @@ qs@^6.10.0: dependencies: side-channel "^1.0.4" +qs@^6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" + qs@^6.7.0: version "6.9.4" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" @@ -30637,6 +30698,19 @@ yargs@^17.0.1, yargs@^17.2.1, yargs@^17.3.1: y18n "^5.0.5" yargs-parser "^21.0.0" +yargs@^17.4.0: + version "17.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" + integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + yargs@^3.15.0: version "3.32.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"